From a3800d6009cf1d258ee6b37630de4cc14f789089 Mon Sep 17 00:00:00 2001 From: Myria-de Date: Sat, 30 Mar 2019 01:42:40 +0100 Subject: [PATCH] Updates --- Ausgabe/common/dbk.css | 263 + Ausgabe/common/dbk_html_2.css | 277 + Ausgabe/common/dbk_html_3.css | 337 + Ausgabe/common/epub.css.xml | 12 + Ausgabe/common/fancybox/blank.gif | Bin 0 -> 43 bytes Ausgabe/common/fancybox/fancybox_loading.gif | Bin 0 -> 6567 bytes .../common/fancybox/fancybox_loading@2x.gif | Bin 0 -> 13984 bytes Ausgabe/common/fancybox/fancybox_overlay.png | Bin 0 -> 1003 bytes Ausgabe/common/fancybox/fancybox_sprite.png | Bin 0 -> 1362 bytes .../common/fancybox/fancybox_sprite@2x.png | Bin 0 -> 6553 bytes .../fancybox/helpers/fancybox_buttons.png | Bin 0 -> 1080 bytes .../helpers/jquery.fancybox-buttons.css | 97 + .../helpers/jquery.fancybox-buttons.js | 122 + .../fancybox/helpers/jquery.fancybox-media.js | 199 + .../helpers/jquery.fancybox-thumbs.css | 55 + .../helpers/jquery.fancybox-thumbs.js | 162 + Ausgabe/common/fancybox/jquery.fancybox.css | 895 + Ausgabe/common/fancybox/jquery.fancybox.js | 5640 +++ .../common/fancybox/jquery.fancybox.min.css | 1 + .../common/fancybox/jquery.fancybox.min.js | 13 + .../common/fancybox/jquery.fancybox.pack.js | 46 + Ausgabe/common/fancybox/load_fancybox.js | 8 + Ausgabe/common/images/Mein_Logo.png | Bin 0 -> 20561 bytes Ausgabe/common/images/blank.png | Bin 0 -> 374 bytes Ausgabe/common/images/callouts/1.png | Bin 0 -> 329 bytes Ausgabe/common/images/callouts/10.png | Bin 0 -> 361 bytes Ausgabe/common/images/callouts/11.png | Bin 0 -> 565 bytes Ausgabe/common/images/callouts/12.png | Bin 0 -> 617 bytes Ausgabe/common/images/callouts/13.png | Bin 0 -> 623 bytes Ausgabe/common/images/callouts/14.png | Bin 0 -> 411 bytes Ausgabe/common/images/callouts/15.png | Bin 0 -> 640 bytes Ausgabe/common/images/callouts/2.png | Bin 0 -> 353 bytes Ausgabe/common/images/callouts/3.png | Bin 0 -> 350 bytes Ausgabe/common/images/callouts/4.png | Bin 0 -> 345 bytes Ausgabe/common/images/callouts/5.png | Bin 0 -> 348 bytes Ausgabe/common/images/callouts/6.png | Bin 0 -> 355 bytes Ausgabe/common/images/callouts/7.png | Bin 0 -> 344 bytes Ausgabe/common/images/callouts/8.png | Bin 0 -> 357 bytes Ausgabe/common/images/callouts/9.png | Bin 0 -> 357 bytes Ausgabe/common/images/callouts/ChangeLog | 15 + Ausgabe/common/images/caution.png | Bin 0 -> 1250 bytes Ausgabe/common/images/changelog | 17 + Ausgabe/common/images/draft.png | Bin 0 -> 17454 bytes .../common/images/firebird_logo_400x400.png | Bin 0 -> 21188 bytes Ausgabe/common/images/home.png | Bin 0 -> 1156 bytes Ausgabe/common/images/important.png | Bin 0 -> 722 bytes Ausgabe/common/images/next.png | Bin 0 -> 1150 bytes Ausgabe/common/images/note.png | Bin 0 -> 490 bytes Ausgabe/common/images/note_22.png | Bin 0 -> 490 bytes Ausgabe/common/images/prev.png | Bin 0 -> 1132 bytes Ausgabe/common/images/tip.png | Bin 0 -> 449 bytes Ausgabe/common/images/toc-blank.png | Bin 0 -> 318 bytes Ausgabe/common/images/toc-minus.png | Bin 0 -> 259 bytes Ausgabe/common/images/toc-plus.png | Bin 0 -> 264 bytes Ausgabe/common/images/up.png | Bin 0 -> 1111 bytes Ausgabe/common/images/warning.png | Bin 0 -> 1241 bytes Ausgabe/common/lib/jquery-1.10.1.min.js | 6 + Ausgabe/common/lib/jquery-1.9.0.min.js | 4 + Ausgabe/common/lib/jquery-3.3.1.min.js | 2 + .../lib/jquery.mousewheel-3.0.6.pack.js | 13 + Ausgabe/common/lib/jquery.mousewheel.min.js | 8 + Beispiele/LoremIpsum.odt | Bin 0 -> 891921 bytes Beispiele/Serapion.odt | Bin 0 -> 160571 bytes Beispiele/beispiel_de.odt | Bin 0 -> 76845 bytes Beispiele/beispiel_einfach.odt | Bin 0 -> 21052 bytes DOCBOOK/AUTHORS | 4 + DOCBOOK/BUGS | 21 + DOCBOOK/COPYING | 48 + DOCBOOK/Custom_html.xsl | 41 + DOCBOOK/Custom_html_2.xsl | 1776 + DOCBOOK/Custom_html_Syntax_highlight.xsl | 20 + DOCBOOK/Custom_html_help.xsl | 18 + DOCBOOK/Custom_xhtml5.xsl | 35 + DOCBOOK/INSTALL | 88 + DOCBOOK/Makefile | 89 + DOCBOOK/NEWS | 176 + DOCBOOK/NEWS.html | 30 + DOCBOOK/NEWS.xml | 174 + DOCBOOK/README | 175 + DOCBOOK/README.ns | 166 + DOCBOOK/RELEASE-NOTES-TMP.xml | 12170 ++++++ DOCBOOK/RELEASE-NOTES.html | 9605 +++++ DOCBOOK/RELEASE-NOTES.pdf | 33022 ++++++++++++++ DOCBOOK/RELEASE-NOTES.txt | 10546 +++++ DOCBOOK/RELEASE-NOTES.xml | 12059 ++++++ DOCBOOK/REVISION | 1 + DOCBOOK/TODO | 23 + DOCBOOK/VERSION | 115 + DOCBOOK/VERSION.xsl | 115 + DOCBOOK/assembly/README | 195 + DOCBOOK/assembly/assemble.xsl | 678 + DOCBOOK/assembly/schema/assembly51b7.rnc | 11035 +++++ DOCBOOK/assembly/schema/docbook51b7.rnc | 12976 ++++++ DOCBOOK/assembly/topic-maker-chunk.xsl | 222 + DOCBOOK/assembly/topic-maker.xsl | 79 + DOCBOOK/catalog.xml | 8 + DOCBOOK/common/addns.xsl | 124 + DOCBOOK/common/af.xml | 1271 + DOCBOOK/common/am.xml | 1271 + DOCBOOK/common/ar.xml | 1271 + DOCBOOK/common/as.xml | 702 + DOCBOOK/common/ast.xml | 702 + DOCBOOK/common/autoidx-kimber.xsl | 45 + DOCBOOK/common/autoidx-kosek.xsl | 155 + DOCBOOK/common/az.xml | 714 + DOCBOOK/common/bg.xml | 766 + DOCBOOK/common/bn.xml | 1271 + DOCBOOK/common/bn_in.xml | 702 + DOCBOOK/common/bs.xml | 704 + DOCBOOK/common/ca.xml | 702 + DOCBOOK/common/charmap.xml | 185 + DOCBOOK/common/charmap.xsl | 222 + DOCBOOK/common/common.xml | 641 + DOCBOOK/common/common.xsl | 2111 + DOCBOOK/common/cs.xml | 742 + DOCBOOK/common/cy.xml | 1287 + DOCBOOK/common/da.xml | 706 + DOCBOOK/common/de.xml | 708 + DOCBOOK/common/el.xml | 771 + DOCBOOK/common/en.xml | 1271 + DOCBOOK/common/entities.ent | 67 + DOCBOOK/common/eo.xml | 1271 + DOCBOOK/common/es.xml | 718 + DOCBOOK/common/et.xml | 1271 + DOCBOOK/common/eu.xml | 1271 + DOCBOOK/common/fa.xml | 702 + DOCBOOK/common/fi.xml | 712 + DOCBOOK/common/fr.xml | 732 + DOCBOOK/common/ga.xml | 1271 + DOCBOOK/common/gentext.xsl | 847 + DOCBOOK/common/gl.xml | 1271 + DOCBOOK/common/gu.xml | 702 + DOCBOOK/common/he.xml | 1271 + DOCBOOK/common/hi.xml | 702 + DOCBOOK/common/hr.xml | 704 + DOCBOOK/common/hu.xml | 720 + DOCBOOK/common/id.xml | 1271 + DOCBOOK/common/insertfile.xsl | 113 + DOCBOOK/common/is.xml | 714 + DOCBOOK/common/it.xml | 1271 + DOCBOOK/common/ja.xml | 702 + DOCBOOK/common/ka.xml | 742 + DOCBOOK/common/kn.xml | 1271 + DOCBOOK/common/ko.xml | 1271 + DOCBOOK/common/ky.xml | 774 + DOCBOOK/common/l10n.dtd | 64 + DOCBOOK/common/l10n.xml | 77 + DOCBOOK/common/l10n.xsl | 598 + DOCBOOK/common/la.xml | 1271 + DOCBOOK/common/labels.xsl | 893 + DOCBOOK/common/lt.xml | 720 + DOCBOOK/common/lv.xml | 1271 + DOCBOOK/common/ml.xml | 702 + DOCBOOK/common/mn.xml | 772 + DOCBOOK/common/mr.xml | 702 + DOCBOOK/common/nb.xml | 1271 + DOCBOOK/common/nds.xml | 708 + DOCBOOK/common/nl.xml | 702 + DOCBOOK/common/nn.xml | 1271 + DOCBOOK/common/olink.xsl | 1240 + DOCBOOK/common/or.xml | 1271 + DOCBOOK/common/pa.xml | 702 + DOCBOOK/common/pi.xml | 168 + DOCBOOK/common/pi.xsl | 347 + DOCBOOK/common/pl.xml | 720 + DOCBOOK/common/pt.xml | 1271 + DOCBOOK/common/pt_br.xml | 1271 + DOCBOOK/common/refentry.xml | 781 + DOCBOOK/common/refentry.xsl | 1353 + DOCBOOK/common/ro.xml | 1271 + DOCBOOK/common/ru.xml | 768 + DOCBOOK/common/sk.xml | 1271 + DOCBOOK/common/sl.xml | 1271 + DOCBOOK/common/sq.xml | 1271 + DOCBOOK/common/sr.xml | 762 + DOCBOOK/common/sr_Latn.xml | 721 + DOCBOOK/common/subtitles.xsl | 181 + DOCBOOK/common/sv.xml | 706 + DOCBOOK/common/ta.xml | 702 + DOCBOOK/common/table.xsl | 515 + DOCBOOK/common/targetdatabase.dtd | 49 + DOCBOOK/common/targets.xsl | 338 + DOCBOOK/common/te.xml | 702 + DOCBOOK/common/th.xml | 1271 + DOCBOOK/common/titles.xsl | 822 + DOCBOOK/common/tl.xml | 1271 + DOCBOOK/common/tr.xml | 708 + DOCBOOK/common/uk.xml | 768 + DOCBOOK/common/utility.xml | 259 + DOCBOOK/common/utility.xsl | 291 + DOCBOOK/common/vi.xml | 1271 + DOCBOOK/common/xh.xml | 1271 + DOCBOOK/common/zh.xml | 702 + DOCBOOK/common/zh_cn.xml | 702 + DOCBOOK/common/zh_tw.xml | 702 + DOCBOOK/doc/AUTHORS | 3 + DOCBOOK/doc/COPYING | 47 + DOCBOOK/doc/README | 34 + DOCBOOK/doc/common/base.html | 51 + DOCBOOK/doc/common/charmap.html | 38 + DOCBOOK/doc/common/index.html | 20 + DOCBOOK/doc/common/refentry.html | 44 + DOCBOOK/doc/common/reference.css | 79 + .../common/template.apply-character-map.html | 65 + .../doc/common/template.check.id.unique.html | 20 + .../common/template.check.idref.targets.html | 21 + .../doc/common/template.copyright.years.html | 69 + .../template.evaluate.info.profile.html | 49 + .../doc/common/template.find.path.params.html | 25 + .../doc/common/template.get.doc.title.html | 20 + .../common/template.get.refentry.date.html | 42 + .../common/template.get.refentry.manual.html | 97 + .../template.get.refentry.metadata.html | 107 + .../template.get.refentry.metadata.prefs.html | 37 + .../common/template.get.refentry.section.html | 40 + .../common/template.get.refentry.source.html | 105 + .../template.get.refentry.source.name.html | 46 + .../common/template.get.refentry.title.html | 33 + .../common/template.get.refentry.version.html | 46 + .../template.graphic.format.content-type.html | 19 + .../template.is.acceptable.mediaobject.html | 30 + DOCBOOK/doc/common/template.is.component.html | 31 + DOCBOOK/doc/common/template.is.section.html | 31 + DOCBOOK/doc/common/template.log.message.html | 144 + DOCBOOK/doc/common/template.pad-string.html | 37 + .../common/template.qanda.section.level.html | 20 + .../common/template.read-character-map.html | 61 + .../doc/common/template.section.level.html | 37 + .../template.select.choice.separator.html | 46 + .../common/template.select.mediaobject.html | 41 + .../template.select.mediaobject.index.html | 57 + .../template.set.refentry.metadata.html | 48 + DOCBOOK/doc/common/template.string.lower.html | 32 + DOCBOOK/doc/common/template.string.upper.html | 32 + DOCBOOK/doc/common/utility.html | 40 + DOCBOOK/doc/copyright.html | 23 + DOCBOOK/doc/developer.html | 17 + DOCBOOK/doc/fo-pageregions-image.html | 3 + DOCBOOK/doc/fo/abstract.properties.html | 25 + DOCBOOK/doc/fo/abstract.title.properties.html | 32 + DOCBOOK/doc/fo/activate.external.olinks.html | 62 + DOCBOOK/doc/fo/admon.graphics.extension.html | 22 + DOCBOOK/doc/fo/admon.graphics.html | 22 + DOCBOOK/doc/fo/admon.graphics.path.html | 20 + DOCBOOK/doc/fo/admon.textlabel.html | 25 + DOCBOOK/doc/fo/admonition.properties.html | 18 + .../doc/fo/admonition.title.properties.html | 25 + DOCBOOK/doc/fo/admons.html | 19 + DOCBOOK/doc/fo/alignment.html | 27 + DOCBOOK/doc/fo/appendix.autolabel.html | 39 + DOCBOOK/doc/fo/arbortext.extensions.html | 23 + .../fo/article.appendix.title.properties.html | 23 + .../doc/fo/author.othername.in.middle.html | 24 + DOCBOOK/doc/fo/autotoc.label.separator.html | 20 + DOCBOOK/doc/fo/axf.extensions.html | 26 + DOCBOOK/doc/fo/base.dir.html | 31 + DOCBOOK/doc/fo/biblio.html | 13 + .../doc/fo/biblioentry.item.separator.html | 19 + DOCBOOK/doc/fo/biblioentry.properties.html | 21 + DOCBOOK/doc/fo/bibliography.collection.html | 112 + DOCBOOK/doc/fo/bibliography.numbered.html | 20 + DOCBOOK/doc/fo/bibliography.style.html | 25 + DOCBOOK/doc/fo/blockquote.properties.html | 27 + DOCBOOK/doc/fo/body.end.indent.html | 30 + DOCBOOK/doc/fo/body.font.family.html | 26 + DOCBOOK/doc/fo/body.font.master.html | 23 + DOCBOOK/doc/fo/body.font.size.html | 24 + DOCBOOK/doc/fo/body.margin.bottom.html | 22 + DOCBOOK/doc/fo/body.margin.inner.html | 45 + DOCBOOK/doc/fo/body.margin.outer.html | 46 + DOCBOOK/doc/fo/body.margin.top.html | 21 + DOCBOOK/doc/fo/body.start.indent.html | 57 + DOCBOOK/doc/fo/bookmarks.collapse.html | 24 + DOCBOOK/doc/fo/bridgehead.in.toc.html | 21 + DOCBOOK/doc/fo/callout.defaultcolumn.html | 23 + .../doc/fo/callout.graphics.extension.html | 21 + DOCBOOK/doc/fo/callout.graphics.html | 23 + .../doc/fo/callout.graphics.number.limit.html | 27 + DOCBOOK/doc/fo/callout.graphics.path.html | 24 + DOCBOOK/doc/fo/callout.icon.size.html | 21 + DOCBOOK/doc/fo/callout.properties.html | 16 + DOCBOOK/doc/fo/callout.unicode.font.html | 22 + DOCBOOK/doc/fo/callout.unicode.html | 19 + .../doc/fo/callout.unicode.number.limit.html | 28 + .../fo/callout.unicode.start.character.html | 26 + DOCBOOK/doc/fo/calloutlist.properties.html | 25 + DOCBOOK/doc/fo/callouts.extension.html | 23 + DOCBOOK/doc/fo/callouts.html | 29 + DOCBOOK/doc/fo/chapter.autolabel.html | 37 + DOCBOOK/doc/fo/chunk.quietly.html | 23 + DOCBOOK/doc/fo/collect.xref.targets.html | 23 + DOCBOOK/doc/fo/column.count.back.html | 20 + DOCBOOK/doc/fo/column.count.body.html | 20 + DOCBOOK/doc/fo/column.count.front.html | 20 + DOCBOOK/doc/fo/column.count.index.html | 20 + DOCBOOK/doc/fo/column.count.lot.html | 21 + DOCBOOK/doc/fo/column.count.titlepage.html | 20 + DOCBOOK/doc/fo/column.gap.back.html | 21 + DOCBOOK/doc/fo/column.gap.body.html | 21 + DOCBOOK/doc/fo/column.gap.front.html | 21 + DOCBOOK/doc/fo/column.gap.index.html | 21 + DOCBOOK/doc/fo/column.gap.lot.html | 21 + DOCBOOK/doc/fo/column.gap.titlepage.html | 22 + DOCBOOK/doc/fo/compact.list.item.spacing.html | 21 + .../component.label.includes.part.label.html | 32 + .../doc/fo/component.title.properties.html | 33 + .../fo/component.titlepage.properties.html | 26 + DOCBOOK/doc/fo/crop.mark.bleed.html | 21 + DOCBOOK/doc/fo/crop.mark.offset.html | 21 + DOCBOOK/doc/fo/crop.mark.width.html | 21 + DOCBOOK/doc/fo/crop.marks.html | 21 + DOCBOOK/doc/fo/current.docid.html | 20 + DOCBOOK/doc/fo/dbk_ext.html | 20 + DOCBOOK/doc/fo/default.float.class.html | 27 + DOCBOOK/doc/fo/default.image.width.html | 22 + DOCBOOK/doc/fo/default.table.frame.html | 21 + DOCBOOK/doc/fo/default.table.rules.html | 48 + DOCBOOK/doc/fo/default.table.width.html | 19 + DOCBOOK/doc/fo/default.units.html | 23 + DOCBOOK/doc/fo/dingbat.font.family.html | 22 + DOCBOOK/doc/fo/double.sided.html | 34 + DOCBOOK/doc/fo/draft.mode.html | 26 + DOCBOOK/doc/fo/draft.watermark.image.html | 20 + DOCBOOK/doc/fo/ebnf.assignment.html | 30 + DOCBOOK/doc/fo/ebnf.html | 7 + DOCBOOK/doc/fo/ebnf.statement.terminator.html | 25 + DOCBOOK/doc/fo/email.delimiters.enabled.html | 27 + DOCBOOK/doc/fo/email.mailto.enabled.html | 22 + .../doc/fo/equation.number.properties.html | 21 + DOCBOOK/doc/fo/equation.properties.html | 20 + DOCBOOK/doc/fo/example.properties.html | 22 + DOCBOOK/doc/fo/exsl.node.set.available.html | 33 + DOCBOOK/doc/fo/figure.properties.html | 20 + DOCBOOK/doc/fo/firstterm.only.link.html | 22 + DOCBOOK/doc/fo/fo-pageregions-image.html | 3 + DOCBOOK/doc/fo/fo_ext.html | 20 + DOCBOOK/doc/fo/fonts.html | 16 + DOCBOOK/doc/fo/footer.column.widths.html | 73 + DOCBOOK/doc/fo/footer.content.properties.html | 27 + DOCBOOK/doc/fo/footer.rule.html | 20 + DOCBOOK/doc/fo/footer.table.height.html | 25 + DOCBOOK/doc/fo/footer.table.properties.html | 23 + DOCBOOK/doc/fo/footers.on.blank.pages.html | 20 + DOCBOOK/doc/fo/footnote.font.size.html | 21 + DOCBOOK/doc/fo/footnote.mark.properties.html | 34 + DOCBOOK/doc/fo/footnote.number.format.html | 21 + DOCBOOK/doc/fo/footnote.number.symbols.html | 32 + DOCBOOK/doc/fo/footnote.properties.html | 37 + .../fo/footnote.sep.leader.properties.html | 32 + DOCBOOK/doc/fo/fop.extensions.html | 29 + DOCBOOK/doc/fo/fop1.extensions.html | 27 + DOCBOOK/doc/fo/force.blank.pages.html | 39 + DOCBOOK/doc/fo/formal.object.properties.html | 29 + DOCBOOK/doc/fo/formal.procedures.html | 21 + DOCBOOK/doc/fo/formal.title.placement.html | 34 + DOCBOOK/doc/fo/formal.title.properties.html | 27 + DOCBOOK/doc/fo/funcsynopsis.decoration.html | 23 + DOCBOOK/doc/fo/funcsynopsis.style.html | 22 + DOCBOOK/doc/fo/function.parens.html | 22 + DOCBOOK/doc/fo/general.html | 183 + DOCBOOK/doc/fo/generate.consistent.ids.html | 46 + DOCBOOK/doc/fo/generate.index.html | 18 + .../doc/fo/generate.section.toc.level.html | 28 + DOCBOOK/doc/fo/generate.toc.html | 83 + DOCBOOK/doc/fo/glossary.as.blocks.html | 31 + DOCBOOK/doc/fo/glossary.collection.html | 257 + DOCBOOK/doc/fo/glossary.html | 31 + DOCBOOK/doc/fo/glossary.sort.html | 25 + DOCBOOK/doc/fo/glossdef.block.properties.html | 25 + DOCBOOK/doc/fo/glossdef.list.properties.html | 23 + .../fo/glossentry.list.item.properties.html | 25 + DOCBOOK/doc/fo/glossentry.show.acronym.html | 27 + DOCBOOK/doc/fo/glosslist.as.blocks.html | 20 + DOCBOOK/doc/fo/glossterm.auto.link.html | 26 + .../doc/fo/glossterm.block.properties.html | 28 + DOCBOOK/doc/fo/glossterm.list.properties.html | 23 + DOCBOOK/doc/fo/glossterm.separation.html | 24 + DOCBOOK/doc/fo/glossterm.width.html | 21 + DOCBOOK/doc/fo/graphic.default.extension.html | 22 + .../fo/graphical.admonition.properties.html | 35 + DOCBOOK/doc/fo/graphics.html | 21 + DOCBOOK/doc/fo/header.column.widths.html | 73 + DOCBOOK/doc/fo/header.content.properties.html | 27 + DOCBOOK/doc/fo/header.rule.html | 20 + DOCBOOK/doc/fo/header.table.height.html | 25 + DOCBOOK/doc/fo/header.table.properties.html | 23 + DOCBOOK/doc/fo/headers.on.blank.pages.html | 20 + .../doc/fo/highlight.default.language.html | 20 + DOCBOOK/doc/fo/highlight.source.html | 64 + DOCBOOK/doc/fo/highlight.xslthl.config.html | 26 + DOCBOOK/doc/fo/hyphenate.html | 19 + .../doc/fo/hyphenate.verbatim.characters.html | 23 + DOCBOOK/doc/fo/hyphenate.verbatim.html | 38 + DOCBOOK/doc/fo/ignore.image.scaling.html | 21 + DOCBOOK/doc/fo/img.src.path.html | 33 + .../doc/fo/index.div.title.properties.html | 32 + DOCBOOK/doc/fo/index.entry.properties.html | 26 + DOCBOOK/doc/fo/index.html | 64 + DOCBOOK/doc/fo/index.method.html | 127 + DOCBOOK/doc/fo/index.number.separator.html | 47 + DOCBOOK/doc/fo/index.on.role.html | 41 + DOCBOOK/doc/fo/index.on.type.html | 45 + .../doc/fo/index.page.number.properties.html | 24 + .../fo/index.preferred.page.properties.html | 25 + DOCBOOK/doc/fo/index.range.separator.html | 50 + DOCBOOK/doc/fo/index.term.separator.html | 47 + .../doc/fo/informal.object.properties.html | 22 + .../doc/fo/informalequation.properties.html | 20 + .../doc/fo/informalexample.properties.html | 20 + DOCBOOK/doc/fo/informalfigure.properties.html | 20 + DOCBOOK/doc/fo/informaltable.properties.html | 25 + .../fo/inner.region.content.properties.html | 41 + DOCBOOK/doc/fo/insert.link.page.number.html | 46 + DOCBOOK/doc/fo/insert.olink.page.number.html | 60 + DOCBOOK/doc/fo/insert.olink.pdf.frag.html | 61 + DOCBOOK/doc/fo/insert.xref.page.number.html | 37 + .../doc/fo/itemizedlist.label.properties.html | 19 + DOCBOOK/doc/fo/itemizedlist.label.width.html | 21 + DOCBOOK/doc/fo/itemizedlist.properties.html | 16 + DOCBOOK/doc/fo/keep.relative.image.uris.html | 27 + .../doc/fo/l10n.gentext.default.language.html | 22 + DOCBOOK/doc/fo/l10n.gentext.language.html | 26 + .../fo/l10n.gentext.use.xref.language.html | 46 + DOCBOOK/doc/fo/l10n.html | 13 + .../doc/fo/l10n.lang.value.rfc.compliant.html | 50 + DOCBOOK/doc/fo/label.from.part.html | 31 + DOCBOOK/doc/fo/labels.html | 23 + DOCBOOK/doc/fo/line-height.html | 20 + DOCBOOK/doc/fo/linenumbering.everyNth.html | 26 + DOCBOOK/doc/fo/linenumbering.extension.html | 23 + DOCBOOK/doc/fo/linenumbering.separator.html | 23 + DOCBOOK/doc/fo/linenumbering.width.html | 22 + DOCBOOK/doc/fo/links.html | 36 + DOCBOOK/doc/fo/list.block.properties.html | 18 + DOCBOOK/doc/fo/list.block.spacing.html | 22 + DOCBOOK/doc/fo/list.item.spacing.html | 19 + DOCBOOK/doc/fo/lists.html | 33 + DOCBOOK/doc/fo/make.index.markup.html | 66 + DOCBOOK/doc/fo/make.single.year.ranges.html | 21 + DOCBOOK/doc/fo/make.year.ranges.html | 25 + DOCBOOK/doc/fo/margin.note.float.type.html | 56 + DOCBOOK/doc/fo/margin.note.properties.html | 47 + .../doc/fo/margin.note.title.properties.html | 25 + DOCBOOK/doc/fo/margin.note.width.html | 28 + DOCBOOK/doc/fo/marker.section.level.html | 43 + DOCBOOK/doc/fo/menuchoice.menu.separator.html | 35 + DOCBOOK/doc/fo/menuchoice.separator.html | 25 + DOCBOOK/doc/fo/meta.html | 10 + DOCBOOK/doc/fo/misc.html | 106 + DOCBOOK/doc/fo/monospace.font.family.html | 27 + DOCBOOK/doc/fo/monospace.properties.html | 31 + .../doc/fo/monospace.verbatim.font.width.html | 33 + .../doc/fo/monospace.verbatim.properties.html | 20 + DOCBOOK/doc/fo/nominal.table.width.html | 23 + .../nongraphical.admonition.properties.html | 34 + DOCBOOK/doc/fo/normal.para.spacing.html | 36 + DOCBOOK/doc/fo/olink.base.uri.html | 28 + DOCBOOK/doc/fo/olink.debug.html | 29 + DOCBOOK/doc/fo/olink.doctitle.html | 107 + .../doc/fo/olink.lang.fallback.sequence.html | 76 + DOCBOOK/doc/fo/olink.properties.html | 26 + .../doc/fo/orderedlist.label.properties.html | 19 + DOCBOOK/doc/fo/orderedlist.label.width.html | 21 + DOCBOOK/doc/fo/orderedlist.properties.html | 17 + .../fo/outer.region.content.properties.html | 40 + DOCBOOK/doc/fo/page.height.html | 30 + DOCBOOK/doc/fo/page.height.portrait.html | 64 + DOCBOOK/doc/fo/page.margin.bottom.html | 22 + DOCBOOK/doc/fo/page.margin.inner.html | 51 + DOCBOOK/doc/fo/page.margin.outer.html | 48 + DOCBOOK/doc/fo/page.margin.top.html | 21 + DOCBOOK/doc/fo/page.orientation.html | 23 + DOCBOOK/doc/fo/page.png | Bin 0 -> 17578 bytes DOCBOOK/doc/fo/page.width.html | 29 + DOCBOOK/doc/fo/page.width.portrait.html | 63 + DOCBOOK/doc/fo/paper.type.html | 25 + DOCBOOK/doc/fo/para.properties.html | 24 + DOCBOOK/doc/fo/part.autolabel.html | 39 + DOCBOOK/doc/fo/passivetex.extensions.html | 23 + DOCBOOK/doc/fo/pgwide.properties.html | 45 + DOCBOOK/doc/fo/preface.autolabel.html | 37 + DOCBOOK/doc/fo/prefer.internal.olink.html | 68 + .../doc/fo/preferred.mediaobject.role.html | 33 + DOCBOOK/doc/fo/prepress.html | 11 + DOCBOOK/doc/fo/procedure.properties.html | 22 + DOCBOOK/doc/fo/process.empty.source.toc.html | 32 + DOCBOOK/doc/fo/process.source.toc.html | 32 + DOCBOOK/doc/fo/profile.arch.html | 32 + DOCBOOK/doc/fo/profile.attribute.html | 27 + DOCBOOK/doc/fo/profile.audience.html | 31 + DOCBOOK/doc/fo/profile.condition.html | 31 + DOCBOOK/doc/fo/profile.conformance.html | 31 + DOCBOOK/doc/fo/profile.lang.html | 31 + DOCBOOK/doc/fo/profile.os.html | 31 + DOCBOOK/doc/fo/profile.revision.html | 31 + DOCBOOK/doc/fo/profile.revisionflag.html | 31 + DOCBOOK/doc/fo/profile.role.html | 47 + DOCBOOK/doc/fo/profile.security.html | 31 + DOCBOOK/doc/fo/profile.separator.html | 20 + DOCBOOK/doc/fo/profile.status.html | 31 + DOCBOOK/doc/fo/profile.userlevel.html | 31 + DOCBOOK/doc/fo/profile.value.html | 34 + DOCBOOK/doc/fo/profile.vendor.html | 31 + DOCBOOK/doc/fo/profile.wordsize.html | 31 + DOCBOOK/doc/fo/profiling.html | 56 + DOCBOOK/doc/fo/propsets.html | 117 + DOCBOOK/doc/fo/punct.honorific.html | 21 + DOCBOOK/doc/fo/qa.html | 14 + DOCBOOK/doc/fo/qanda.defaultlabel.html | 56 + DOCBOOK/doc/fo/qanda.in.toc.html | 27 + DOCBOOK/doc/fo/qanda.inherit.numeration.html | 23 + DOCBOOK/doc/fo/qanda.nested.in.toc.html | 22 + .../doc/fo/qanda.title.level1.properties.html | 25 + .../doc/fo/qanda.title.level2.properties.html | 25 + .../doc/fo/qanda.title.level3.properties.html | 25 + .../doc/fo/qanda.title.level4.properties.html | 25 + .../doc/fo/qanda.title.level5.properties.html | 25 + .../doc/fo/qanda.title.level6.properties.html | 27 + DOCBOOK/doc/fo/qanda.title.properties.html | 30 + DOCBOOK/doc/fo/qandadiv.autolabel.html | 19 + DOCBOOK/doc/fo/refclass.suppress.html | 21 + DOCBOOK/doc/fo/refentry.generate.name.html | 26 + DOCBOOK/doc/fo/refentry.generate.title.html | 26 + DOCBOOK/doc/fo/refentry.html | 22 + DOCBOOK/doc/fo/refentry.pagebreak.html | 26 + DOCBOOK/doc/fo/refentry.title.properties.html | 52 + DOCBOOK/doc/fo/refentry.xref.manvolnum.html | 24 + DOCBOOK/doc/fo/reference.autolabel.html | 33 + DOCBOOK/doc/fo/reference.css | 79 + DOCBOOK/doc/fo/region.after.extent.html | 22 + DOCBOOK/doc/fo/region.before.extent.html | 22 + DOCBOOK/doc/fo/region.inner.extent.html | 44 + DOCBOOK/doc/fo/region.inner.properties.html | 44 + DOCBOOK/doc/fo/region.outer.extent.html | 43 + DOCBOOK/doc/fo/region.outer.properties.html | 44 + .../fo/revhistory.table.cell.properties.html | 21 + .../doc/fo/revhistory.table.properties.html | 21 + .../doc/fo/revhistory.title.properties.html | 21 + DOCBOOK/doc/fo/root.properties.html | 39 + DOCBOOK/doc/fo/rootid.html | 26 + .../fo/runinhead.default.title.end.punct.html | 20 + DOCBOOK/doc/fo/runinhead.title.end.punct.html | 25 + DOCBOOK/doc/fo/sans.font.family.html | 22 + DOCBOOK/doc/fo/section.autolabel.html | 19 + .../doc/fo/section.autolabel.max.depth.html | 25 + DOCBOOK/doc/fo/section.container.element.html | 53 + ...ection.label.includes.component.label.html | 20 + DOCBOOK/doc/fo/section.level1.properties.html | 36 + DOCBOOK/doc/fo/section.level2.properties.html | 36 + DOCBOOK/doc/fo/section.level3.properties.html | 36 + DOCBOOK/doc/fo/section.level4.properties.html | 36 + DOCBOOK/doc/fo/section.level5.properties.html | 36 + DOCBOOK/doc/fo/section.level6.properties.html | 36 + DOCBOOK/doc/fo/section.properties.html | 28 + .../fo/section.title.level1.properties.html | 25 + .../fo/section.title.level2.properties.html | 25 + .../fo/section.title.level3.properties.html | 25 + .../fo/section.title.level4.properties.html | 25 + .../fo/section.title.level5.properties.html | 25 + .../fo/section.title.level6.properties.html | 26 + DOCBOOK/doc/fo/section.title.properties.html | 32 + DOCBOOK/doc/fo/segmentedlist.as.table.html | 21 + DOCBOOK/doc/fo/shade.verbatim.html | 23 + DOCBOOK/doc/fo/shade.verbatim.style.html | 26 + DOCBOOK/doc/fo/show.comments.html | 25 + DOCBOOK/doc/fo/side.region.precedence.html | 49 + DOCBOOK/doc/fo/sidebar.float.type.html | 62 + DOCBOOK/doc/fo/sidebar.float.width.html | 28 + DOCBOOK/doc/fo/sidebar.properties.html | 35 + DOCBOOK/doc/fo/sidebar.title.properties.html | 25 + DOCBOOK/doc/fo/simplesect.in.toc.html | 19 + DOCBOOK/doc/fo/subscript.properties.html | 22 + DOCBOOK/doc/fo/superscript.properties.html | 22 + DOCBOOK/doc/fo/symbol.font.family.html | 34 + DOCBOOK/doc/fo/table-templates.html | 24 + DOCBOOK/doc/fo/table.caption.properties.html | 24 + DOCBOOK/doc/fo/table.cell.border.color.html | 31 + DOCBOOK/doc/fo/table.cell.border.style.html | 25 + .../doc/fo/table.cell.border.thickness.html | 27 + DOCBOOK/doc/fo/table.cell.padding.html | 25 + .../doc/fo/table.footnote.number.format.html | 21 + .../doc/fo/table.footnote.number.symbols.html | 32 + DOCBOOK/doc/fo/table.footnote.properties.html | 32 + DOCBOOK/doc/fo/table.frame.border.color.html | 21 + DOCBOOK/doc/fo/table.frame.border.style.html | 20 + .../doc/fo/table.frame.border.thickness.html | 20 + DOCBOOK/doc/fo/table.properties.html | 27 + DOCBOOK/doc/fo/table.table.properties.html | 29 + DOCBOOK/doc/fo/tablecolumns.extension.html | 23 + DOCBOOK/doc/fo/tables.html | 29 + DOCBOOK/doc/fo/target.database.document.html | 30 + DOCBOOK/doc/fo/targets.filename.html | 25 + DOCBOOK/doc/fo/task.properties.html | 22 + .../doc/fo/template.calc.column.width.html | 95 + DOCBOOK/doc/fo/tex.math.delims.html | 39 + DOCBOOK/doc/fo/tex.math.in.alt.html | 67 + DOCBOOK/doc/fo/textdata.default.encoding.html | 25 + DOCBOOK/doc/fo/textinsert.extension.html | 44 + DOCBOOK/doc/fo/title.font.family.html | 27 + DOCBOOK/doc/fo/title.margin.left.html | 58 + DOCBOOK/doc/fo/toc.indent.width.html | 27 + DOCBOOK/doc/fo/toc.line.properties.html | 37 + DOCBOOK/doc/fo/toc.margin.properties.html | 26 + DOCBOOK/doc/fo/toc.max.depth.html | 18 + DOCBOOK/doc/fo/toc.section.depth.html | 21 + DOCBOOK/doc/fo/toc_index.html | 61 + DOCBOOK/doc/fo/ulink.footnotes.html | 27 + DOCBOOK/doc/fo/ulink.hyphenate.chars.html | 31 + DOCBOOK/doc/fo/ulink.hyphenate.html | 32 + DOCBOOK/doc/fo/ulink.show.html | 30 + DOCBOOK/doc/fo/use.extensions.html | 24 + DOCBOOK/doc/fo/use.local.olink.style.html | 21 + DOCBOOK/doc/fo/use.role.as.xrefstyle.html | 86 + DOCBOOK/doc/fo/use.role.for.mediaobject.html | 45 + DOCBOOK/doc/fo/use.svg.html | 23 + DOCBOOK/doc/fo/variablelist.as.blocks.html | 55 + .../doc/fo/variablelist.max.termlength.html | 39 + .../doc/fo/variablelist.term.break.after.html | 32 + .../doc/fo/variablelist.term.properties.html | 22 + .../doc/fo/variablelist.term.separator.html | 33 + DOCBOOK/doc/fo/verbatim.properties.html | 31 + DOCBOOK/doc/fo/writing.mode.html | 51 + DOCBOOK/doc/fo/xep.extensions.html | 24 + DOCBOOK/doc/fo/xep.index.item.properties.html | 29 + DOCBOOK/doc/fo/xref.label-page.separator.html | 31 + .../doc/fo/xref.label-title.separator.html | 29 + DOCBOOK/doc/fo/xref.properties.html | 22 + DOCBOOK/doc/fo/xref.title-page.separator.html | 29 + .../doc/fo/xref.with.number.and.title.html | 23 + DOCBOOK/doc/fo/xrefs.html | 15 + DOCBOOK/doc/fo/xslt.html | 5 + .../doc/html/abstract.notitle.enabled.html | 15 + .../doc/html/activate.external.olinks.html | 62 + .../doc/html/admon.graphics.extension.html | 22 + DOCBOOK/doc/html/admon.graphics.html | 22 + DOCBOOK/doc/html/admon.graphics.path.html | 20 + DOCBOOK/doc/html/admon.style.html | 23 + DOCBOOK/doc/html/admon.textlabel.html | 25 + DOCBOOK/doc/html/admons.html | 14 + DOCBOOK/doc/html/annos.html | 13 + DOCBOOK/doc/html/annotate.toc.html | 21 + DOCBOOK/doc/html/annotation.css.html | 64 + .../doc/html/annotation.graphic.close.html | 24 + DOCBOOK/doc/html/annotation.graphic.open.html | 21 + DOCBOOK/doc/html/annotation.js.html | 26 + DOCBOOK/doc/html/annotation.support.html | 22 + DOCBOOK/doc/html/appendix.autolabel.html | 39 + .../doc/html/author.othername.in.middle.html | 24 + .../doc/html/autotoc.label.in.hyperlink.html | 22 + DOCBOOK/doc/html/autotoc.label.separator.html | 20 + DOCBOOK/doc/html/base.dir.html | 31 + DOCBOOK/doc/html/biblio.html | 11 + .../doc/html/biblioentry.item.separator.html | 19 + DOCBOOK/doc/html/bibliography.collection.html | 112 + DOCBOOK/doc/html/bibliography.numbered.html | 20 + DOCBOOK/doc/html/bibliography.style.html | 25 + .../doc/html/blurb.on.titlepage.enabled.html | 24 + DOCBOOK/doc/html/bridgehead.in.toc.html | 21 + DOCBOOK/doc/html/callout.defaultcolumn.html | 23 + .../doc/html/callout.graphics.extension.html | 21 + DOCBOOK/doc/html/callout.graphics.html | 23 + .../html/callout.graphics.number.limit.html | 27 + DOCBOOK/doc/html/callout.graphics.path.html | 24 + DOCBOOK/doc/html/callout.list.table.html | 25 + DOCBOOK/doc/html/callout.unicode.html | 19 + .../html/callout.unicode.number.limit.html | 28 + .../html/callout.unicode.start.character.html | 26 + DOCBOOK/doc/html/callouts.extension.html | 23 + DOCBOOK/doc/html/callouts.html | 23 + DOCBOOK/doc/html/chapter.autolabel.html | 37 + DOCBOOK/doc/html/chunk.append.html | 23 + DOCBOOK/doc/html/chunk.first.sections.html | 24 + DOCBOOK/doc/html/chunk.quietly.html | 23 + DOCBOOK/doc/html/chunk.section.depth.html | 20 + DOCBOOK/doc/html/chunk.separate.lots.html | 29 + DOCBOOK/doc/html/chunk.toc.html | 23 + .../html/chunk.tocs.and.lots.has.title.html | 21 + DOCBOOK/doc/html/chunk.tocs.and.lots.html | 25 + DOCBOOK/doc/html/chunked.filename.prefix.html | 34 + ...chunker.output.cdata-section-elements.html | 23 + .../html/chunker.output.doctype-public.html | 24 + .../html/chunker.output.doctype-system.html | 24 + DOCBOOK/doc/html/chunker.output.encoding.html | 24 + DOCBOOK/doc/html/chunker.output.indent.html | 23 + .../doc/html/chunker.output.media-type.html | 28 + DOCBOOK/doc/html/chunker.output.method.html | 23 + .../chunker.output.omit-xml-declaration.html | 23 + .../doc/html/chunker.output.standalone.html | 24 + DOCBOOK/doc/html/chunking.html | 65 + DOCBOOK/doc/html/citerefentry.link.html | 22 + DOCBOOK/doc/html/collect.xref.targets.html | 23 + .../component.label.includes.part.label.html | 32 + DOCBOOK/doc/html/contrib.inline.enabled.html | 19 + DOCBOOK/doc/html/css.decoration.html | 26 + DOCBOOK/doc/html/current.docid.html | 20 + DOCBOOK/doc/html/custom.css.source.html | 104 + DOCBOOK/doc/html/dbk_ext.html | 25 + DOCBOOK/doc/html/default.float.class.html | 27 + DOCBOOK/doc/html/default.image.width.html | 22 + DOCBOOK/doc/html/default.table.frame.html | 21 + DOCBOOK/doc/html/default.table.width.html | 19 + DOCBOOK/doc/html/docbook.css.link.html | 35 + DOCBOOK/doc/html/docbook.css.source.html | 71 + DOCBOOK/doc/html/draft.mode.html | 26 + DOCBOOK/doc/html/draft.watermark.image.html | 20 + DOCBOOK/doc/html/ebnf.assignment.html | 28 + DOCBOOK/doc/html/ebnf.html | 11 + .../doc/html/ebnf.statement.terminator.html | 25 + DOCBOOK/doc/html/ebnf.table.bgcolor.html | 23 + DOCBOOK/doc/html/ebnf.table.border.html | 19 + DOCBOOK/doc/html/eclipse.autolabel.html | 21 + DOCBOOK/doc/html/eclipse.plugin.id.html | 21 + DOCBOOK/doc/html/eclipse.plugin.name.html | 20 + DOCBOOK/doc/html/eclipse.plugin.provider.html | 20 + DOCBOOK/doc/html/eclipse_help.html | 11 + DOCBOOK/doc/html/editedby.enabled.html | 20 + .../doc/html/email.delimiters.enabled.html | 27 + .../doc/html/emphasis.propagates.style.html | 19 + DOCBOOK/doc/html/entry.propagates.style.html | 23 + DOCBOOK/doc/html/exsl.node.set.available.html | 33 + DOCBOOK/doc/html/firstterm.only.link.html | 22 + DOCBOOK/doc/html/footer.rule.html | 20 + DOCBOOK/doc/html/footnote.number.format.html | 21 + DOCBOOK/doc/html/footnote.number.symbols.html | 32 + DOCBOOK/doc/html/formal.procedures.html | 21 + DOCBOOK/doc/html/formal.title.placement.html | 34 + DOCBOOK/doc/html/funcsynopsis.decoration.html | 23 + DOCBOOK/doc/html/funcsynopsis.style.html | 22 + DOCBOOK/doc/html/function.parens.html | 22 + DOCBOOK/doc/html/generate.consistent.ids.html | 46 + DOCBOOK/doc/html/generate.css.header.html | 33 + DOCBOOK/doc/html/generate.id.attributes.html | 52 + DOCBOOK/doc/html/generate.index.html | 18 + .../doc/html/generate.legalnotice.link.html | 57 + DOCBOOK/doc/html/generate.manifest.html | 20 + DOCBOOK/doc/html/generate.meta.abstract.html | 22 + .../doc/html/generate.revhistory.link.html | 39 + .../doc/html/generate.section.toc.level.html | 28 + DOCBOOK/doc/html/generate.toc.html | 85 + DOCBOOK/doc/html/glossary.collection.html | 257 + DOCBOOK/doc/html/glossary.html | 13 + DOCBOOK/doc/html/glossary.sort.html | 25 + DOCBOOK/doc/html/glossentry.show.acronym.html | 27 + DOCBOOK/doc/html/glossterm.auto.link.html | 26 + .../doc/html/graphic.default.extension.html | 22 + DOCBOOK/doc/html/graphics.html | 29 + DOCBOOK/doc/html/graphicsize.extension.html | 25 + .../html/graphicsize.use.img.src.path.html | 23 + DOCBOOK/doc/html/header.rule.html | 20 + .../doc/html/highlight.default.language.html | 20 + DOCBOOK/doc/html/highlight.source.html | 64 + DOCBOOK/doc/html/highlight.xslthl.config.html | 26 + DOCBOOK/doc/html/html.append.html | 23 + DOCBOOK/doc/html/html.base.html | 23 + DOCBOOK/doc/html/html.cellpadding.html | 22 + DOCBOOK/doc/html/html.cellspacing.html | 22 + DOCBOOK/doc/html/html.cleanup.html | 27 + DOCBOOK/doc/html/html.ext.html | 22 + DOCBOOK/doc/html/html.extra.head.links.html | 24 + .../html.head.legalnotice.link.multiple.html | 37 + .../html.head.legalnotice.link.types.html | 64 + DOCBOOK/doc/html/html.html | 55 + DOCBOOK/doc/html/html.longdesc.html | 21 + DOCBOOK/doc/html/html.longdesc.link.html | 26 + DOCBOOK/doc/html/html.script.html | 29 + DOCBOOK/doc/html/html.script.type.html | 24 + DOCBOOK/doc/html/html.stylesheet.html | 29 + DOCBOOK/doc/html/html.stylesheet.type.html | 19 + DOCBOOK/doc/html/htmlhelp.alias.file.html | 20 + DOCBOOK/doc/html/htmlhelp.autolabel.html | 21 + DOCBOOK/doc/html/htmlhelp.button.back.html | 20 + DOCBOOK/doc/html/htmlhelp.button.forward.html | 20 + .../doc/html/htmlhelp.button.hideshow.html | 20 + DOCBOOK/doc/html/htmlhelp.button.home.html | 20 + .../doc/html/htmlhelp.button.home.url.html | 20 + DOCBOOK/doc/html/htmlhelp.button.jump1.html | 16 + .../doc/html/htmlhelp.button.jump1.title.html | 20 + .../doc/html/htmlhelp.button.jump1.url.html | 20 + DOCBOOK/doc/html/htmlhelp.button.jump2.html | 20 + .../doc/html/htmlhelp.button.jump2.title.html | 20 + .../doc/html/htmlhelp.button.jump2.url.html | 20 + DOCBOOK/doc/html/htmlhelp.button.locate.html | 21 + DOCBOOK/doc/html/htmlhelp.button.next.html | 20 + DOCBOOK/doc/html/htmlhelp.button.options.html | 21 + DOCBOOK/doc/html/htmlhelp.button.prev.html | 21 + DOCBOOK/doc/html/htmlhelp.button.print.html | 21 + DOCBOOK/doc/html/htmlhelp.button.refresh.html | 20 + DOCBOOK/doc/html/htmlhelp.button.stop.html | 21 + DOCBOOK/doc/html/htmlhelp.button.zoom.html | 21 + DOCBOOK/doc/html/htmlhelp.chm.html | 20 + DOCBOOK/doc/html/htmlhelp.default.topic.html | 30 + .../doc/html/htmlhelp.display.progress.html | 21 + DOCBOOK/doc/html/htmlhelp.encoding.html | 21 + .../html/htmlhelp.enhanced.decompilation.html | 20 + .../doc/html/htmlhelp.enumerate.images.html | 21 + .../html/htmlhelp.force.map.and.alias.html | 19 + DOCBOOK/doc/html/htmlhelp.hhc.binary.html | 22 + .../htmlhelp.hhc.folders.instead.books.html | 24 + DOCBOOK/doc/html/htmlhelp.hhc.html | 20 + .../doc/html/htmlhelp.hhc.section.depth.html | 20 + DOCBOOK/doc/html/htmlhelp.hhc.show.root.html | 22 + DOCBOOK/doc/html/htmlhelp.hhc.width.html | 21 + DOCBOOK/doc/html/htmlhelp.hhk.html | 20 + DOCBOOK/doc/html/htmlhelp.hhp.html | 21 + DOCBOOK/doc/html/htmlhelp.hhp.tail.html | 21 + DOCBOOK/doc/html/htmlhelp.hhp.window.html | 21 + DOCBOOK/doc/html/htmlhelp.hhp.windows.html | 22 + DOCBOOK/doc/html/htmlhelp.html | 101 + DOCBOOK/doc/html/htmlhelp.map.file.html | 18 + DOCBOOK/doc/html/htmlhelp.only.html | 25 + .../htmlhelp.remember.window.position.html | 20 + .../html/htmlhelp.show.advanced.search.html | 21 + .../doc/html/htmlhelp.show.favorities.html | 21 + DOCBOOK/doc/html/htmlhelp.show.menu.html | 21 + .../doc/html/htmlhelp.show.toolbar.text.html | 21 + DOCBOOK/doc/html/htmlhelp.title.html | 21 + DOCBOOK/doc/html/htmlhelp.use.hhk.html | 20 + .../doc/html/htmlhelp.window.geometry.html | 23 + DOCBOOK/doc/html/id.warnings.html | 18 + DOCBOOK/doc/html/ignore.image.scaling.html | 21 + DOCBOOK/doc/html/img.src.path.html | 33 + DOCBOOK/doc/html/index.html | 56 + DOCBOOK/doc/html/index.links.to.section.html | 66 + DOCBOOK/doc/html/index.method.html | 127 + DOCBOOK/doc/html/index.number.separator.html | 47 + DOCBOOK/doc/html/index.on.role.html | 41 + DOCBOOK/doc/html/index.on.type.html | 45 + .../doc/html/index.prefer.titleabbrev.html | 22 + DOCBOOK/doc/html/index.range.separator.html | 50 + DOCBOOK/doc/html/index.term.separator.html | 47 + DOCBOOK/doc/html/inherit.keywords.html | 24 + .../doc/html/insert.olink.page.number.html | 60 + DOCBOOK/doc/html/insert.olink.pdf.frag.html | 61 + DOCBOOK/doc/html/insert.xref.page.number.html | 37 + DOCBOOK/doc/html/javahelp.encoding.html | 21 + DOCBOOK/doc/html/javahelp.html | 8 + .../doc/html/keep.relative.image.uris.html | 27 + .../html/l10n.gentext.default.language.html | 22 + DOCBOOK/doc/html/l10n.gentext.language.html | 26 + .../html/l10n.gentext.use.xref.language.html | 46 + DOCBOOK/doc/html/l10n.html | 13 + .../html/l10n.lang.value.rfc.compliant.html | 50 + DOCBOOK/doc/html/label.from.part.html | 31 + DOCBOOK/doc/html/labels.html | 25 + DOCBOOK/doc/html/linenumbering.everyNth.html | 26 + DOCBOOK/doc/html/linenumbering.extension.html | 23 + DOCBOOK/doc/html/linenumbering.separator.html | 23 + DOCBOOK/doc/html/linenumbering.width.html | 22 + DOCBOOK/doc/html/link.mailto.url.html | 22 + DOCBOOK/doc/html/links.html | 37 + DOCBOOK/doc/html/lists.html | 13 + DOCBOOK/doc/html/make.clean.html.html | 44 + DOCBOOK/doc/html/make.graphic.viewport.html | 28 + DOCBOOK/doc/html/make.single.year.ranges.html | 21 + DOCBOOK/doc/html/make.valid.html.html | 28 + DOCBOOK/doc/html/make.year.ranges.html | 25 + DOCBOOK/doc/html/manifest.html | 22 + DOCBOOK/doc/html/manifest.in.base.dir.html | 22 + DOCBOOK/doc/html/manual.toc.html | 22 + .../doc/html/menuchoice.menu.separator.html | 35 + DOCBOOK/doc/html/menuchoice.separator.html | 25 + DOCBOOK/doc/html/meta.html | 30 + DOCBOOK/doc/html/misc.html | 63 + .../doc/html/navig.graphics.extension.html | 21 + DOCBOOK/doc/html/navig.graphics.html | 24 + DOCBOOK/doc/html/navig.graphics.path.html | 23 + DOCBOOK/doc/html/navig.showtitles.html | 25 + DOCBOOK/doc/html/nominal.image.depth.html | 20 + DOCBOOK/doc/html/nominal.image.width.html | 36 + DOCBOOK/doc/html/nominal.table.width.html | 23 + DOCBOOK/doc/html/olink.base.uri.html | 28 + DOCBOOK/doc/html/olink.debug.html | 29 + DOCBOOK/doc/html/olink.doctitle.html | 107 + DOCBOOK/doc/html/olink.fragid.html | 16 + .../html/olink.lang.fallback.sequence.html | 76 + DOCBOOK/doc/html/olink.outline.ext.html | 21 + DOCBOOK/doc/html/olink.properties.html | 26 + DOCBOOK/doc/html/olink.pubid.html | 20 + DOCBOOK/doc/html/olink.resolver.html | 16 + DOCBOOK/doc/html/olink.sysid.html | 20 + .../html/othercredit.like.author.enabled.html | 24 + DOCBOOK/doc/html/para.propagates.style.html | 22 + DOCBOOK/doc/html/part.autolabel.html | 39 + DOCBOOK/doc/html/phrase.propagates.style.html | 22 + DOCBOOK/doc/html/pixels.per.inch.html | 24 + DOCBOOK/doc/html/points.per.em.html | 22 + DOCBOOK/doc/html/preface.autolabel.html | 37 + DOCBOOK/doc/html/prefer.internal.olink.html | 68 + .../doc/html/preferred.mediaobject.role.html | 33 + .../doc/html/process.empty.source.toc.html | 32 + DOCBOOK/doc/html/process.source.toc.html | 32 + DOCBOOK/doc/html/profile.arch.html | 32 + DOCBOOK/doc/html/profile.attribute.html | 27 + DOCBOOK/doc/html/profile.audience.html | 31 + DOCBOOK/doc/html/profile.condition.html | 31 + DOCBOOK/doc/html/profile.conformance.html | 31 + DOCBOOK/doc/html/profile.lang.html | 31 + DOCBOOK/doc/html/profile.os.html | 31 + DOCBOOK/doc/html/profile.revision.html | 31 + DOCBOOK/doc/html/profile.revisionflag.html | 31 + DOCBOOK/doc/html/profile.role.html | 47 + DOCBOOK/doc/html/profile.security.html | 31 + DOCBOOK/doc/html/profile.separator.html | 20 + DOCBOOK/doc/html/profile.status.html | 31 + DOCBOOK/doc/html/profile.userlevel.html | 31 + DOCBOOK/doc/html/profile.value.html | 34 + DOCBOOK/doc/html/profile.vendor.html | 31 + DOCBOOK/doc/html/profile.wordsize.html | 31 + DOCBOOK/doc/html/profiling.html | 56 + DOCBOOK/doc/html/punct.honorific.html | 21 + DOCBOOK/doc/html/qa.html | 12 + DOCBOOK/doc/html/qanda.defaultlabel.html | 56 + DOCBOOK/doc/html/qanda.in.toc.html | 27 + .../doc/html/qanda.inherit.numeration.html | 23 + DOCBOOK/doc/html/qanda.nested.in.toc.html | 22 + DOCBOOK/doc/html/qandadiv.autolabel.html | 19 + DOCBOOK/doc/html/refclass.suppress.html | 21 + DOCBOOK/doc/html/refentry.generate.name.html | 26 + DOCBOOK/doc/html/refentry.generate.title.html | 26 + DOCBOOK/doc/html/refentry.html | 22 + DOCBOOK/doc/html/refentry.separator.html | 22 + DOCBOOK/doc/html/refentry.xref.manvolnum.html | 24 + DOCBOOK/doc/html/reference.autolabel.html | 33 + DOCBOOK/doc/html/reference.css | 79 + DOCBOOK/doc/html/root.filename.html | 22 + DOCBOOK/doc/html/rootid.html | 26 + .../runinhead.default.title.end.punct.html | 20 + .../doc/html/runinhead.title.end.punct.html | 25 + .../html/saxon.character.representation.html | 30 + DOCBOOK/doc/html/section.autolabel.html | 19 + .../doc/html/section.autolabel.max.depth.html | 25 + ...ection.label.includes.component.label.html | 20 + DOCBOOK/doc/html/segmentedlist.as.table.html | 21 + DOCBOOK/doc/html/shade.verbatim.html | 23 + DOCBOOK/doc/html/shade.verbatim.style.html | 27 + DOCBOOK/doc/html/show.comments.html | 25 + DOCBOOK/doc/html/show.revisionflag.html | 35 + DOCBOOK/doc/html/simplesect.in.toc.html | 19 + DOCBOOK/doc/html/spacing.paras.html | 23 + .../doc/html/suppress.footer.navigation.html | 19 + .../doc/html/suppress.header.navigation.html | 20 + DOCBOOK/doc/html/suppress.navigation.html | 21 + DOCBOOK/doc/html/table.borders.with.css.html | 21 + DOCBOOK/doc/html/table.cell.border.color.html | 31 + DOCBOOK/doc/html/table.cell.border.style.html | 25 + .../doc/html/table.cell.border.thickness.html | 27 + .../html/table.footnote.number.format.html | 21 + .../html/table.footnote.number.symbols.html | 32 + .../doc/html/table.frame.border.color.html | 21 + .../doc/html/table.frame.border.style.html | 20 + .../html/table.frame.border.thickness.html | 20 + DOCBOOK/doc/html/tablecolumns.extension.html | 23 + DOCBOOK/doc/html/tables.html | 27 + .../doc/html/target.database.document.html | 30 + DOCBOOK/doc/html/targets.filename.html | 25 + DOCBOOK/doc/html/tex.math.delims.html | 39 + DOCBOOK/doc/html/tex.math.file.html | 32 + DOCBOOK/doc/html/tex.math.in.alt.html | 67 + .../doc/html/textdata.default.encoding.html | 25 + DOCBOOK/doc/html/textinsert.extension.html | 44 + DOCBOOK/doc/html/toc.list.type.html | 20 + DOCBOOK/doc/html/toc.max.depth.html | 18 + DOCBOOK/doc/html/toc.section.depth.html | 21 + DOCBOOK/doc/html/toc_index.html | 51 + DOCBOOK/doc/html/ulink.target.html | 22 + DOCBOOK/doc/html/use.embed.for.svg.html | 26 + DOCBOOK/doc/html/use.extensions.html | 24 + DOCBOOK/doc/html/use.id.as.filename.html | 23 + DOCBOOK/doc/html/use.local.olink.style.html | 21 + DOCBOOK/doc/html/use.role.as.xrefstyle.html | 86 + .../doc/html/use.role.for.mediaobject.html | 45 + DOCBOOK/doc/html/use.svg.html | 23 + DOCBOOK/doc/html/variablelist.as.table.html | 47 + .../html/variablelist.term.break.after.html | 32 + .../doc/html/variablelist.term.separator.html | 33 + DOCBOOK/doc/html/webhelp.autolabel.html | 18 + DOCBOOK/doc/html/webhelp.base.dir.html | 22 + DOCBOOK/doc/html/webhelp.common.dir.html | 18 + DOCBOOK/doc/html/webhelp.default.topic.html | 29 + DOCBOOK/doc/html/webhelp.html | 19 + .../doc/html/webhelp.include.search.tab.html | 18 + .../doc/html/webhelp.indexer.language.html | 33 + DOCBOOK/doc/html/webhelp.start.filename.html | 27 + DOCBOOK/doc/html/webhelp.tree.cookie.id.html | 31 + DOCBOOK/doc/html/writing.mode.html | 51 + .../doc/html/xref.label-page.separator.html | 31 + .../doc/html/xref.label-title.separator.html | 29 + .../doc/html/xref.title-page.separator.html | 29 + .../doc/html/xref.with.number.and.title.html | 23 + DOCBOOK/doc/html/xrefs.html | 19 + DOCBOOK/doc/html/xslt.html | 17 + DOCBOOK/doc/images/Thumbs.db | Bin 0 -> 13312 bytes DOCBOOK/doc/images/annot-close.png | Bin 0 -> 207 bytes DOCBOOK/doc/images/annot-open.png | Bin 0 -> 837 bytes DOCBOOK/doc/images/blank.png | Bin 0 -> 374 bytes DOCBOOK/doc/images/callouts/1.gif | Bin 0 -> 889 bytes DOCBOOK/doc/images/callouts/1.png | Bin 0 -> 329 bytes DOCBOOK/doc/images/callouts/1.svg | 15 + DOCBOOK/doc/images/callouts/10.gif | Bin 0 -> 929 bytes DOCBOOK/doc/images/callouts/10.png | Bin 0 -> 361 bytes DOCBOOK/doc/images/callouts/10.svg | 18 + DOCBOOK/doc/images/callouts/11.gif | Bin 0 -> 202 bytes DOCBOOK/doc/images/callouts/11.png | Bin 0 -> 565 bytes DOCBOOK/doc/images/callouts/11.svg | 16 + DOCBOOK/doc/images/callouts/12.gif | Bin 0 -> 210 bytes DOCBOOK/doc/images/callouts/12.png | Bin 0 -> 617 bytes DOCBOOK/doc/images/callouts/12.svg | 18 + DOCBOOK/doc/images/callouts/13.gif | Bin 0 -> 209 bytes DOCBOOK/doc/images/callouts/13.png | Bin 0 -> 623 bytes DOCBOOK/doc/images/callouts/13.svg | 20 + DOCBOOK/doc/images/callouts/14.gif | Bin 0 -> 205 bytes DOCBOOK/doc/images/callouts/14.png | Bin 0 -> 411 bytes DOCBOOK/doc/images/callouts/14.svg | 17 + DOCBOOK/doc/images/callouts/15.gif | Bin 0 -> 210 bytes DOCBOOK/doc/images/callouts/15.png | Bin 0 -> 640 bytes DOCBOOK/doc/images/callouts/15.svg | 19 + DOCBOOK/doc/images/callouts/16.svg | 20 + DOCBOOK/doc/images/callouts/17.svg | 17 + DOCBOOK/doc/images/callouts/18.svg | 21 + DOCBOOK/doc/images/callouts/19.svg | 20 + DOCBOOK/doc/images/callouts/2.gif | Bin 0 -> 907 bytes DOCBOOK/doc/images/callouts/2.png | Bin 0 -> 353 bytes DOCBOOK/doc/images/callouts/2.svg | 17 + DOCBOOK/doc/images/callouts/20.svg | 20 + DOCBOOK/doc/images/callouts/21.svg | 18 + DOCBOOK/doc/images/callouts/22.svg | 20 + DOCBOOK/doc/images/callouts/23.svg | 22 + DOCBOOK/doc/images/callouts/24.svg | 19 + DOCBOOK/doc/images/callouts/25.svg | 21 + DOCBOOK/doc/images/callouts/26.svg | 22 + DOCBOOK/doc/images/callouts/27.svg | 19 + DOCBOOK/doc/images/callouts/28.svg | 23 + DOCBOOK/doc/images/callouts/29.svg | 22 + DOCBOOK/doc/images/callouts/3.gif | Bin 0 -> 914 bytes DOCBOOK/doc/images/callouts/3.png | Bin 0 -> 350 bytes DOCBOOK/doc/images/callouts/3.svg | 19 + DOCBOOK/doc/images/callouts/30.svg | 22 + DOCBOOK/doc/images/callouts/4.gif | Bin 0 -> 907 bytes DOCBOOK/doc/images/callouts/4.png | Bin 0 -> 345 bytes DOCBOOK/doc/images/callouts/4.svg | 16 + DOCBOOK/doc/images/callouts/5.gif | Bin 0 -> 916 bytes DOCBOOK/doc/images/callouts/5.png | Bin 0 -> 348 bytes DOCBOOK/doc/images/callouts/5.svg | 18 + DOCBOOK/doc/images/callouts/6.gif | Bin 0 -> 218 bytes DOCBOOK/doc/images/callouts/6.png | Bin 0 -> 355 bytes DOCBOOK/doc/images/callouts/6.svg | 19 + DOCBOOK/doc/images/callouts/7.gif | Bin 0 -> 907 bytes DOCBOOK/doc/images/callouts/7.png | Bin 0 -> 344 bytes DOCBOOK/doc/images/callouts/7.svg | 16 + DOCBOOK/doc/images/callouts/8.gif | Bin 0 -> 918 bytes DOCBOOK/doc/images/callouts/8.png | Bin 0 -> 357 bytes DOCBOOK/doc/images/callouts/8.svg | 20 + DOCBOOK/doc/images/callouts/9.gif | Bin 0 -> 923 bytes DOCBOOK/doc/images/callouts/9.png | Bin 0 -> 357 bytes DOCBOOK/doc/images/callouts/9.svg | 19 + DOCBOOK/doc/images/callouts/Thumbs.db | Bin 0 -> 8704 bytes DOCBOOK/doc/images/caution.gif | Bin 0 -> 743 bytes DOCBOOK/doc/images/caution.png | Bin 0 -> 1250 bytes DOCBOOK/doc/images/caution.svg | 25 + DOCBOOK/doc/images/caution.tif | Bin 0 -> 1978 bytes DOCBOOK/doc/images/colorsvg/caution.svg | 141 + DOCBOOK/doc/images/colorsvg/home.svg | 498 + DOCBOOK/doc/images/colorsvg/important.svg | 239 + DOCBOOK/doc/images/colorsvg/next.svg | 338 + DOCBOOK/doc/images/colorsvg/note.svg | 200 + DOCBOOK/doc/images/colorsvg/prev.svg | 338 + DOCBOOK/doc/images/colorsvg/tip.svg | 367 + DOCBOOK/doc/images/colorsvg/up.svg | 338 + DOCBOOK/doc/images/colorsvg/warning.svg | 232 + DOCBOOK/doc/images/draft.png | Bin 0 -> 16150 bytes DOCBOOK/doc/images/draft.svg | 14 + DOCBOOK/doc/images/home.gif | Bin 0 -> 321 bytes DOCBOOK/doc/images/home.png | Bin 0 -> 1156 bytes DOCBOOK/doc/images/home.svg | 26 + DOCBOOK/doc/images/important.gif | Bin 0 -> 1003 bytes DOCBOOK/doc/images/important.png | Bin 0 -> 722 bytes DOCBOOK/doc/images/important.svg | 25 + DOCBOOK/doc/images/important.tif | Bin 0 -> 2020 bytes DOCBOOK/doc/images/next.gif | Bin 0 -> 1083 bytes DOCBOOK/doc/images/next.png | Bin 0 -> 1150 bytes DOCBOOK/doc/images/next.svg | 19 + DOCBOOK/doc/images/note.gif | Bin 0 -> 580 bytes DOCBOOK/doc/images/note.png | Bin 0 -> 490 bytes DOCBOOK/doc/images/note.svg | 33 + DOCBOOK/doc/images/note.tif | Bin 0 -> 460 bytes DOCBOOK/doc/images/prev.gif | Bin 0 -> 1118 bytes DOCBOOK/doc/images/prev.png | Bin 0 -> 1132 bytes DOCBOOK/doc/images/prev.svg | 19 + DOCBOOK/doc/images/tip.gif | Bin 0 -> 598 bytes DOCBOOK/doc/images/tip.png | Bin 0 -> 449 bytes DOCBOOK/doc/images/tip.svg | 31 + DOCBOOK/doc/images/tip.tif | Bin 0 -> 420 bytes DOCBOOK/doc/images/toc-blank.png | Bin 0 -> 318 bytes DOCBOOK/doc/images/toc-minus.png | Bin 0 -> 259 bytes DOCBOOK/doc/images/toc-plus.png | Bin 0 -> 264 bytes DOCBOOK/doc/images/up.gif | Bin 0 -> 1089 bytes DOCBOOK/doc/images/up.png | Bin 0 -> 1111 bytes DOCBOOK/doc/images/up.svg | 19 + DOCBOOK/doc/images/warning.gif | Bin 0 -> 743 bytes DOCBOOK/doc/images/warning.png | Bin 0 -> 1241 bytes DOCBOOK/doc/images/warning.svg | 23 + DOCBOOK/doc/images/warning.tif | Bin 0 -> 1990 bytes DOCBOOK/doc/index.html | 45 + DOCBOOK/doc/lib/apply-string-subst-map.html | 63 + DOCBOOK/doc/lib/comment-escape-string.html | 34 + .../lib/comment-escape-string.recursive.html | 31 + DOCBOOK/doc/lib/copy-string.html | 41 + DOCBOOK/doc/lib/count.uri.path.depth.html | 32 + DOCBOOK/doc/lib/dirname.html | 28 + DOCBOOK/doc/lib/dot.count.html | 36 + DOCBOOK/doc/lib/generallibrary.html | 71 + DOCBOOK/doc/lib/idref.html | 43 + DOCBOOK/doc/lib/index.html | 17 + DOCBOOK/doc/lib/length-in-points.html | 76 + DOCBOOK/doc/lib/length-magnitude.html | 31 + DOCBOOK/doc/lib/length-spec.html | 50 + DOCBOOK/doc/lib/length-units.html | 40 + DOCBOOK/doc/lib/lookup.key.html | 44 + DOCBOOK/doc/lib/pi-attribute.html | 59 + DOCBOOK/doc/lib/reference.css | 79 + DOCBOOK/doc/lib/relativeuri.html | 34 + DOCBOOK/doc/lib/resolve.path.html | 41 + .../doc/lib/str.tokenize.keep.delimiters.html | 83 + DOCBOOK/doc/lib/string.subst.html | 40 + DOCBOOK/doc/lib/trim.common.uri.paths.html | 54 + DOCBOOK/doc/lib/trim.text.html | 65 + DOCBOOK/doc/lib/xpath.location.html | 41 + DOCBOOK/doc/lib/xpointer.idref.html | 36 + DOCBOOK/doc/manpages/authors.html | 8 + DOCBOOK/doc/manpages/charmap.html | 20 + DOCBOOK/doc/manpages/endnotes.html | 12 + DOCBOOK/doc/manpages/fonts.html | 14 + DOCBOOK/doc/manpages/general.html | 16 + DOCBOOK/doc/manpages/indent.html | 14 + DOCBOOK/doc/manpages/index.html | 18 + DOCBOOK/doc/manpages/lists.html | 6 + .../manpages/man.authors.section.enabled.html | 39 + .../man.base.url.for.relative.links.html | 62 + .../doc/manpages/man.break.after.slash.html | 39 + DOCBOOK/doc/manpages/man.charmap.enabled.html | 48 + .../man.charmap.subset.profile.english.html | 68 + .../manpages/man.charmap.subset.profile.html | 229 + DOCBOOK/doc/manpages/man.charmap.uri.html | 35 + .../doc/manpages/man.charmap.use.subset.html | 73 + .../man.copyright.section.enabled.html | 39 + .../manpages/man.endnotes.are.numbered.html | 96 + .../manpages/man.endnotes.list.enabled.html | 98 + .../manpages/man.endnotes.list.heading.html | 29 + .../doc/manpages/man.font.funcprototype.html | 23 + .../manpages/man.font.funcsynopsisinfo.html | 23 + DOCBOOK/doc/manpages/man.font.links.html | 56 + .../doc/manpages/man.font.table.headings.html | 23 + .../doc/manpages/man.font.table.title.html | 23 + .../doc/manpages/man.funcsynopsis.style.html | 17 + .../man.hyphenate.computer.inlines.html | 35 + .../doc/manpages/man.hyphenate.filenames.html | 40 + DOCBOOK/doc/manpages/man.hyphenate.html | 52 + DOCBOOK/doc/manpages/man.hyphenate.urls.html | 39 + DOCBOOK/doc/manpages/man.indent.blurbs.html | 26 + DOCBOOK/doc/manpages/man.indent.lists.html | 28 + DOCBOOK/doc/manpages/man.indent.refsect.html | 59 + .../doc/manpages/man.indent.verbatims.html | 26 + DOCBOOK/doc/manpages/man.indent.width.html | 32 + DOCBOOK/doc/manpages/man.justify.html | 45 + DOCBOOK/doc/manpages/man.output.base.dir.html | 32 + .../man.output.better.ps.enabled.html | 54 + DOCBOOK/doc/manpages/man.output.encoding.html | 46 + .../manpages/man.output.in.separate.dir.html | 25 + .../man.output.lang.in.name.enabled.html | 40 + .../manpages/man.output.manifest.enabled.html | 20 + .../man.output.manifest.filename.html | 22 + DOCBOOK/doc/manpages/man.output.quietly.html | 30 + .../manpages/man.output.subdirs.enabled.html | 33 + .../doc/manpages/man.segtitle.suppress.html | 21 + .../doc/manpages/man.string.subst.map.html | 146 + .../man.string.subst.map.local.post.html | 27 + .../man.string.subst.map.local.pre.html | 27 + .../man.subheading.divider.enabled.html | 30 + .../doc/manpages/man.subheading.divider.html | 30 + .../manpages/man.table.footnotes.divider.html | 22 + .../doc/manpages/man.th.extra1.suppress.html | 25 + .../manpages/man.th.extra2.max.length.html | 36 + .../doc/manpages/man.th.extra2.suppress.html | 37 + .../manpages/man.th.extra3.max.length.html | 35 + .../doc/manpages/man.th.extra3.suppress.html | 27 + .../doc/manpages/man.th.title.max.length.html | 56 + DOCBOOK/doc/manpages/other.html | 10 + DOCBOOK/doc/manpages/output.html | 22 + .../refentry.date.profile.enabled.html | 39 + .../doc/manpages/refentry.date.profile.html | 31 + .../refentry.manual.fallback.profile.html | 41 + .../refentry.manual.profile.enabled.html | 40 + .../doc/manpages/refentry.manual.profile.html | 57 + .../manpages/refentry.meta.get.quietly.html | 30 + .../refentry.source.fallback.profile.html | 42 + .../refentry.source.name.profile.enabled.html | 41 + .../refentry.source.name.profile.html | 69 + .../refentry.source.name.suppress.html | 35 + .../refentry.version.profile.enabled.html | 40 + .../manpages/refentry.version.profile.html | 34 + .../manpages/refentry.version.suppress.html | 36 + DOCBOOK/doc/manpages/reference.css | 79 + DOCBOOK/doc/manpages/refmeta.html | 30 + DOCBOOK/doc/manpages/synopsis.html | 6 + DOCBOOK/doc/manpages/th.html | 16 + DOCBOOK/doc/param.html | 24 + DOCBOOK/doc/pi/dbchoice_choice.html | 43 + DOCBOOK/doc/pi/dbcmdlist.html | 25 + DOCBOOK/doc/pi/dbfo-need.html | 36 + DOCBOOK/doc/pi/dbfo_background-color.html | 32 + DOCBOOK/doc/pi/dbfo_bgcolor.html | 32 + DOCBOOK/doc/pi/dbfo_float-type.html | 40 + DOCBOOK/doc/pi/dbfo_funcsynopsis-style.html | 35 + .../doc/pi/dbfo_glossary-presentation.html | 38 + .../doc/pi/dbfo_glosslist-presentation.html | 38 + DOCBOOK/doc/pi/dbfo_glossterm-width.html | 39 + DOCBOOK/doc/pi/dbfo_keep-together.html | 48 + DOCBOOK/doc/pi/dbfo_label-width.html | 31 + .../doc/pi/dbfo_linenumbering.everyNth.html | 36 + .../doc/pi/dbfo_linenumbering.separator.html | 35 + DOCBOOK/doc/pi/dbfo_linenumbering.width.html | 35 + DOCBOOK/doc/pi/dbfo_list-presentation.html | 52 + DOCBOOK/doc/pi/dbfo_list-width.html | 27 + DOCBOOK/doc/pi/dbfo_orientation.html | 27 + DOCBOOK/doc/pi/dbfo_pgwide.html | 36 + DOCBOOK/doc/pi/dbfo_rotated-width.html | 29 + DOCBOOK/doc/pi/dbfo_row-height.html | 29 + DOCBOOK/doc/pi/dbfo_sidebar-width.html | 38 + DOCBOOK/doc/pi/dbfo_start.html | 35 + DOCBOOK/doc/pi/dbfo_table-width.html | 33 + DOCBOOK/doc/pi/dbfo_term-width.html | 30 + DOCBOOK/doc/pi/dbfo_toc.html | 36 + DOCBOOK/doc/pi/dbfunclist.html | 25 + DOCBOOK/doc/pi/dbhh.html | 33 + DOCBOOK/doc/pi/dbhtml-include_href.html | 64 + DOCBOOK/doc/pi/dbhtml_background-color.html | 32 + DOCBOOK/doc/pi/dbhtml_bgcolor.html | 29 + DOCBOOK/doc/pi/dbhtml_cellpadding.html | 36 + DOCBOOK/doc/pi/dbhtml_cellspacing.html | 36 + DOCBOOK/doc/pi/dbhtml_class.html | 30 + DOCBOOK/doc/pi/dbhtml_dir.html | 66 + DOCBOOK/doc/pi/dbhtml_filename.html | 44 + DOCBOOK/doc/pi/dbhtml_funcsynopsis-style.html | 35 + DOCBOOK/doc/pi/dbhtml_img.src.path.html | 39 + DOCBOOK/doc/pi/dbhtml_label-width.html | 29 + .../doc/pi/dbhtml_linenumbering.everyNth.html | 36 + .../pi/dbhtml_linenumbering.separator.html | 35 + .../doc/pi/dbhtml_linenumbering.width.html | 35 + DOCBOOK/doc/pi/dbhtml_list-presentation.html | 48 + DOCBOOK/doc/pi/dbhtml_list-width.html | 30 + DOCBOOK/doc/pi/dbhtml_row-height.html | 29 + DOCBOOK/doc/pi/dbhtml_start.html | 35 + DOCBOOK/doc/pi/dbhtml_stop-chunking.html | 28 + DOCBOOK/doc/pi/dbhtml_table-summary.html | 33 + DOCBOOK/doc/pi/dbhtml_table-width.html | 34 + DOCBOOK/doc/pi/dbhtml_term-presentation.html | 38 + DOCBOOK/doc/pi/dbhtml_term-separator.html | 34 + DOCBOOK/doc/pi/dbhtml_term-width.html | 30 + DOCBOOK/doc/pi/dbhtml_toc.html | 36 + DOCBOOK/doc/pi/dbman_funcsynopsis-style.html | 36 + DOCBOOK/doc/pi/dbtex_delims.html | 39 + DOCBOOK/doc/pi/dbtimestamp.html | 38 + DOCBOOK/doc/pi/index.html | 30 + DOCBOOK/doc/pi/pi-common.html | 32 + DOCBOOK/doc/pi/pi-fo.html | 81 + DOCBOOK/doc/pi/pi-html.html | 82 + DOCBOOK/doc/pi/pi-man.html | 27 + DOCBOOK/doc/pi/reference.css | 79 + DOCBOOK/doc/refentry/reference.css | 79 + DOCBOOK/doc/reference.css | 79 + DOCBOOK/doc/reference.html | 45 + DOCBOOK/doc/reference.pdf.gz | Bin 0 -> 459871 bytes DOCBOOK/doc/reference.txt.gz | Bin 0 -> 148283 bytes DOCBOOK/doc/roundtrip/index.html | 21 + DOCBOOK/doc/roundtrip/pages.template.html | 22 + DOCBOOK/doc/roundtrip/reference.css | 79 + DOCBOOK/doc/roundtrip/wordml.template.html | 22 + DOCBOOK/doc/slides/active.toc.html | 22 + DOCBOOK/doc/slides/body.bg.color.html | 21 + DOCBOOK/doc/slides/bullet.image.html | 21 + DOCBOOK/doc/slides/css.stylesheet.dir.html | 26 + DOCBOOK/doc/slides/css.stylesheet.html | 22 + DOCBOOK/doc/slides/disable.collapsible.html | 21 + DOCBOOK/doc/slides/disable.incremental.html | 21 + DOCBOOK/doc/slides/dynamic.toc.html | 22 + DOCBOOK/doc/slides/fo.html | 33 + .../doc/slides/foil.footer.properties.html | 20 + .../doc/slides/foil.header.properties.html | 29 + .../doc/slides/foil.master.properties.html | 39 + .../slides/foil.page-sequence.properties.html | 24 + DOCBOOK/doc/slides/foil.properties.html | 29 + .../slides/foil.region-after.properties.html | 25 + .../slides/foil.region-before.properties.html | 27 + .../slides/foil.region-body.properties.html | 30 + .../doc/slides/foil.subtitle.properties.html | 29 + DOCBOOK/doc/slides/foil.title.master.html | 22 + DOCBOOK/doc/slides/foil.title.properties.html | 24 + DOCBOOK/doc/slides/foil.title.size.html | 25 + DOCBOOK/doc/slides/foilgroup.properties.html | 24 + DOCBOOK/doc/slides/foilgroup.toc.html | 22 + DOCBOOK/doc/slides/frames.html | 30 + DOCBOOK/doc/slides/generate.copyright.html | 21 + .../generate.foilgroup.numbered.toc.html | 22 + .../doc/slides/generate.foilgroup.toc.html | 21 + DOCBOOK/doc/slides/generate.handoutnotes.html | 21 + DOCBOOK/doc/slides/generate.page.number.html | 31 + DOCBOOK/doc/slides/generate.pubdate.html | 21 + DOCBOOK/doc/slides/generate.speakernotes.html | 21 + DOCBOOK/doc/slides/generate.titlepage.html | 21 + DOCBOOK/doc/slides/graphics.dir.html | 26 + DOCBOOK/doc/slides/graphics.html | 38 + .../doc/slides/handoutnotes.properties.html | 21 + DOCBOOK/doc/slides/hidetoc.image.html | 22 + DOCBOOK/doc/slides/home.image.html | 20 + DOCBOOK/doc/slides/html.html | 22 + DOCBOOK/doc/slides/index.html | 27 + DOCBOOK/doc/slides/javascript.html | 20 + DOCBOOK/doc/slides/keyboard.nav.html | 22 + DOCBOOK/doc/slides/l10n.html | 16 + DOCBOOK/doc/slides/minus.image.html | 22 + DOCBOOK/doc/slides/mml.embedding.mode.html | 31 + .../doc/slides/multiframe.bottom.bgcolor.html | 21 + DOCBOOK/doc/slides/multiframe.html | 24 + .../slides/multiframe.navigation.height.html | 21 + .../doc/slides/multiframe.top.bgcolor.html | 21 + DOCBOOK/doc/slides/nav.separator.html | 21 + DOCBOOK/doc/slides/next.image.html | 20 + DOCBOOK/doc/slides/no.home.image.html | 20 + DOCBOOK/doc/slides/no.next.image.html | 20 + DOCBOOK/doc/slides/no.prev.image.html | 20 + DOCBOOK/doc/slides/no.toc.image.html | 20 + DOCBOOK/doc/slides/no.up.image.html | 20 + DOCBOOK/doc/slides/output.indent.html | 23 + DOCBOOK/doc/slides/overlay.html | 25 + DOCBOOK/doc/slides/overlay.js.html | 21 + DOCBOOK/doc/slides/overlay.logo.html | 21 + DOCBOOK/doc/slides/plus.image.html | 22 + DOCBOOK/doc/slides/prev.image.html | 20 + DOCBOOK/doc/slides/propsets.html | 48 + DOCBOOK/doc/slides/reference.css | 79 + .../doc/slides/running.foot.properties.html | 27 + DOCBOOK/doc/slides/s5.controls.html | 21 + DOCBOOK/doc/slides/s5.defaultview.html | 21 + DOCBOOK/doc/slides/s5.html | 21 + DOCBOOK/doc/slides/s5.opera.css.html | 21 + DOCBOOK/doc/slides/s5.outline.css.html | 20 + DOCBOOK/doc/slides/s5.path.prefix.html | 22 + DOCBOOK/doc/slides/s5.print.css.html | 20 + DOCBOOK/doc/slides/s5.slides.css.html | 20 + DOCBOOK/doc/slides/s5.slides.js.html | 21 + DOCBOOK/doc/slides/script.dir.html | 26 + DOCBOOK/doc/slides/show.foil.number.html | 21 + DOCBOOK/doc/slides/showtoc.image.html | 22 + DOCBOOK/doc/slides/slide.font.family.html | 20 + .../doc/slides/slide.title.font.family.html | 20 + DOCBOOK/doc/slides/slides.js.html | 21 + DOCBOOK/doc/slides/slides.properties.html | 24 + .../slides.titlepage.author.properties.html | 25 + ...ides.titlepage.authorgroup.properties.html | 21 + ...lides.titlepage.corpauthor.properties.html | 25 + .../slides.titlepage.master.properties.html | 39 + .../slides.titlepage.pubdate.properties.html | 25 + ...ides.titlepage.region-body.properties.html | 26 + .../slides.titlepage.subtitle.properties.html | 27 + .../slides.titlepage.title.properties.html | 33 + DOCBOOK/doc/slides/slidy.duration.html | 22 + DOCBOOK/doc/slides/slidy.html | 15 + DOCBOOK/doc/slides/slidy.path.prefix.html | 22 + DOCBOOK/doc/slides/slidy.slidy.css.html | 20 + DOCBOOK/doc/slides/slidy.slidy.js.html | 20 + DOCBOOK/doc/slides/slidy.user.css.html | 20 + .../doc/slides/speakernote.properties.html | 25 + .../doc/slides/speakernotes.properties.html | 21 + DOCBOOK/doc/slides/svg.embedding.mode.html | 31 + DOCBOOK/doc/slides/text.home.html | 20 + DOCBOOK/doc/slides/text.next.html | 20 + DOCBOOK/doc/slides/text.prev.html | 20 + DOCBOOK/doc/slides/text.toc.html | 20 + DOCBOOK/doc/slides/text.up.html | 20 + DOCBOOK/doc/slides/titlefoil.html.html | 20 + DOCBOOK/doc/slides/toc.bg.color.html | 20 + DOCBOOK/doc/slides/toc.hide.show.html | 26 + DOCBOOK/doc/slides/toc.html.html | 20 + DOCBOOK/doc/slides/toc.image.html | 20 + DOCBOOK/doc/slides/toc.row.height.html | 25 + DOCBOOK/doc/slides/toc.width.html | 21 + DOCBOOK/doc/slides/ua.js.html | 21 + DOCBOOK/doc/slides/up.image.html | 20 + DOCBOOK/doc/slides/user.css.html | 22 + DOCBOOK/doc/slides/wrap.slidecontent.html | 21 + DOCBOOK/doc/slides/xbCollapsibleLists.js.html | 21 + DOCBOOK/doc/slides/xbDOM.js.html | 21 + DOCBOOK/doc/slides/xbLibrary.js.html | 21 + DOCBOOK/doc/slides/xbStyle.js.html | 21 + DOCBOOK/doc/slides/xhtml.html | 31 + DOCBOOK/doc/template/attr_star_in_copy.html | 15 + .../attr_star_in_copy.literal.atts.html | 16 + .../template/attr_star_in_document.order.html | 31 + DOCBOOK/doc/template/index.html | 56 + DOCBOOK/doc/template/or.html | 14 + .../template/or_in_titlepage.subrules.html | 16 + DOCBOOK/doc/template/reference.css | 79 + DOCBOOK/doc/template/star.html | 15 + DOCBOOK/doc/template/star_in_copy.html | 15 + .../doc/template/star_in_document.order.html | 31 + .../star_in_titlepage.specialrules.html | 17 + .../template/star_in_titlepage.subrules.html | 16 + .../template/template.element-or-list.html | 22 + DOCBOOK/doc/template/templates.html | 22 + DOCBOOK/doc/template/titlepage-before.html | 16 + DOCBOOK/doc/template/titlepage-content.html | 111 + DOCBOOK/doc/template/titlepage-separator.html | 16 + DOCBOOK/doc/template/titlepage.html | 63 + DOCBOOK/doc/utility/reference.css | 79 + DOCBOOK/doc/warranty.html | 11 + DOCBOOK/doc/website/autolayout-file.html | 22 + .../doc/website/banner.before.navigation.html | 18 + DOCBOOK/doc/website/body.attributes.html | 24 + DOCBOOK/doc/website/currentpage.marker.html | 18 + DOCBOOK/doc/website/dry-run.html | 20 + DOCBOOK/doc/website/feedback.href.html | 21 + DOCBOOK/doc/website/feedback.link.text.html | 21 + DOCBOOK/doc/website/feedback.with.ids.html | 20 + DOCBOOK/doc/website/filename-prefix.html | 21 + DOCBOOK/doc/website/footer.hr.html | 19 + DOCBOOK/doc/website/general.html | 34 + DOCBOOK/doc/website/header.hr.html | 19 + DOCBOOK/doc/website/index.html | 19 + DOCBOOK/doc/website/nav.html | 16 + DOCBOOK/doc/website/nav.table.summary.html | 20 + DOCBOOK/doc/website/navbgcolor.html | 19 + DOCBOOK/doc/website/navbodywidth.html | 19 + DOCBOOK/doc/website/navtocwidth.html | 19 + DOCBOOK/doc/website/output-root.html | 21 + DOCBOOK/doc/website/rebuild-all.html | 26 + DOCBOOK/doc/website/reference.css | 79 + DOCBOOK/doc/website/sequential.links.html | 18 + .../doc/website/suppress.homepage.title.html | 18 + DOCBOOK/doc/website/table.spacer.image.html | 19 + DOCBOOK/doc/website/textbgcolor.html | 19 + DOCBOOK/doc/website/toc.blank.graphic.html | 21 + DOCBOOK/doc/website/toc.blank.image.html | 20 + DOCBOOK/doc/website/toc.blank.text.html | 20 + DOCBOOK/doc/website/toc.html | 22 + DOCBOOK/doc/website/toc.pointer.graphic.html | 21 + DOCBOOK/doc/website/toc.pointer.image.html | 20 + DOCBOOK/doc/website/toc.pointer.text.html | 20 + DOCBOOK/doc/website/toc.spacer.graphic.html | 21 + DOCBOOK/doc/website/toc.spacer.image.html | 20 + DOCBOOK/doc/website/toc.spacer.text.html | 20 + DOCBOOK/docsrc/authors.xml | 10 + DOCBOOK/docsrc/copyright.xml | 18 + DOCBOOK/docsrc/license.xml | 23 + DOCBOOK/docsrc/page.png | Bin 0 -> 17578 bytes DOCBOOK/docsrc/reference.css | 79 + DOCBOOK/docsrc/reference.xml | 241 + DOCBOOK/docsrc/reference.xml.included | 35597 ++++++++++++++++ DOCBOOK/docsrc/warranty.xml | 11 + DOCBOOK/eclipse/eclipse.xsl | 294 + DOCBOOK/eclipse/eclipse3.xsl | 112 + DOCBOOK/eclipse/profile-eclipse.xsl | 268 + DOCBOOK/epub/README | 88 + DOCBOOK/epub/bin/dbtoepub | 76 + DOCBOOK/epub/bin/lib/docbook.rb | 227 + DOCBOOK/epub/bin/xslt/obfuscate.xsl | 14 + DOCBOOK/epub/docbook.xsl | 1681 + DOCBOOK/epub3/CoverImage.xhtml | 14 + DOCBOOK/epub3/README | 329 + DOCBOOK/epub3/chunk.xsl | 30 + DOCBOOK/epub3/chunkfast.xsl | 70 + DOCBOOK/epub3/cover.jpg | Bin 0 -> 792194 bytes DOCBOOK/epub3/docbook-epub.css.xml | 152 + DOCBOOK/epub3/docbook.xsl | 20 + DOCBOOK/epub3/epub3-chunk-mods.xsl | 52 + DOCBOOK/epub3/epub3-element-mods.xsl | 2508 ++ DOCBOOK/epub3/profile-chunk.xsl | 55 + DOCBOOK/epub3/profile-docbook.xsl | 407 + DOCBOOK/epub3/titlepage.templates.xml | 712 + DOCBOOK/epub3/titlepage.templates.xsl | 3842 ++ DOCBOOK/fo/admon.xsl | 131 + DOCBOOK/fo/annotations.xsl | 20 + DOCBOOK/fo/autoidx-kimber.xsl | 173 + DOCBOOK/fo/autoidx-kosek.xsl | 140 + DOCBOOK/fo/autoidx-ng.xsl | 22 + DOCBOOK/fo/autoidx.xsl | 1302 + DOCBOOK/fo/autotoc.xsl | 962 + DOCBOOK/fo/axf.xsl | 115 + DOCBOOK/fo/biblio-iso690.xsl | 1302 + DOCBOOK/fo/biblio.xsl | 1178 + DOCBOOK/fo/block.xsl | 674 + DOCBOOK/fo/callout.xsl | 315 + DOCBOOK/fo/component.xsl | 940 + DOCBOOK/fo/division.xsl | 608 + DOCBOOK/fo/docbook.xsl | 332 + DOCBOOK/fo/ebnf.xsl | 326 + DOCBOOK/fo/fo-rtf.xsl | 155 + DOCBOOK/fo/fo.xsl | 119 + DOCBOOK/fo/footnote.xsl | 221 + DOCBOOK/fo/fop.xsl | 95 + DOCBOOK/fo/fop1.xsl | 230 + DOCBOOK/fo/formal.xsl | 644 + DOCBOOK/fo/glossary.xsl | 1170 + DOCBOOK/fo/graphics.xsl | 814 + DOCBOOK/fo/highlight.xsl | 78 + DOCBOOK/fo/htmltbl.xsl | 427 + DOCBOOK/fo/index.xsl | 486 + DOCBOOK/fo/info.xsl | 36 + DOCBOOK/fo/inline.xsl | 1347 + DOCBOOK/fo/keywords.xsl | 23 + DOCBOOK/fo/lists.xsl | 1376 + DOCBOOK/fo/math.xsl | 88 + DOCBOOK/fo/pagesetup.xsl | 3488 ++ DOCBOOK/fo/param.xml | 13331 ++++++ DOCBOOK/fo/param.xsl | 995 + DOCBOOK/fo/passivetex.xsl | 38 + DOCBOOK/fo/pdf2index | 140 + DOCBOOK/fo/pi.xml | 1002 + DOCBOOK/fo/pi.xsl | 1099 + DOCBOOK/fo/profile-docbook.xsl | 287 + DOCBOOK/fo/ptc.xsl | 79 + DOCBOOK/fo/qandaset.xsl | 397 + DOCBOOK/fo/refentry.xsl | 666 + DOCBOOK/fo/sections.xsl | 758 + DOCBOOK/fo/spaces.xsl | 263 + DOCBOOK/fo/synop.xsl | 1009 + DOCBOOK/fo/table.xml | 135 + DOCBOOK/fo/table.xsl | 1694 + DOCBOOK/fo/task.xsl | 93 + DOCBOOK/fo/titlepage.templates.xml | 1579 + DOCBOOK/fo/titlepage.templates.xsl | 5973 +++ DOCBOOK/fo/titlepage.xsl | 794 + DOCBOOK/fo/toc.xsl | 334 + DOCBOOK/fo/verbatim.xsl | 497 + DOCBOOK/fo/xep.xsl | 185 + DOCBOOK/fo/xref.xsl | 1555 + DOCBOOK/highlighting/README | 16 + DOCBOOK/highlighting/bourne-hl.xml | 95 + DOCBOOK/highlighting/c-hl.xml | 117 + DOCBOOK/highlighting/cmake-hl.xml | 187 + DOCBOOK/highlighting/common.xsl | 121 + DOCBOOK/highlighting/cpp-hl.xml | 151 + DOCBOOK/highlighting/csharp-hl.xml | 194 + DOCBOOK/highlighting/css21-hl.xml | 176 + DOCBOOK/highlighting/delphi-hl.xml | 220 + DOCBOOK/highlighting/ini-hl.xml | 45 + DOCBOOK/highlighting/java-hl.xml | 117 + DOCBOOK/highlighting/javascript-hl.xml | 147 + DOCBOOK/highlighting/lua-hl.xml | 140 + DOCBOOK/highlighting/m2-hl.xml | 90 + DOCBOOK/highlighting/myxml-hl.xml | 116 + DOCBOOK/highlighting/perl-hl.xml | 120 + DOCBOOK/highlighting/php-hl.xml | 154 + DOCBOOK/highlighting/python-hl.xml | 100 + DOCBOOK/highlighting/ruby-hl.xml | 109 + DOCBOOK/highlighting/sql1999-hl.xml | 496 + DOCBOOK/highlighting/sql2003-hl.xml | 565 + DOCBOOK/highlighting/sql92-hl.xml | 339 + DOCBOOK/highlighting/tcl-hl.xml | 180 + DOCBOOK/highlighting/upc-hl.xml | 133 + DOCBOOK/highlighting/xslthl-config.xml | 56 + DOCBOOK/html/admon.xsl | 141 + DOCBOOK/html/annotations.xsl | 171 + DOCBOOK/html/autoidx-kimber.xsl | 166 + DOCBOOK/html/autoidx-kosek.xsl | 121 + DOCBOOK/html/autoidx-ng.xsl | 22 + DOCBOOK/html/autoidx.xsl | 798 + DOCBOOK/html/autotoc.xsl | 758 + DOCBOOK/html/biblio-iso690.xsl | 1302 + DOCBOOK/html/biblio.xsl | 1384 + DOCBOOK/html/block.xsl | 585 + DOCBOOK/html/callout.xsl | 223 + DOCBOOK/html/changebars.xsl | 124 + DOCBOOK/html/chunk-changebars.xsl | 100 + DOCBOOK/html/chunk-code.xsl | 698 + DOCBOOK/html/chunk-common.xsl | 2005 + DOCBOOK/html/chunk.xsl | 53 + DOCBOOK/html/chunker.xsl | 453 + DOCBOOK/html/chunkfast.xsl | 73 + DOCBOOK/html/chunktoc.xsl | 548 + DOCBOOK/html/component.xsl | 472 + DOCBOOK/html/division.xsl | 214 + DOCBOOK/html/docbook.css.xml | 110 + DOCBOOK/html/docbook.xsl | 563 + DOCBOOK/html/ebnf.xsl | 332 + DOCBOOK/html/footnote.xsl | 358 + DOCBOOK/html/formal.xsl | 513 + DOCBOOK/html/glossary.xsl | 530 + DOCBOOK/html/graphics.xsl | 1608 + DOCBOOK/html/highlight.xsl | 85 + DOCBOOK/html/html-rtf.xsl | 336 + DOCBOOK/html/html.xsl | 700 + DOCBOOK/html/htmltbl.xsl | 135 + DOCBOOK/html/index.xsl | 281 + DOCBOOK/html/info.xsl | 47 + DOCBOOK/html/inline.xsl | 1533 + DOCBOOK/html/keywords.xsl | 37 + DOCBOOK/html/lists.xsl | 1289 + DOCBOOK/html/maketoc.xsl | 87 + DOCBOOK/html/manifest.xsl | 23 + DOCBOOK/html/math.xsl | 272 + DOCBOOK/html/oldchunker.xsl | 203 + DOCBOOK/html/onechunk.xsl | 38 + DOCBOOK/html/param.xml | 11308 +++++ DOCBOOK/html/param.xsl | 445 + DOCBOOK/html/pi.xml | 1152 + DOCBOOK/html/pi.xsl | 1297 + DOCBOOK/html/profile-chunk-code.xsl | 638 + DOCBOOK/html/profile-chunk.xsl | 53 + DOCBOOK/html/profile-docbook.xsl | 507 + DOCBOOK/html/profile-onechunk.xsl | 38 + DOCBOOK/html/qandaset.xsl | 457 + DOCBOOK/html/refentry.xsl | 307 + DOCBOOK/html/sections.xsl | 638 + DOCBOOK/html/synop.xsl | 1655 + DOCBOOK/html/table.xsl | 1210 + DOCBOOK/html/task.xsl | 79 + DOCBOOK/html/titlepage.templates.xml | 738 + DOCBOOK/html/titlepage.templates.xsl | 4005 ++ DOCBOOK/html/titlepage.xsl | 1125 + DOCBOOK/html/toc.xsl | 354 + DOCBOOK/html/verbatim.xsl | 411 + DOCBOOK/html/xref.xsl | 1313 + DOCBOOK/htmlhelp/htmlhelp-common.xsl | 1108 + DOCBOOK/htmlhelp/htmlhelp.xsl | 23 + DOCBOOK/htmlhelp/profile-htmlhelp-common.xsl | 1082 + DOCBOOK/htmlhelp/profile-htmlhelp.xsl | 23 + DOCBOOK/images/Thumbs.db | Bin 0 -> 13312 bytes DOCBOOK/images/annot-close.png | Bin 0 -> 207 bytes DOCBOOK/images/annot-open.png | Bin 0 -> 837 bytes DOCBOOK/images/blank.png | Bin 0 -> 374 bytes DOCBOOK/images/callouts/1.gif | Bin 0 -> 889 bytes DOCBOOK/images/callouts/1.png | Bin 0 -> 329 bytes DOCBOOK/images/callouts/1.svg | 15 + DOCBOOK/images/callouts/10.gif | Bin 0 -> 929 bytes DOCBOOK/images/callouts/10.png | Bin 0 -> 361 bytes DOCBOOK/images/callouts/10.svg | 18 + DOCBOOK/images/callouts/11.gif | Bin 0 -> 202 bytes DOCBOOK/images/callouts/11.png | Bin 0 -> 565 bytes DOCBOOK/images/callouts/11.svg | 16 + DOCBOOK/images/callouts/12.gif | Bin 0 -> 210 bytes DOCBOOK/images/callouts/12.png | Bin 0 -> 617 bytes DOCBOOK/images/callouts/12.svg | 18 + DOCBOOK/images/callouts/13.gif | Bin 0 -> 209 bytes DOCBOOK/images/callouts/13.png | Bin 0 -> 623 bytes DOCBOOK/images/callouts/13.svg | 20 + DOCBOOK/images/callouts/14.gif | Bin 0 -> 205 bytes DOCBOOK/images/callouts/14.png | Bin 0 -> 411 bytes DOCBOOK/images/callouts/14.svg | 17 + DOCBOOK/images/callouts/15.gif | Bin 0 -> 210 bytes DOCBOOK/images/callouts/15.png | Bin 0 -> 640 bytes DOCBOOK/images/callouts/15.svg | 19 + DOCBOOK/images/callouts/16.svg | 20 + DOCBOOK/images/callouts/17.svg | 17 + DOCBOOK/images/callouts/18.svg | 21 + DOCBOOK/images/callouts/19.svg | 20 + DOCBOOK/images/callouts/2.gif | Bin 0 -> 907 bytes DOCBOOK/images/callouts/2.png | Bin 0 -> 353 bytes DOCBOOK/images/callouts/2.svg | 17 + DOCBOOK/images/callouts/20.svg | 20 + DOCBOOK/images/callouts/21.svg | 18 + DOCBOOK/images/callouts/22.svg | 20 + DOCBOOK/images/callouts/23.svg | 22 + DOCBOOK/images/callouts/24.svg | 19 + DOCBOOK/images/callouts/25.svg | 21 + DOCBOOK/images/callouts/26.svg | 22 + DOCBOOK/images/callouts/27.svg | 19 + DOCBOOK/images/callouts/28.svg | 23 + DOCBOOK/images/callouts/29.svg | 22 + DOCBOOK/images/callouts/3.gif | Bin 0 -> 914 bytes DOCBOOK/images/callouts/3.png | Bin 0 -> 350 bytes DOCBOOK/images/callouts/3.svg | 19 + DOCBOOK/images/callouts/30.svg | 22 + DOCBOOK/images/callouts/4.gif | Bin 0 -> 907 bytes DOCBOOK/images/callouts/4.png | Bin 0 -> 345 bytes DOCBOOK/images/callouts/4.svg | 16 + DOCBOOK/images/callouts/5.gif | Bin 0 -> 916 bytes DOCBOOK/images/callouts/5.png | Bin 0 -> 348 bytes DOCBOOK/images/callouts/5.svg | 18 + DOCBOOK/images/callouts/6.gif | Bin 0 -> 218 bytes DOCBOOK/images/callouts/6.png | Bin 0 -> 355 bytes DOCBOOK/images/callouts/6.svg | 19 + DOCBOOK/images/callouts/7.gif | Bin 0 -> 907 bytes DOCBOOK/images/callouts/7.png | Bin 0 -> 344 bytes DOCBOOK/images/callouts/7.svg | 16 + DOCBOOK/images/callouts/8.gif | Bin 0 -> 918 bytes DOCBOOK/images/callouts/8.png | Bin 0 -> 357 bytes DOCBOOK/images/callouts/8.svg | 20 + DOCBOOK/images/callouts/9.gif | Bin 0 -> 923 bytes DOCBOOK/images/callouts/9.png | Bin 0 -> 357 bytes DOCBOOK/images/callouts/9.svg | 19 + DOCBOOK/images/callouts/Thumbs.db | Bin 0 -> 9728 bytes DOCBOOK/images/caution.gif | Bin 0 -> 743 bytes DOCBOOK/images/caution.png | Bin 0 -> 1250 bytes DOCBOOK/images/caution.svg | 25 + DOCBOOK/images/caution.tif | Bin 0 -> 1978 bytes DOCBOOK/images/colorsvg/caution.svg | 141 + DOCBOOK/images/colorsvg/home.svg | 498 + DOCBOOK/images/colorsvg/important.svg | 239 + DOCBOOK/images/colorsvg/next.svg | 338 + DOCBOOK/images/colorsvg/note.svg | 200 + DOCBOOK/images/colorsvg/prev.svg | 338 + DOCBOOK/images/colorsvg/tip.svg | 367 + DOCBOOK/images/colorsvg/up.svg | 338 + DOCBOOK/images/colorsvg/warning.svg | 232 + DOCBOOK/images/draft.png | Bin 0 -> 16150 bytes DOCBOOK/images/draft.svg | 14 + DOCBOOK/images/home.gif | Bin 0 -> 321 bytes DOCBOOK/images/home.png | Bin 0 -> 1156 bytes DOCBOOK/images/home.svg | 26 + DOCBOOK/images/important.gif | Bin 0 -> 1003 bytes DOCBOOK/images/important.png | Bin 0 -> 722 bytes DOCBOOK/images/important.svg | 25 + DOCBOOK/images/important.tif | Bin 0 -> 2020 bytes DOCBOOK/images/next.gif | Bin 0 -> 1083 bytes DOCBOOK/images/next.png | Bin 0 -> 1150 bytes DOCBOOK/images/next.svg | 19 + DOCBOOK/images/note.gif | Bin 0 -> 580 bytes DOCBOOK/images/note.png | Bin 0 -> 490 bytes DOCBOOK/images/note.svg | 33 + DOCBOOK/images/note.tif | Bin 0 -> 460 bytes DOCBOOK/images/prev.gif | Bin 0 -> 1118 bytes DOCBOOK/images/prev.png | Bin 0 -> 1132 bytes DOCBOOK/images/prev.svg | 19 + DOCBOOK/images/tip.gif | Bin 0 -> 598 bytes DOCBOOK/images/tip.png | Bin 0 -> 449 bytes DOCBOOK/images/tip.svg | 31 + DOCBOOK/images/tip.tif | Bin 0 -> 420 bytes DOCBOOK/images/toc-blank.png | Bin 0 -> 318 bytes DOCBOOK/images/toc-minus.png | Bin 0 -> 259 bytes DOCBOOK/images/toc-plus.png | Bin 0 -> 264 bytes DOCBOOK/images/up.gif | Bin 0 -> 1089 bytes DOCBOOK/images/up.png | Bin 0 -> 1111 bytes DOCBOOK/images/up.svg | 19 + DOCBOOK/images/warning.gif | Bin 0 -> 743 bytes DOCBOOK/images/warning.png | Bin 0 -> 1241 bytes DOCBOOK/images/warning.svg | 23 + DOCBOOK/images/warning.tif | Bin 0 -> 1990 bytes DOCBOOK/install.sh | 977 + DOCBOOK/javahelp/javahelp.xsl | 609 + DOCBOOK/javahelp/profile-javahelp.xsl | 544 + DOCBOOK/lib/lib.xsl | 533 + DOCBOOK/log | 656 + DOCBOOK/manpages/ChangeLog.20020917 | 195 + DOCBOOK/manpages/block.xsl | 412 + DOCBOOK/manpages/charmap.groff.xsl | 6014 +++ DOCBOOK/manpages/docbook.xsl | 302 + DOCBOOK/manpages/endnotes.xsl | 587 + DOCBOOK/manpages/html-synop.xsl | 1670 + DOCBOOK/manpages/info.xsl | 801 + DOCBOOK/manpages/inline.xsl | 221 + DOCBOOK/manpages/lists.xsl | 617 + DOCBOOK/manpages/other.xsl | 889 + DOCBOOK/manpages/param.xml | 3220 ++ DOCBOOK/manpages/param.xsl | 196 + DOCBOOK/manpages/pi.xml | 70 + DOCBOOK/manpages/pi.xsl | 80 + DOCBOOK/manpages/profile-docbook.xsl | 282 + DOCBOOK/manpages/refentry.xsl | 321 + DOCBOOK/manpages/synop.xsl | 433 + DOCBOOK/manpages/table.xsl | 676 + DOCBOOK/manpages/utility.xsl | 560 + DOCBOOK/params/abstract.notitle.enabled.xml | 22 + DOCBOOK/params/abstract.properties.xml | 32 + DOCBOOK/params/abstract.title.properties.xml | 39 + DOCBOOK/params/activate.external.olinks.xml | 69 + DOCBOOK/params/active.toc.xml | 29 + DOCBOOK/params/ade.extensions.xml | 32 + DOCBOOK/params/admon.graphics.extension.xml | 35 + DOCBOOK/params/admon.graphics.path.xml | 27 + DOCBOOK/params/admon.graphics.xml | 29 + DOCBOOK/params/admon.style.xml | 31 + DOCBOOK/params/admon.textlabel.xml | 32 + DOCBOOK/params/admonition.properties.xml | 25 + .../params/admonition.title.properties.xml | 32 + DOCBOOK/params/alignment.xml | 41 + DOCBOOK/params/annotate.toc.xml | 28 + DOCBOOK/params/annotation.css.xml | 71 + DOCBOOK/params/annotation.graphic.close.xml | 31 + DOCBOOK/params/annotation.graphic.open.xml | 28 + DOCBOOK/params/annotation.js.xml | 33 + DOCBOOK/params/annotation.support.xml | 29 + DOCBOOK/params/appendix.autolabel.xml | 73 + DOCBOOK/params/arbortext.extensions.xml | 30 + .../article.appendix.title.properties.xml | 30 + DOCBOOK/params/author.othername.in.middle.xml | 31 + DOCBOOK/params/autolayout-file.xml | 29 + DOCBOOK/params/autotoc.label.in.hyperlink.xml | 29 + DOCBOOK/params/autotoc.label.separator.xml | 27 + DOCBOOK/params/axf.extensions.xml | 33 + DOCBOOK/params/banner.before.navigation.xml | 25 + DOCBOOK/params/base.dir.xml | 38 + DOCBOOK/params/biblioentry.item.separator.xml | 26 + DOCBOOK/params/biblioentry.properties.xml | 28 + DOCBOOK/params/bibliography.collection.xml | 122 + DOCBOOK/params/bibliography.numbered.xml | 27 + DOCBOOK/params/bibliography.style.xml | 35 + DOCBOOK/params/blockquote.properties.xml | 34 + DOCBOOK/params/blurb.on.titlepage.enabled.xml | 31 + DOCBOOK/params/body.attributes.xml | 31 + DOCBOOK/params/body.bg.color.xml | 28 + DOCBOOK/params/body.end.indent.xml | 37 + DOCBOOK/params/body.font.family.xml | 37 + DOCBOOK/params/body.font.master.xml | 30 + DOCBOOK/params/body.font.size.xml | 31 + DOCBOOK/params/body.margin.bottom.xml | 29 + DOCBOOK/params/body.margin.inner.xml | 52 + DOCBOOK/params/body.margin.outer.xml | 53 + DOCBOOK/params/body.margin.top.xml | 28 + DOCBOOK/params/body.start.indent.xml | 64 + DOCBOOK/params/bookmarks.collapse.xml | 31 + DOCBOOK/params/bridgehead.in.toc.xml | 28 + DOCBOOK/params/bullet.image.xml | 28 + DOCBOOK/params/callout.defaultcolumn.xml | 30 + DOCBOOK/params/callout.graphics.extension.xml | 33 + .../params/callout.graphics.number.limit.xml | 34 + DOCBOOK/params/callout.graphics.path.xml | 31 + DOCBOOK/params/callout.graphics.xml | 30 + DOCBOOK/params/callout.icon.size.xml | 28 + DOCBOOK/params/callout.list.table.xml | 32 + DOCBOOK/params/callout.properties.xml | 23 + DOCBOOK/params/callout.unicode.font.xml | 29 + .../params/callout.unicode.number.limit.xml | 35 + .../callout.unicode.start.character.xml | 33 + DOCBOOK/params/callout.unicode.xml | 26 + DOCBOOK/params/calloutlist.properties.xml | 32 + DOCBOOK/params/callouts.extension.xml | 30 + DOCBOOK/params/chapter.autolabel.xml | 71 + DOCBOOK/params/chunk.append.xml | 30 + DOCBOOK/params/chunk.first.sections.xml | 31 + DOCBOOK/params/chunk.quietly.xml | 30 + DOCBOOK/params/chunk.section.depth.xml | 27 + DOCBOOK/params/chunk.sections.xml | 30 + DOCBOOK/params/chunk.separate.lots.xml | 36 + DOCBOOK/params/chunk.toc.xml | 30 + .../params/chunk.tocs.and.lots.has.title.xml | 28 + DOCBOOK/params/chunk.tocs.and.lots.xml | 32 + DOCBOOK/params/chunked.filename.prefix.xml | 41 + .../chunker.output.cdata-section-elements.xml | 30 + .../params/chunker.output.doctype-public.xml | 31 + .../params/chunker.output.doctype-system.xml | 31 + DOCBOOK/params/chunker.output.encoding.xml | 31 + DOCBOOK/params/chunker.output.indent.xml | 30 + DOCBOOK/params/chunker.output.media-type.xml | 35 + DOCBOOK/params/chunker.output.method.xml | 32 + .../chunker.output.omit-xml-declaration.xml | 30 + DOCBOOK/params/chunker.output.standalone.xml | 31 + DOCBOOK/params/citerefentry.link.xml | 29 + DOCBOOK/params/collect.xref.targets.xml | 33 + DOCBOOK/params/column.count.back.xml | 27 + DOCBOOK/params/column.count.body.xml | 27 + DOCBOOK/params/column.count.front.xml | 27 + DOCBOOK/params/column.count.index.xml | 27 + DOCBOOK/params/column.count.lot.xml | 28 + DOCBOOK/params/column.count.titlepage.xml | 27 + DOCBOOK/params/column.gap.back.xml | 28 + DOCBOOK/params/column.gap.body.xml | 28 + DOCBOOK/params/column.gap.front.xml | 28 + DOCBOOK/params/column.gap.index.xml | 28 + DOCBOOK/params/column.gap.lot.xml | 28 + DOCBOOK/params/column.gap.titlepage.xml | 29 + DOCBOOK/params/compact.list.item.spacing.xml | 28 + .../component.label.includes.part.label.xml | 39 + DOCBOOK/params/component.title.properties.xml | 40 + .../params/component.titlepage.properties.xml | 33 + DOCBOOK/params/contrib.inline.enabled.xml | 26 + DOCBOOK/params/crop.mark.bleed.xml | 28 + DOCBOOK/params/crop.mark.offset.xml | 28 + DOCBOOK/params/crop.mark.width.xml | 28 + DOCBOOK/params/crop.marks.xml | 28 + DOCBOOK/params/css.decoration.xml | 33 + DOCBOOK/params/css.stylesheet.dir.xml | 33 + DOCBOOK/params/css.stylesheet.xml | 29 + DOCBOOK/params/current.docid.xml | 27 + DOCBOOK/params/currentpage.marker.xml | 25 + DOCBOOK/params/custom.css.source.xml | 119 + DOCBOOK/params/default.float.class.xml | 34 + DOCBOOK/params/default.image.width.xml | 30 + DOCBOOK/params/default.table.frame.xml | 28 + DOCBOOK/params/default.table.rules.xml | 76 + DOCBOOK/params/default.table.width.xml | 26 + DOCBOOK/params/default.units.xml | 37 + DOCBOOK/params/dingbat.font.family.xml | 33 + DOCBOOK/params/disable.collapsible.xml | 28 + DOCBOOK/params/disable.incremental.xml | 28 + DOCBOOK/params/docbook.css.link.xml | 42 + DOCBOOK/params/docbook.css.source.xml | 83 + DOCBOOK/params/double.sided.xml | 41 + DOCBOOK/params/draft.mode.xml | 36 + DOCBOOK/params/draft.watermark.image.xml | 27 + DOCBOOK/params/dry-run.xml | 27 + DOCBOOK/params/dynamic.toc.xml | 29 + DOCBOOK/params/ebnf.assignment.xml | 39 + DOCBOOK/params/ebnf.statement.terminator.xml | 32 + DOCBOOK/params/ebnf.table.bgcolor.xml | 30 + DOCBOOK/params/ebnf.table.border.xml | 26 + DOCBOOK/params/eclipse.autolabel.xml | 28 + DOCBOOK/params/eclipse.plugin.id.xml | 28 + DOCBOOK/params/eclipse.plugin.name.xml | 27 + DOCBOOK/params/eclipse.plugin.provider.xml | 27 + DOCBOOK/params/editedby.enabled.xml | 27 + DOCBOOK/params/email.delimiters.enabled.xml | 34 + DOCBOOK/params/email.mailto.enabled.xml | 29 + DOCBOOK/params/emphasis.propagates.style.xml | 26 + DOCBOOK/params/entry.propagates.style.xml | 30 + DOCBOOK/params/epub.autolabel.xml | 28 + DOCBOOK/params/equation.number.properties.xml | 28 + DOCBOOK/params/equation.properties.xml | 27 + DOCBOOK/params/example.properties.xml | 29 + DOCBOOK/params/exsl.node.set.available.xml | 44 + DOCBOOK/params/feedback.href.xml | 28 + DOCBOOK/params/feedback.link.text.xml | 28 + DOCBOOK/params/feedback.with.ids.xml | 27 + DOCBOOK/params/figure.properties.xml | 27 + DOCBOOK/params/filename-prefix.xml | 28 + DOCBOOK/params/firstterm.only.link.xml | 29 + DOCBOOK/params/foil.footer.properties.xml | 27 + DOCBOOK/params/foil.header.properties.xml | 36 + DOCBOOK/params/foil.master.properties.xml | 46 + .../params/foil.page-sequence.properties.xml | 31 + DOCBOOK/params/foil.properties.xml | 36 + .../params/foil.region-after.properties.xml | 32 + .../params/foil.region-before.properties.xml | 34 + .../params/foil.region-body.properties.xml | 37 + DOCBOOK/params/foil.subtitle.properties.xml | 36 + DOCBOOK/params/foil.title.master.xml | 29 + DOCBOOK/params/foil.title.properties.xml | 31 + DOCBOOK/params/foil.title.size.xml | 32 + DOCBOOK/params/foilgroup.properties.xml | 31 + DOCBOOK/params/foilgroup.toc.xml | 29 + DOCBOOK/params/footer.column.widths.xml | 80 + DOCBOOK/params/footer.content.properties.xml | 34 + DOCBOOK/params/footer.hr.xml | 26 + DOCBOOK/params/footer.rule.xml | 27 + DOCBOOK/params/footer.table.height.xml | 32 + DOCBOOK/params/footer.table.properties.xml | 30 + DOCBOOK/params/footers.on.blank.pages.xml | 27 + DOCBOOK/params/footnote.font.size.xml | 28 + DOCBOOK/params/footnote.mark.properties.xml | 41 + DOCBOOK/params/footnote.number.format.xml | 33 + DOCBOOK/params/footnote.number.symbols.xml | 39 + DOCBOOK/params/footnote.properties.xml | 44 + .../params/footnote.sep.leader.properties.xml | 39 + DOCBOOK/params/fop.extensions.xml | 36 + DOCBOOK/params/fop1.extensions.xml | 34 + DOCBOOK/params/force.blank.pages.xml | 46 + DOCBOOK/params/formal.object.properties.xml | 36 + DOCBOOK/params/formal.procedures.xml | 28 + DOCBOOK/params/formal.title.placement.xml | 41 + DOCBOOK/params/formal.title.properties.xml | 34 + DOCBOOK/params/funcsynopsis.decoration.xml | 30 + DOCBOOK/params/funcsynopsis.style.xml | 31 + DOCBOOK/params/function.parens.xml | 29 + DOCBOOK/params/generate.consistent.ids.xml | 53 + DOCBOOK/params/generate.copyright.xml | 28 + DOCBOOK/params/generate.css.header.xml | 40 + .../generate.foilgroup.numbered.toc.xml | 29 + DOCBOOK/params/generate.foilgroup.toc.xml | 28 + DOCBOOK/params/generate.handoutnotes.xml | 28 + DOCBOOK/params/generate.id.attributes.xml | 59 + DOCBOOK/params/generate.index.xml | 25 + DOCBOOK/params/generate.legalnotice.link.xml | 72 + DOCBOOK/params/generate.manifest.xml | 27 + DOCBOOK/params/generate.meta.abstract.xml | 29 + DOCBOOK/params/generate.page.number.xml | 58 + DOCBOOK/params/generate.pubdate.xml | 28 + DOCBOOK/params/generate.revhistory.link.xml | 50 + DOCBOOK/params/generate.section.toc.level.xml | 35 + DOCBOOK/params/generate.speakernotes.xml | 28 + DOCBOOK/params/generate.titlepage.xml | 28 + DOCBOOK/params/generate.toc.xml | 108 + DOCBOOK/params/glossary.as.blocks.xml | 38 + DOCBOOK/params/glossary.collection.xml | 271 + DOCBOOK/params/glossary.sort.xml | 32 + DOCBOOK/params/glossdef.block.properties.xml | 32 + DOCBOOK/params/glossdef.list.properties.xml | 30 + .../glossentry.list.item.properties.xml | 32 + DOCBOOK/params/glossentry.show.acronym.xml | 37 + DOCBOOK/params/glosslist.as.blocks.xml | 27 + DOCBOOK/params/glossterm.auto.link.xml | 33 + DOCBOOK/params/glossterm.block.properties.xml | 35 + DOCBOOK/params/glossterm.list.properties.xml | 30 + DOCBOOK/params/glossterm.separation.xml | 31 + DOCBOOK/params/glossterm.width.xml | 28 + DOCBOOK/params/graphic.default.extension.xml | 29 + .../graphical.admonition.properties.xml | 42 + DOCBOOK/params/graphics.dir.xml | 33 + DOCBOOK/params/graphicsize.extension.xml | 32 + .../params/graphicsize.use.img.src.path.xml | 30 + DOCBOOK/params/handoutnotes.properties.xml | 28 + DOCBOOK/params/header.column.widths.xml | 80 + DOCBOOK/params/header.content.properties.xml | 34 + DOCBOOK/params/header.hr.xml | 26 + DOCBOOK/params/header.rule.xml | 27 + DOCBOOK/params/header.table.height.xml | 32 + DOCBOOK/params/header.table.properties.xml | 30 + DOCBOOK/params/headers.on.blank.pages.xml | 27 + DOCBOOK/params/hidetoc.image.xml | 29 + DOCBOOK/params/highlight.default.language.xml | 27 + DOCBOOK/params/highlight.source.xml | 82 + DOCBOOK/params/highlight.xslthl.config.xml | 33 + DOCBOOK/params/home.image.xml | 27 + DOCBOOK/params/html.append.xml | 30 + DOCBOOK/params/html.base.xml | 30 + DOCBOOK/params/html.cellpadding.xml | 29 + DOCBOOK/params/html.cellspacing.xml | 29 + DOCBOOK/params/html.cleanup.xml | 34 + DOCBOOK/params/html.ext.xml | 29 + DOCBOOK/params/html.extra.head.links.xml | 31 + .../html.head.legalnotice.link.multiple.xml | 44 + .../html.head.legalnotice.link.types.xml | 75 + DOCBOOK/params/html.longdesc.link.xml | 39 + DOCBOOK/params/html.longdesc.xml | 28 + DOCBOOK/params/html.script.type.xml | 31 + DOCBOOK/params/html.script.xml | 36 + DOCBOOK/params/html.stylesheet.type.xml | 26 + DOCBOOK/params/html.stylesheet.xml | 36 + DOCBOOK/params/htmlhelp.alias.file.xml | 27 + DOCBOOK/params/htmlhelp.autolabel.xml | 28 + DOCBOOK/params/htmlhelp.button.back.xml | 27 + DOCBOOK/params/htmlhelp.button.forward.xml | 27 + DOCBOOK/params/htmlhelp.button.hideshow.xml | 27 + DOCBOOK/params/htmlhelp.button.home.url.xml | 27 + DOCBOOK/params/htmlhelp.button.home.xml | 27 + .../params/htmlhelp.button.jump1.title.xml | 27 + DOCBOOK/params/htmlhelp.button.jump1.url.xml | 27 + DOCBOOK/params/htmlhelp.button.jump1.xml | 23 + .../params/htmlhelp.button.jump2.title.xml | 27 + DOCBOOK/params/htmlhelp.button.jump2.url.xml | 27 + DOCBOOK/params/htmlhelp.button.jump2.xml | 27 + DOCBOOK/params/htmlhelp.button.locate.xml | 28 + DOCBOOK/params/htmlhelp.button.next.xml | 27 + DOCBOOK/params/htmlhelp.button.options.xml | 28 + DOCBOOK/params/htmlhelp.button.prev.xml | 28 + DOCBOOK/params/htmlhelp.button.print.xml | 28 + DOCBOOK/params/htmlhelp.button.refresh.xml | 27 + DOCBOOK/params/htmlhelp.button.stop.xml | 28 + DOCBOOK/params/htmlhelp.button.zoom.xml | 28 + DOCBOOK/params/htmlhelp.chm.xml | 27 + DOCBOOK/params/htmlhelp.default.topic.xml | 37 + DOCBOOK/params/htmlhelp.display.progress.xml | 28 + DOCBOOK/params/htmlhelp.encoding.xml | 29 + .../htmlhelp.enhanced.decompilation.xml | 27 + DOCBOOK/params/htmlhelp.enumerate.images.xml | 28 + .../params/htmlhelp.force.map.and.alias.xml | 26 + DOCBOOK/params/htmlhelp.hhc.binary.xml | 29 + .../htmlhelp.hhc.folders.instead.books.xml | 31 + DOCBOOK/params/htmlhelp.hhc.section.depth.xml | 27 + DOCBOOK/params/htmlhelp.hhc.show.root.xml | 29 + DOCBOOK/params/htmlhelp.hhc.width.xml | 28 + DOCBOOK/params/htmlhelp.hhc.xml | 27 + DOCBOOK/params/htmlhelp.hhk.xml | 27 + DOCBOOK/params/htmlhelp.hhp.tail.xml | 28 + DOCBOOK/params/htmlhelp.hhp.window.xml | 28 + DOCBOOK/params/htmlhelp.hhp.windows.xml | 29 + DOCBOOK/params/htmlhelp.hhp.xml | 28 + DOCBOOK/params/htmlhelp.map.file.xml | 25 + DOCBOOK/params/htmlhelp.only.xml | 32 + .../htmlhelp.remember.window.position.xml | 27 + .../params/htmlhelp.show.advanced.search.xml | 28 + DOCBOOK/params/htmlhelp.show.favorities.xml | 28 + DOCBOOK/params/htmlhelp.show.menu.xml | 28 + DOCBOOK/params/htmlhelp.show.toolbar.text.xml | 28 + DOCBOOK/params/htmlhelp.title.xml | 28 + DOCBOOK/params/htmlhelp.use.hhk.xml | 28 + DOCBOOK/params/htmlhelp.window.geometry.xml | 30 + .../params/hyphenate.verbatim.characters.xml | 30 + DOCBOOK/params/hyphenate.verbatim.xml | 45 + DOCBOOK/params/hyphenate.xml | 29 + DOCBOOK/params/id.warnings.xml | 25 + DOCBOOK/params/ignore.image.scaling.xml | 28 + DOCBOOK/params/img.src.path.xml | 40 + DOCBOOK/params/index.div.title.properties.xml | 39 + DOCBOOK/params/index.entry.properties.xml | 33 + DOCBOOK/params/index.links.to.section.xml | 76 + DOCBOOK/params/index.method.xml | 162 + DOCBOOK/params/index.number.separator.xml | 54 + DOCBOOK/params/index.on.role.xml | 48 + DOCBOOK/params/index.on.type.xml | 52 + .../params/index.page.number.properties.xml | 31 + DOCBOOK/params/index.prefer.titleabbrev.xml | 29 + .../index.preferred.page.properties.xml | 32 + DOCBOOK/params/index.range.separator.xml | 57 + DOCBOOK/params/index.term.separator.xml | 54 + DOCBOOK/params/informal.object.properties.xml | 29 + .../params/informalequation.properties.xml | 27 + DOCBOOK/params/informalexample.properties.xml | 27 + DOCBOOK/params/informalfigure.properties.xml | 27 + DOCBOOK/params/informaltable.properties.xml | 32 + DOCBOOK/params/inherit.keywords.xml | 31 + .../inner.region.content.properties.xml | 48 + DOCBOOK/params/insert.link.page.number.xml | 69 + DOCBOOK/params/insert.olink.page.number.xml | 83 + DOCBOOK/params/insert.olink.pdf.frag.xml | 68 + DOCBOOK/params/insert.xref.page.number.xml | 60 + .../params/itemizedlist.label.properties.xml | 26 + DOCBOOK/params/itemizedlist.label.width.xml | 28 + DOCBOOK/params/itemizedlist.properties.xml | 23 + DOCBOOK/params/javahelp.encoding.xml | 31 + DOCBOOK/params/keep.relative.image.uris.xml | 34 + DOCBOOK/params/keyboard.nav.xml | 29 + .../params/l10n.gentext.default.language.xml | 30 + DOCBOOK/params/l10n.gentext.language.xml | 33 + .../params/l10n.gentext.use.xref.language.xml | 53 + .../params/l10n.lang.value.rfc.compliant.xml | 57 + DOCBOOK/params/label.from.part.xml | 38 + DOCBOOK/params/line-height.xml | 27 + DOCBOOK/params/linenumbering.everyNth.xml | 33 + DOCBOOK/params/linenumbering.extension.xml | 30 + DOCBOOK/params/linenumbering.separator.xml | 30 + DOCBOOK/params/linenumbering.width.xml | 29 + DOCBOOK/params/link.mailto.url.xml | 29 + DOCBOOK/params/list.block.properties.xml | 25 + DOCBOOK/params/list.block.spacing.xml | 29 + DOCBOOK/params/list.item.spacing.xml | 26 + DOCBOOK/params/make.clean.html.xml | 51 + DOCBOOK/params/make.graphic.viewport.xml | 35 + DOCBOOK/params/make.index.markup.xml | 73 + DOCBOOK/params/make.single.year.ranges.xml | 28 + DOCBOOK/params/make.valid.html.xml | 35 + DOCBOOK/params/make.year.ranges.xml | 32 + .../params/man.authors.section.enabled.xml | 46 + .../man.base.url.for.relative.links.xml | 76 + DOCBOOK/params/man.break.after.slash.xml | 46 + DOCBOOK/params/man.charmap.enabled.xml | 55 + .../man.charmap.subset.profile.english.xml | 80 + DOCBOOK/params/man.charmap.subset.profile.xml | 297 + DOCBOOK/params/man.charmap.uri.xml | 42 + DOCBOOK/params/man.charmap.use.subset.xml | 80 + .../params/man.copyright.section.enabled.xml | 46 + DOCBOOK/params/man.endnotes.are.numbered.xml | 106 + DOCBOOK/params/man.endnotes.list.enabled.xml | 105 + DOCBOOK/params/man.endnotes.list.heading.xml | 36 + DOCBOOK/params/man.font.funcprototype.xml | 30 + DOCBOOK/params/man.font.funcsynopsisinfo.xml | 30 + DOCBOOK/params/man.font.links.xml | 64 + DOCBOOK/params/man.font.table.headings.xml | 30 + DOCBOOK/params/man.font.table.title.xml | 30 + DOCBOOK/params/man.funcsynopsis.style.xml | 26 + .../params/man.hyphenate.computer.inlines.xml | 53 + DOCBOOK/params/man.hyphenate.filenames.xml | 47 + DOCBOOK/params/man.hyphenate.urls.xml | 46 + DOCBOOK/params/man.hyphenate.xml | 59 + DOCBOOK/params/man.indent.blurbs.xml | 33 + DOCBOOK/params/man.indent.lists.xml | 35 + DOCBOOK/params/man.indent.refsect.xml | 70 + DOCBOOK/params/man.indent.verbatims.xml | 33 + DOCBOOK/params/man.indent.width.xml | 39 + DOCBOOK/params/man.justify.xml | 52 + DOCBOOK/params/man.output.base.dir.xml | 39 + .../params/man.output.better.ps.enabled.xml | 61 + DOCBOOK/params/man.output.encoding.xml | 53 + DOCBOOK/params/man.output.in.separate.dir.xml | 32 + .../man.output.lang.in.name.enabled.xml | 50 + .../params/man.output.manifest.enabled.xml | 27 + .../params/man.output.manifest.filename.xml | 29 + DOCBOOK/params/man.output.quietly.xml | 37 + DOCBOOK/params/man.output.subdirs.enabled.xml | 40 + DOCBOOK/params/man.segtitle.suppress.xml | 28 + .../man.string.subst.map.local.post.xml | 34 + .../params/man.string.subst.map.local.pre.xml | 34 + DOCBOOK/params/man.string.subst.map.xml | 162 + .../params/man.subheading.divider.enabled.xml | 37 + DOCBOOK/params/man.subheading.divider.xml | 37 + .../params/man.table.footnotes.divider.xml | 29 + DOCBOOK/params/man.th.extra1.suppress.xml | 32 + DOCBOOK/params/man.th.extra2.max.length.xml | 43 + DOCBOOK/params/man.th.extra2.suppress.xml | 44 + DOCBOOK/params/man.th.extra3.max.length.xml | 42 + DOCBOOK/params/man.th.extra3.suppress.xml | 34 + DOCBOOK/params/man.th.title.max.length.xml | 63 + DOCBOOK/params/manifest.in.base.dir.xml | 29 + DOCBOOK/params/manifest.xml | 29 + DOCBOOK/params/manual.toc.xml | 29 + DOCBOOK/params/margin.note.float.type.xml | 77 + DOCBOOK/params/margin.note.properties.xml | 54 + .../params/margin.note.title.properties.xml | 32 + DOCBOOK/params/margin.note.width.xml | 35 + DOCBOOK/params/marker.section.level.xml | 50 + DOCBOOK/params/menuchoice.menu.separator.xml | 42 + DOCBOOK/params/menuchoice.separator.xml | 32 + DOCBOOK/params/minus.image.xml | 29 + DOCBOOK/params/mml.embedding.mode.fo.xml | 54 + DOCBOOK/params/mml.embedding.mode.xml | 78 + DOCBOOK/params/monospace.font.family.xml | 34 + DOCBOOK/params/monospace.properties.xml | 38 + .../params/monospace.verbatim.font.width.xml | 40 + .../params/monospace.verbatim.properties.xml | 27 + DOCBOOK/params/multiframe.bottom.bgcolor.xml | 28 + .../params/multiframe.navigation.height.xml | 28 + DOCBOOK/params/multiframe.top.bgcolor.xml | 28 + DOCBOOK/params/multiframe.xml | 31 + DOCBOOK/params/nav.separator.xml | 28 + DOCBOOK/params/nav.table.summary.xml | 27 + DOCBOOK/params/navbgcolor.xml | 26 + DOCBOOK/params/navbodywidth.xml | 26 + DOCBOOK/params/navig.graphics.extension.xml | 28 + DOCBOOK/params/navig.graphics.path.xml | 30 + DOCBOOK/params/navig.graphics.xml | 31 + DOCBOOK/params/navig.showtitles.xml | 32 + DOCBOOK/params/navtocwidth.xml | 26 + DOCBOOK/params/next.image.xml | 27 + DOCBOOK/params/no.home.image.xml | 27 + DOCBOOK/params/no.next.image.xml | 27 + DOCBOOK/params/no.prev.image.xml | 27 + DOCBOOK/params/no.toc.image.xml | 27 + DOCBOOK/params/no.up.image.xml | 27 + DOCBOOK/params/nominal.image.depth.xml | 27 + DOCBOOK/params/nominal.image.width.xml | 43 + DOCBOOK/params/nominal.table.width.xml | 30 + .../nongraphical.admonition.properties.xml | 41 + DOCBOOK/params/normal.para.spacing.xml | 43 + DOCBOOK/params/olink.base.uri.xml | 35 + DOCBOOK/params/olink.debug.xml | 36 + DOCBOOK/params/olink.doctitle.xml | 146 + DOCBOOK/params/olink.fragid.xml | 23 + .../params/olink.lang.fallback.sequence.xml | 83 + DOCBOOK/params/olink.outline.ext.xml | 28 + DOCBOOK/params/olink.properties.xml | 33 + DOCBOOK/params/olink.pubid.xml | 27 + DOCBOOK/params/olink.resolver.xml | 23 + DOCBOOK/params/olink.sysid.xml | 27 + .../params/orderedlist.label.properties.xml | 26 + DOCBOOK/params/orderedlist.label.width.xml | 28 + DOCBOOK/params/orderedlist.properties.xml | 24 + .../othercredit.like.author.enabled.xml | 31 + .../outer.region.content.properties.xml | 47 + DOCBOOK/params/output-root.xml | 28 + DOCBOOK/params/output.indent.xml | 32 + DOCBOOK/params/overlay.js.xml | 28 + DOCBOOK/params/overlay.logo.xml | 28 + DOCBOOK/params/overlay.xml | 32 + DOCBOOK/params/page.height.portrait.xml | 71 + DOCBOOK/params/page.height.xml | 37 + DOCBOOK/params/page.margin.bottom.xml | 29 + DOCBOOK/params/page.margin.inner.xml | 58 + DOCBOOK/params/page.margin.outer.xml | 55 + DOCBOOK/params/page.margin.top.xml | 28 + DOCBOOK/params/page.orientation.xml | 32 + DOCBOOK/params/page.width.portrait.xml | 70 + DOCBOOK/params/page.width.xml | 36 + DOCBOOK/params/pages.template.xml | 29 + DOCBOOK/params/paper.type.xml | 73 + DOCBOOK/params/para.propagates.style.xml | 29 + DOCBOOK/params/para.properties.xml | 31 + DOCBOOK/params/part.autolabel.xml | 73 + DOCBOOK/params/passivetex.extensions.xml | 30 + DOCBOOK/params/pgwide.properties.xml | 52 + DOCBOOK/params/phrase.propagates.style.xml | 29 + DOCBOOK/params/pixels.per.inch.xml | 31 + DOCBOOK/params/plus.image.xml | 29 + DOCBOOK/params/points.per.em.xml | 29 + DOCBOOK/params/preface.autolabel.xml | 71 + DOCBOOK/params/prefer.internal.olink.xml | 78 + DOCBOOK/params/preferred.mediaobject.role.xml | 40 + DOCBOOK/params/prev.image.xml | 27 + DOCBOOK/params/procedure.properties.xml | 29 + DOCBOOK/params/process.empty.source.toc.xml | 39 + DOCBOOK/params/process.source.toc.xml | 39 + DOCBOOK/params/profile.arch.xml | 39 + DOCBOOK/params/profile.attribute.xml | 34 + DOCBOOK/params/profile.audience.xml | 38 + DOCBOOK/params/profile.condition.xml | 38 + DOCBOOK/params/profile.conformance.xml | 38 + DOCBOOK/params/profile.lang.xml | 38 + DOCBOOK/params/profile.os.xml | 38 + DOCBOOK/params/profile.revision.xml | 38 + DOCBOOK/params/profile.revisionflag.xml | 38 + DOCBOOK/params/profile.role.xml | 54 + DOCBOOK/params/profile.security.xml | 38 + DOCBOOK/params/profile.separator.xml | 27 + DOCBOOK/params/profile.status.xml | 38 + DOCBOOK/params/profile.userlevel.xml | 38 + DOCBOOK/params/profile.value.xml | 41 + DOCBOOK/params/profile.vendor.xml | 38 + DOCBOOK/params/profile.wordsize.xml | 38 + DOCBOOK/params/punct.honorific.xml | 28 + DOCBOOK/params/qanda.defaultlabel.xml | 86 + DOCBOOK/params/qanda.in.toc.xml | 34 + DOCBOOK/params/qanda.inherit.numeration.xml | 30 + DOCBOOK/params/qanda.nested.in.toc.xml | 29 + .../params/qanda.title.level1.properties.xml | 32 + .../params/qanda.title.level2.properties.xml | 32 + .../params/qanda.title.level3.properties.xml | 32 + .../params/qanda.title.level4.properties.xml | 32 + .../params/qanda.title.level5.properties.xml | 32 + .../params/qanda.title.level6.properties.xml | 34 + DOCBOOK/params/qanda.title.properties.xml | 37 + DOCBOOK/params/qandadiv.autolabel.xml | 26 + DOCBOOK/params/rebuild-all.xml | 33 + DOCBOOK/params/refclass.suppress.xml | 28 + .../params/refentry.date.profile.enabled.xml | 46 + DOCBOOK/params/refentry.date.profile.xml | 38 + DOCBOOK/params/refentry.generate.name.xml | 33 + DOCBOOK/params/refentry.generate.title.xml | 33 + .../refentry.manual.fallback.profile.xml | 48 + .../refentry.manual.profile.enabled.xml | 47 + DOCBOOK/params/refentry.manual.profile.xml | 72 + DOCBOOK/params/refentry.meta.get.quietly.xml | 37 + DOCBOOK/params/refentry.pagebreak.xml | 33 + DOCBOOK/params/refentry.separator.xml | 29 + .../refentry.source.fallback.profile.xml | 49 + .../refentry.source.name.profile.enabled.xml | 48 + .../params/refentry.source.name.profile.xml | 89 + .../params/refentry.source.name.suppress.xml | 42 + DOCBOOK/params/refentry.title.properties.xml | 59 + .../refentry.version.profile.enabled.xml | 47 + DOCBOOK/params/refentry.version.profile.xml | 41 + DOCBOOK/params/refentry.version.suppress.xml | 43 + DOCBOOK/params/refentry.xref.manvolnum.xml | 31 + DOCBOOK/params/reference.autolabel.xml | 67 + DOCBOOK/params/region.after.extent.xml | 29 + DOCBOOK/params/region.before.extent.xml | 29 + DOCBOOK/params/region.inner.extent.xml | 51 + DOCBOOK/params/region.inner.properties.xml | 51 + DOCBOOK/params/region.outer.extent.xml | 50 + DOCBOOK/params/region.outer.properties.xml | 51 + .../revhistory.table.cell.properties.xml | 28 + .../params/revhistory.table.properties.xml | 28 + .../params/revhistory.title.properties.xml | 28 + DOCBOOK/params/root.filename.xml | 29 + DOCBOOK/params/root.properties.xml | 46 + DOCBOOK/params/rootid.xml | 33 + .../runinhead.default.title.end.punct.xml | 27 + DOCBOOK/params/runinhead.title.end.punct.xml | 32 + DOCBOOK/params/running.foot.properties.xml | 34 + DOCBOOK/params/s5.controls.xml | 28 + DOCBOOK/params/s5.defaultview.xml | 30 + DOCBOOK/params/s5.opera.css.xml | 28 + DOCBOOK/params/s5.outline.css.xml | 27 + DOCBOOK/params/s5.path.prefix.xml | 29 + DOCBOOK/params/s5.print.css.xml | 27 + DOCBOOK/params/s5.slides.css.xml | 27 + DOCBOOK/params/s5.slides.js.xml | 28 + DOCBOOK/params/sans.font.family.xml | 29 + DOCBOOK/params/saxon.callouts.xml | 30 + .../params/saxon.character.representation.xml | 38 + DOCBOOK/params/saxon.linenumbering.xml | 32 + DOCBOOK/params/saxon.tablecolumns.xml | 30 + DOCBOOK/params/script.dir.xml | 33 + .../params/section.autolabel.max.depth.xml | 32 + DOCBOOK/params/section.autolabel.xml | 26 + DOCBOOK/params/section.container.element.xml | 62 + ...section.label.includes.component.label.xml | 27 + DOCBOOK/params/section.level1.properties.xml | 43 + DOCBOOK/params/section.level2.properties.xml | 43 + DOCBOOK/params/section.level3.properties.xml | 43 + DOCBOOK/params/section.level4.properties.xml | 43 + DOCBOOK/params/section.level5.properties.xml | 43 + DOCBOOK/params/section.level6.properties.xml | 43 + DOCBOOK/params/section.properties.xml | 35 + .../section.title.level1.properties.xml | 32 + .../section.title.level2.properties.xml | 33 + .../section.title.level3.properties.xml | 32 + .../section.title.level4.properties.xml | 32 + .../section.title.level5.properties.xml | 32 + .../section.title.level6.properties.xml | 33 + DOCBOOK/params/section.title.properties.xml | 39 + DOCBOOK/params/segmentedlist.as.table.xml | 28 + DOCBOOK/params/sequential.links.xml | 25 + DOCBOOK/params/shade.verbatim.style.xml | 36 + DOCBOOK/params/shade.verbatim.xml | 30 + DOCBOOK/params/show.comments.xml | 32 + DOCBOOK/params/show.foil.number.xml | 28 + DOCBOOK/params/show.revisionflag.xml | 42 + DOCBOOK/params/showtoc.image.xml | 29 + DOCBOOK/params/side.float.properties.xml | 50 + DOCBOOK/params/side.region.precedence.xml | 56 + DOCBOOK/params/sidebar.float.type.xml | 90 + DOCBOOK/params/sidebar.float.width.xml | 35 + DOCBOOK/params/sidebar.properties.xml | 42 + DOCBOOK/params/sidebar.title.properties.xml | 32 + DOCBOOK/params/simplesect.in.toc.xml | 26 + DOCBOOK/params/slide.font.family.xml | 31 + DOCBOOK/params/slide.title.font.family.xml | 31 + DOCBOOK/params/slides.js.xml | 28 + DOCBOOK/params/slides.properties.xml | 31 + .../slides.titlepage.author.properties.xml | 32 + ...lides.titlepage.authorgroup.properties.xml | 28 + ...slides.titlepage.corpauthor.properties.xml | 32 + .../slides.titlepage.master.properties.xml | 46 + .../slides.titlepage.pubdate.properties.xml | 32 + ...lides.titlepage.region-body.properties.xml | 33 + .../slides.titlepage.subtitle.properties.xml | 34 + .../slides.titlepage.title.properties.xml | 40 + DOCBOOK/params/slidy.duration.xml | 29 + DOCBOOK/params/slidy.path.prefix.xml | 29 + DOCBOOK/params/slidy.slidy.css.xml | 27 + DOCBOOK/params/slidy.slidy.js.xml | 27 + DOCBOOK/params/slidy.user.css.xml | 27 + DOCBOOK/params/spacing.paras.xml | 30 + DOCBOOK/params/speakernote.properties.xml | 32 + DOCBOOK/params/speakernotes.properties.xml | 28 + DOCBOOK/params/subscript.properties.xml | 29 + DOCBOOK/params/superscript.properties.xml | 29 + DOCBOOK/params/suppress.footer.navigation.xml | 26 + DOCBOOK/params/suppress.header.navigation.xml | 27 + DOCBOOK/params/suppress.homepage.title.xml | 25 + DOCBOOK/params/suppress.navigation.xml | 28 + DOCBOOK/params/svg.embedding.mode.fo.xml | 53 + DOCBOOK/params/svg.embedding.mode.xml | 78 + DOCBOOK/params/symbol.font.family.xml | 45 + DOCBOOK/params/table.borders.with.css.xml | 28 + DOCBOOK/params/table.caption.properties.xml | 31 + DOCBOOK/params/table.cell.border.color.xml | 39 + DOCBOOK/params/table.cell.border.style.xml | 42 + .../params/table.cell.border.thickness.xml | 35 + DOCBOOK/params/table.cell.padding.xml | 32 + DOCBOOK/params/table.entry.padding.xml | 27 + .../params/table.footnote.number.format.xml | 33 + .../params/table.footnote.number.symbols.xml | 39 + DOCBOOK/params/table.footnote.properties.xml | 39 + DOCBOOK/params/table.frame.border.color.xml | 28 + DOCBOOK/params/table.frame.border.style.xml | 37 + .../params/table.frame.border.thickness.xml | 27 + DOCBOOK/params/table.properties.xml | 34 + DOCBOOK/params/table.spacer.image.xml | 26 + DOCBOOK/params/table.table.properties.xml | 36 + DOCBOOK/params/tablecolumns.extension.xml | 30 + DOCBOOK/params/target.database.document.xml | 37 + DOCBOOK/params/targets.filename.xml | 32 + DOCBOOK/params/task.properties.xml | 29 + DOCBOOK/params/template.xml | 27 + DOCBOOK/params/tex.math.delims.xml | 47 + DOCBOOK/params/tex.math.file.xml | 42 + DOCBOOK/params/tex.math.in.alt.xml | 76 + DOCBOOK/params/text.home.xml | 27 + DOCBOOK/params/text.next.xml | 27 + DOCBOOK/params/text.prev.xml | 27 + DOCBOOK/params/text.toc.xml | 27 + DOCBOOK/params/text.up.xml | 27 + DOCBOOK/params/textbgcolor.xml | 26 + DOCBOOK/params/textdata.default.encoding.xml | 32 + DOCBOOK/params/textinsert.extension.xml | 62 + DOCBOOK/params/title.font.family.xml | 38 + DOCBOOK/params/title.margin.left.xml | 65 + DOCBOOK/params/titlefoil.html.xml | 27 + DOCBOOK/params/toc.bg.color.xml | 27 + DOCBOOK/params/toc.blank.graphic.xml | 28 + DOCBOOK/params/toc.blank.image.xml | 27 + DOCBOOK/params/toc.blank.text.xml | 27 + DOCBOOK/params/toc.hide.show.xml | 33 + DOCBOOK/params/toc.html.xml | 27 + DOCBOOK/params/toc.image.xml | 27 + DOCBOOK/params/toc.indent.width.xml | 34 + DOCBOOK/params/toc.line.properties.xml | 44 + DOCBOOK/params/toc.list.type.xml | 30 + DOCBOOK/params/toc.margin.properties.xml | 33 + DOCBOOK/params/toc.max.depth.xml | 25 + DOCBOOK/params/toc.pointer.graphic.xml | 28 + DOCBOOK/params/toc.pointer.image.xml | 27 + DOCBOOK/params/toc.pointer.text.xml | 27 + DOCBOOK/params/toc.row.height.xml | 33 + DOCBOOK/params/toc.section.depth.xml | 28 + DOCBOOK/params/toc.spacer.graphic.xml | 28 + DOCBOOK/params/toc.spacer.image.xml | 27 + DOCBOOK/params/toc.spacer.text.xml | 27 + DOCBOOK/params/toc.width.xml | 28 + DOCBOOK/params/ua.js.xml | 28 + DOCBOOK/params/ulink.footnotes.xml | 34 + DOCBOOK/params/ulink.hyphenate.chars.xml | 38 + DOCBOOK/params/ulink.hyphenate.xml | 39 + DOCBOOK/params/ulink.show.xml | 37 + DOCBOOK/params/ulink.target.xml | 29 + DOCBOOK/params/up.image.xml | 27 + DOCBOOK/params/use.embed.for.svg.xml | 33 + DOCBOOK/params/use.extensions.xml | 31 + DOCBOOK/params/use.id.as.filename.xml | 30 + DOCBOOK/params/use.id.function.xml | 32 + DOCBOOK/params/use.local.olink.style.xml | 28 + DOCBOOK/params/use.role.as.xrefstyle.xml | 93 + DOCBOOK/params/use.role.for.mediaobject.xml | 56 + DOCBOOK/params/use.svg.xml | 30 + DOCBOOK/params/user.css.xml | 29 + DOCBOOK/params/variablelist.as.blocks.xml | 62 + DOCBOOK/params/variablelist.as.table.xml | 54 + .../params/variablelist.max.termlength.xml | 46 + .../params/variablelist.term.break.after.xml | 39 + .../params/variablelist.term.properties.xml | 29 + .../params/variablelist.term.separator.xml | 40 + DOCBOOK/params/verbatim.properties.xml | 38 + DOCBOOK/params/webhelp.autolabel.xml | 25 + DOCBOOK/params/webhelp.base.dir.xml | 29 + DOCBOOK/params/webhelp.common.dir.xml | 25 + DOCBOOK/params/webhelp.default.topic.xml | 36 + DOCBOOK/params/webhelp.include.search.tab.xml | 25 + DOCBOOK/params/webhelp.indexer.language.xml | 47 + DOCBOOK/params/webhelp.start.filename.xml | 34 + DOCBOOK/params/webhelp.tree.cookie.id.xml | 38 + DOCBOOK/params/wordml.template.xml | 29 + DOCBOOK/params/wrap.slidecontent.xml | 28 + DOCBOOK/params/writing.mode.xml | 83 + DOCBOOK/params/xbCollapsibleLists.js.xml | 28 + DOCBOOK/params/xbDOM.js.xml | 28 + DOCBOOK/params/xbLibrary.js.xml | 28 + DOCBOOK/params/xbStyle.js.xml | 28 + DOCBOOK/params/xep.extensions.xml | 31 + DOCBOOK/params/xep.index.item.properties.xml | 36 + DOCBOOK/params/xref.label-page.separator.xml | 38 + DOCBOOK/params/xref.label-title.separator.xml | 36 + DOCBOOK/params/xref.properties.xml | 29 + DOCBOOK/params/xref.title-page.separator.xml | 36 + DOCBOOK/params/xref.with.number.and.title.xml | 30 + DOCBOOK/profiling/profile-mode.xsl | 245 + DOCBOOK/profiling/profile.xsl | 58 + DOCBOOK/profiling/strip-attributes.xsl | 27 + DOCBOOK/profiling/xsl2profile.xsl | 159 + DOCBOOK/roundtrip/blocks-spec.xml | 11 + DOCBOOK/roundtrip/blocks2dbk.dtd | 76 + DOCBOOK/roundtrip/blocks2dbk.xsl | 1734 + DOCBOOK/roundtrip/dbk2ooo.xsl | 178 + DOCBOOK/roundtrip/dbk2pages.xsl | 442 + DOCBOOK/roundtrip/dbk2wordml.xsl | 408 + DOCBOOK/roundtrip/dbk2wp.xsl | 1376 + DOCBOOK/roundtrip/normalise-common.xsl | 39 + DOCBOOK/roundtrip/normalise2sections.xsl | 1270 + DOCBOOK/roundtrip/pages2normalise.xsl | 352 + DOCBOOK/roundtrip/param.xml | 103 + DOCBOOK/roundtrip/param.xsl | 21 + DOCBOOK/roundtrip/sections-spec.xml | 38 + DOCBOOK/roundtrip/sections2blocks.xsl | 263 + DOCBOOK/roundtrip/specifications.xml | 1420 + DOCBOOK/roundtrip/template-pages.xml | 2 + DOCBOOK/roundtrip/template.dot | Bin 0 -> 38912 bytes DOCBOOK/roundtrip/template.xml | 3 + DOCBOOK/roundtrip/wordml2normalise.xsl | 446 + DOCBOOK/slides/README | 11 + DOCBOOK/slides/RELEASE-NOTES.xml | 135 + DOCBOOK/slides/common/common.xsl | 19 + DOCBOOK/slides/doc/slides.xml | 1371 + DOCBOOK/slides/doc/user.css | 6 + DOCBOOK/slides/fo/param.xml | 1155 + DOCBOOK/slides/fo/param.xsl | 222 + DOCBOOK/slides/fo/plain-titlepage.xml | 49 + DOCBOOK/slides/fo/plain-titlepage.xsl | 150 + DOCBOOK/slides/fo/plain.xsl | 563 + DOCBOOK/slides/images/Thumbs.db | Bin 0 -> 16896 bytes DOCBOOK/slides/images/callouts/1.png | Bin 0 -> 1154 bytes DOCBOOK/slides/images/callouts/1.svg | 6 + DOCBOOK/slides/images/callouts/10.png | Bin 0 -> 1756 bytes DOCBOOK/slides/images/callouts/10.svg | 6 + DOCBOOK/slides/images/callouts/11.png | Bin 0 -> 1280 bytes DOCBOOK/slides/images/callouts/11.svg | 6 + DOCBOOK/slides/images/callouts/12.png | Bin 0 -> 1662 bytes DOCBOOK/slides/images/callouts/12.svg | 6 + DOCBOOK/slides/images/callouts/13.png | Bin 0 -> 1720 bytes DOCBOOK/slides/images/callouts/13.svg | 6 + DOCBOOK/slides/images/callouts/14.png | Bin 0 -> 1544 bytes DOCBOOK/slides/images/callouts/14.svg | 6 + DOCBOOK/slides/images/callouts/15.png | Bin 0 -> 1758 bytes DOCBOOK/slides/images/callouts/15.svg | 6 + DOCBOOK/slides/images/callouts/16.png | Bin 0 -> 1797 bytes DOCBOOK/slides/images/callouts/16.svg | 6 + DOCBOOK/slides/images/callouts/17.png | Bin 0 -> 1472 bytes DOCBOOK/slides/images/callouts/17.svg | 6 + DOCBOOK/slides/images/callouts/18.png | Bin 0 -> 1815 bytes DOCBOOK/slides/images/callouts/18.svg | 6 + DOCBOOK/slides/images/callouts/19.png | Bin 0 -> 1827 bytes DOCBOOK/slides/images/callouts/19.svg | 6 + DOCBOOK/slides/images/callouts/2.png | Bin 0 -> 1561 bytes DOCBOOK/slides/images/callouts/2.svg | 6 + DOCBOOK/slides/images/callouts/20.png | Bin 0 -> 2033 bytes DOCBOOK/slides/images/callouts/20.svg | 6 + DOCBOOK/slides/images/callouts/21.png | Bin 0 -> 1638 bytes DOCBOOK/slides/images/callouts/21.svg | 6 + DOCBOOK/slides/images/callouts/22.png | Bin 0 -> 1923 bytes DOCBOOK/slides/images/callouts/22.svg | 6 + DOCBOOK/slides/images/callouts/23.png | Bin 0 -> 2006 bytes DOCBOOK/slides/images/callouts/23.svg | 6 + DOCBOOK/slides/images/callouts/24.png | Bin 0 -> 1785 bytes DOCBOOK/slides/images/callouts/24.svg | 6 + DOCBOOK/slides/images/callouts/25.png | Bin 0 -> 1991 bytes DOCBOOK/slides/images/callouts/25.svg | 6 + DOCBOOK/slides/images/callouts/26.png | Bin 0 -> 2058 bytes DOCBOOK/slides/images/callouts/26.svg | 6 + DOCBOOK/slides/images/callouts/27.png | Bin 0 -> 1815 bytes DOCBOOK/slides/images/callouts/27.svg | 6 + DOCBOOK/slides/images/callouts/28.png | Bin 0 -> 2082 bytes DOCBOOK/slides/images/callouts/28.svg | 6 + DOCBOOK/slides/images/callouts/29.png | Bin 0 -> 2087 bytes DOCBOOK/slides/images/callouts/29.svg | 6 + DOCBOOK/slides/images/callouts/3.png | Bin 0 -> 1655 bytes DOCBOOK/slides/images/callouts/3.svg | 6 + DOCBOOK/slides/images/callouts/30.png | Bin 0 -> 2108 bytes DOCBOOK/slides/images/callouts/30.svg | 6 + DOCBOOK/slides/images/callouts/4.png | Bin 0 -> 1363 bytes DOCBOOK/slides/images/callouts/4.svg | 6 + DOCBOOK/slides/images/callouts/5.png | Bin 0 -> 1560 bytes DOCBOOK/slides/images/callouts/5.svg | 6 + DOCBOOK/slides/images/callouts/6.png | Bin 0 -> 1655 bytes DOCBOOK/slides/images/callouts/6.svg | 6 + DOCBOOK/slides/images/callouts/7.png | Bin 0 -> 1333 bytes DOCBOOK/slides/images/callouts/7.svg | 6 + DOCBOOK/slides/images/callouts/8.png | Bin 0 -> 1741 bytes DOCBOOK/slides/images/callouts/8.svg | 6 + DOCBOOK/slides/images/callouts/9.png | Bin 0 -> 1718 bytes DOCBOOK/slides/images/callouts/9.svg | 6 + DOCBOOK/slides/images/callouts/gen.sh | 23 + DOCBOOK/slides/images/face1.gif | Bin 0 -> 5279 bytes DOCBOOK/slides/images/face2.gif | Bin 0 -> 2378 bytes DOCBOOK/slides/images/face3.gif | Bin 0 -> 800 bytes DOCBOOK/slides/images/face4.gif | Bin 0 -> 846 bytes DOCBOOK/slides/locatingrules.xml | 31 + DOCBOOK/slides/s5/index-osf.html | 200 + DOCBOOK/slides/s5/index-xoxo.html | 201 + DOCBOOK/slides/s5/pix/S501.jpg | Bin 0 -> 10475 bytes DOCBOOK/slides/s5/pix/S502.jpg | Bin 0 -> 10063 bytes DOCBOOK/slides/s5/pix/S503.jpg | Bin 0 -> 9631 bytes DOCBOOK/slides/s5/pix/S504.jpg | Bin 0 -> 10068 bytes DOCBOOK/slides/s5/pix/mememe01.png | Bin 0 -> 28065 bytes DOCBOOK/slides/s5/pix/mememe02.png | Bin 0 -> 8701 bytes DOCBOOK/slides/s5/pix/mememe03.png | Bin 0 -> 5223 bytes DOCBOOK/slides/s5/pix/mememe04.png | Bin 0 -> 4548 bytes DOCBOOK/slides/s5/pix/mememe05.png | Bin 0 -> 3423 bytes DOCBOOK/slides/s5/pix/s5filemap.png | Bin 0 -> 61264 bytes DOCBOOK/slides/s5/ui/bg-shade.png | Bin 0 -> 594 bytes DOCBOOK/slides/s5/ui/default/Thumbs.db | Bin 0 -> 41984 bytes DOCBOOK/slides/s5/ui/default/blank.gif | Bin 0 -> 49 bytes DOCBOOK/slides/s5/ui/default/bodybg.gif | Bin 0 -> 10119 bytes DOCBOOK/slides/s5/ui/default/framing.css | 22 + DOCBOOK/slides/s5/ui/default/iepngfix.htc | 42 + DOCBOOK/slides/s5/ui/default/notes.css | 122 + DOCBOOK/slides/s5/ui/default/opera.css | 7 + DOCBOOK/slides/s5/ui/default/outline.css | 15 + DOCBOOK/slides/s5/ui/default/pretty.css | 82 + DOCBOOK/slides/s5/ui/default/print.css | 24 + DOCBOOK/slides/s5/ui/default/s5-core.css | 9 + DOCBOOK/slides/s5/ui/default/slides.css | 3 + DOCBOOK/slides/s5/ui/default/slides.js | 764 + DOCBOOK/slides/s5/ui/s5-notes.html | 64 + DOCBOOK/slides/schema/relaxng/admonitions.rng | 174 + DOCBOOK/slides/schema/relaxng/annotations.rng | 97 + .../slides/schema/relaxng/bibliography.rng | 431 + DOCBOOK/slides/schema/relaxng/callouts.rng | 503 + DOCBOOK/slides/schema/relaxng/calstbl.rng | 918 + DOCBOOK/slides/schema/relaxng/core.rng | 46 + DOCBOOK/slides/schema/relaxng/docbook.rng | 34 + DOCBOOK/slides/schema/relaxng/docbook1.rng | 63 + DOCBOOK/slides/schema/relaxng/ebnf.rng | 267 + DOCBOOK/slides/schema/relaxng/error.rng | 136 + DOCBOOK/slides/schema/relaxng/glossary.rng | 513 + DOCBOOK/slides/schema/relaxng/gui.rng | 292 + DOCBOOK/slides/schema/relaxng/hier.rng | 730 + DOCBOOK/slides/schema/relaxng/htmltbl.rng | 678 + DOCBOOK/slides/schema/relaxng/index.rng | 773 + DOCBOOK/slides/schema/relaxng/keyboard.rng | 320 + DOCBOOK/slides/schema/relaxng/markup.rng | 304 + DOCBOOK/slides/schema/relaxng/math.rng | 208 + DOCBOOK/slides/schema/relaxng/mathml.rng | 122 + DOCBOOK/slides/schema/relaxng/msgset.rng | 427 + DOCBOOK/slides/schema/relaxng/os.rng | 513 + DOCBOOK/slides/schema/relaxng/pool.rng | 6084 +++ DOCBOOK/slides/schema/relaxng/product.rng | 250 + DOCBOOK/slides/schema/relaxng/programming.rng | 1116 + DOCBOOK/slides/schema/relaxng/qandaset.rng | 245 + DOCBOOK/slides/schema/relaxng/refentry.rng | 488 + DOCBOOK/slides/schema/relaxng/refsect1.rng | 192 + DOCBOOK/slides/schema/relaxng/sect1.rng | 360 + DOCBOOK/slides/schema/relaxng/slides.rnc | 206 + DOCBOOK/slides/schema/relaxng/slides.rng | 362 + DOCBOOK/slides/schema/relaxng/svg.rng | 112 + DOCBOOK/slides/schema/relaxng/tasks.rng | 170 + DOCBOOK/slides/schema/relaxng/technical.rng | 220 + DOCBOOK/slides/schema/relaxng/toc.rng | 161 + DOCBOOK/slides/schema/relaxng/topic.rng | 106 + DOCBOOK/slides/schema/relaxng/xlink.rng | 182 + DOCBOOK/slides/schema/xsd/admonitions.xsd | 134 + DOCBOOK/slides/schema/xsd/annotations.xsd | 65 + DOCBOOK/slides/schema/xsd/bibliography.xsd | 289 + DOCBOOK/slides/schema/xsd/callouts.xsd | 406 + DOCBOOK/slides/schema/xsd/calstbl.xsd | 1425 + DOCBOOK/slides/schema/xsd/core.xsd | 36 + DOCBOOK/slides/schema/xsd/db.xsd | 37 + DOCBOOK/slides/schema/xsd/docbook.xsd | 37 + DOCBOOK/slides/schema/xsd/docbook1.xsd | 37 + DOCBOOK/slides/schema/xsd/ebnf.xsd | 183 + DOCBOOK/slides/schema/xsd/error.xsd | 97 + DOCBOOK/slides/schema/xsd/glossary.xsd | 319 + DOCBOOK/slides/schema/xsd/gui.xsd | 218 + DOCBOOK/slides/schema/xsd/hier.xsd | 606 + DOCBOOK/slides/schema/xsd/htmltbl.xsd | 536 + DOCBOOK/slides/schema/xsd/index.xsd | 537 + DOCBOOK/slides/schema/xsd/keyboard.xsd | 350 + DOCBOOK/slides/schema/xsd/markup.xsd | 284 + DOCBOOK/slides/schema/xsd/math.xsd | 156 + DOCBOOK/slides/schema/xsd/mathml.xsd | 82 + DOCBOOK/slides/schema/xsd/msgset.xsd | 309 + DOCBOOK/slides/schema/xsd/os.xsd | 369 + DOCBOOK/slides/schema/xsd/pool.xsd | 4834 +++ DOCBOOK/slides/schema/xsd/product.xsd | 255 + DOCBOOK/slides/schema/xsd/programming.xsd | 749 + DOCBOOK/slides/schema/xsd/qandaset.xsd | 188 + DOCBOOK/slides/schema/xsd/refentry.xsd | 361 + DOCBOOK/slides/schema/xsd/refsect1.xsd | 142 + DOCBOOK/slides/schema/xsd/sect1.xsd | 252 + DOCBOOK/slides/schema/xsd/slides.xsd | 362 + DOCBOOK/slides/schema/xsd/svg.xsd | 82 + DOCBOOK/slides/schema/xsd/tasks.xsd | 132 + DOCBOOK/slides/schema/xsd/technical.xsd | 250 + DOCBOOK/slides/schema/xsd/toc.xsd | 116 + DOCBOOK/slides/schema/xsd/topic.xsd | 70 + DOCBOOK/slides/schema/xsd/xlink.xsd | 67 + DOCBOOK/slides/schema/xsd/xlink1.xsd | 103 + DOCBOOK/slides/schema/xsd/xml.xsd | 35 + DOCBOOK/slides/slidy/.htaccess | 28 + DOCBOOK/slides/slidy/Overview.html | 911 + DOCBOOK/slides/slidy/Overview.xhtml | 911 + DOCBOOK/slides/slidy/blank.html | 30 + DOCBOOK/slides/slidy/graphics/Thumbs.db | Bin 0 -> 29696 bytes .../slides/slidy/graphics/bullet-fold-dim.gif | Bin 0 -> 161 bytes .../slides/slidy/graphics/bullet-fold-dim.png | Bin 0 -> 2905 bytes DOCBOOK/slides/slidy/graphics/bullet-fold.gif | Bin 0 -> 163 bytes DOCBOOK/slides/slidy/graphics/bullet-fold.png | Bin 0 -> 2901 bytes .../slidy/graphics/bullet-nofold-dim.gif | Bin 0 -> 142 bytes .../slidy/graphics/bullet-nofold-dim.png | Bin 0 -> 2892 bytes .../slides/slidy/graphics/bullet-nofold.gif | Bin 0 -> 157 bytes .../slides/slidy/graphics/bullet-nofold.png | Bin 0 -> 2888 bytes .../slidy/graphics/bullet-unfold-dim.gif | Bin 0 -> 166 bytes .../slidy/graphics/bullet-unfold-dim.png | Bin 0 -> 2913 bytes .../slides/slidy/graphics/bullet-unfold.gif | Bin 0 -> 163 bytes .../slides/slidy/graphics/bullet-unfold.png | Bin 0 -> 2909 bytes DOCBOOK/slides/slidy/graphics/bullet.png | Bin 0 -> 167 bytes DOCBOOK/slides/slidy/graphics/example.png | Bin 0 -> 6652 bytes DOCBOOK/slides/slidy/graphics/example.svg | 223 + DOCBOOK/slides/slidy/graphics/face1.gif | Bin 0 -> 5279 bytes DOCBOOK/slides/slidy/graphics/face2.gif | Bin 0 -> 2378 bytes DOCBOOK/slides/slidy/graphics/face3.gif | Bin 0 -> 800 bytes DOCBOOK/slides/slidy/graphics/face4.gif | Bin 0 -> 846 bytes DOCBOOK/slides/slidy/graphics/fold-bright.gif | Bin 0 -> 145 bytes DOCBOOK/slides/slidy/graphics/fold-dim.bmp | Bin 0 -> 306 bytes DOCBOOK/slides/slidy/graphics/fold-dim.gif | Bin 0 -> 56 bytes DOCBOOK/slides/slidy/graphics/fold.bmp | Bin 0 -> 306 bytes DOCBOOK/slides/slidy/graphics/fold.gif | Bin 0 -> 56 bytes DOCBOOK/slides/slidy/graphics/icon-blue.png | Bin 0 -> 204 bytes DOCBOOK/slides/slidy/graphics/keys2.jpg | Bin 0 -> 42807 bytes DOCBOOK/slides/slidy/graphics/nofold-dim.bmp | Bin 0 -> 306 bytes DOCBOOK/slides/slidy/graphics/nofold-dim.gif | Bin 0 -> 48 bytes DOCBOOK/slides/slidy/graphics/nofold.bmp | Bin 0 -> 306 bytes .../slides/slidy/graphics/unfold-bright.gif | Bin 0 -> 170 bytes DOCBOOK/slides/slidy/graphics/unfold-dim.bmp | Bin 0 -> 306 bytes DOCBOOK/slides/slidy/graphics/unfold-dim.gif | Bin 0 -> 59 bytes DOCBOOK/slides/slidy/graphics/unfold.bmp | Bin 0 -> 306 bytes DOCBOOK/slides/slidy/graphics/unfold.gif | Bin 0 -> 59 bytes .../slides/slidy/graphics/w3c-logo-blue.gif | Bin 0 -> 1791 bytes .../slides/slidy/graphics/w3c-logo-blue.svg | 14 + .../slidy/graphics/w3c-logo-slanted.jpg | Bin 0 -> 26539 bytes .../slides/slidy/graphics/w3c-logo-white.gif | Bin 0 -> 793 bytes .../slides/slidy/graphics/w3c-logo-white.svg | 14 + DOCBOOK/slides/slidy/help/.htaccess | 28 + DOCBOOK/slides/slidy/help/help.html | 80 + DOCBOOK/slides/slidy/help/help.html.ca | 52 + DOCBOOK/slides/slidy/help/help.html.de | 96 + DOCBOOK/slides/slidy/help/help.html.en | 81 + DOCBOOK/slides/slidy/help/help.html.es | 52 + DOCBOOK/slides/slidy/help/help.html.fr | 118 + DOCBOOK/slides/slidy/help/help.html.hu | 98 + DOCBOOK/slides/slidy/help/help.html.nl | 82 + DOCBOOK/slides/slidy/help/help.html.pl | 76 + DOCBOOK/slides/slidy/help/help.html.pt-br | 95 + DOCBOOK/slides/slidy/help/help.html.pt_br | 95 + DOCBOOK/slides/slidy/help/help.html.sv | 75 + DOCBOOK/slides/slidy/help/help.pt-br.html | 95 + DOCBOOK/slides/slidy/scripts/.htaccess | 28 + DOCBOOK/slides/slidy/scripts/slidy.js | 2974 ++ DOCBOOK/slides/slidy/scripts/slidy.js.gz | Bin 0 -> 12874 bytes DOCBOOK/slides/slidy/styles/.htaccess | 28 + DOCBOOK/slides/slidy/styles/slidy.css | 405 + DOCBOOK/slides/slidy/styles/w3c-blue.css | 497 + DOCBOOK/slides/tools/dbs3-upgrade.xsl | 180 + DOCBOOK/slides/xhtml/param.xml | 824 + DOCBOOK/slides/xhtml/param.xsl | 71 + DOCBOOK/slides/xhtml/plain-titlepage.xml | 26 + DOCBOOK/slides/xhtml/plain-titlepage.xsl | 140 + DOCBOOK/slides/xhtml/plain.xsl | 535 + DOCBOOK/slides/xhtml/s5.xsl | 95 + DOCBOOK/slides/xhtml/slidy.xsl | 85 + DOCBOOK/svn-commit.tmp | 4 + DOCBOOK/template/titlepage.xml | 478 + DOCBOOK/template/titlepage.xsl | 1364 + DOCBOOK/tests/refentry.007.ns.xml | 325 + DOCBOOK/tests/refentry.007.xml | 340 + DOCBOOK/tools/bin/docbook-xsl-update | 53 + DOCBOOK/tools/make/Makefile.DocBook | 698 + DOCBOOK/tools/make/Makefile.combine | 182 + DOCBOOK/tools/make/Makefile.docParam | 59 + DOCBOOK/webhelp/LICENSE | 1 + DOCBOOK/webhelp/Makefile.sample | 111 + DOCBOOK/webhelp/build.properties | 79 + DOCBOOK/webhelp/build.xml | 168 + DOCBOOK/webhelp/build_custom_webhelp.xml | 168 + DOCBOOK/webhelp/docs/ch01.html | 148 + DOCBOOK/webhelp/docs/ch02.html | 139 + DOCBOOK/webhelp/docs/ch02s01.html | 249 + DOCBOOK/webhelp/docs/ch02s02.html | 150 + DOCBOOK/webhelp/docs/ch02s02s01.html | 177 + DOCBOOK/webhelp/docs/ch02s03.html | 157 + DOCBOOK/webhelp/docs/ch02s04.html | 139 + DOCBOOK/webhelp/docs/ch02s05.html | 149 + DOCBOOK/webhelp/docs/ch03.html | 134 + DOCBOOK/webhelp/docs/ch03s01.html | 155 + DOCBOOK/webhelp/docs/ch03s02.html | 178 + DOCBOOK/webhelp/docs/ch03s02s01.html | 192 + DOCBOOK/webhelp/docs/ch04.html | 144 + DOCBOOK/webhelp/docs/ch05.html | 130 + DOCBOOK/webhelp/docs/ch05s01.html | 132 + DOCBOOK/webhelp/docs/ch05s02.html | 132 + DOCBOOK/webhelp/docs/common/browserDetect.js | 116 + DOCBOOK/webhelp/docs/common/css/ie.css | 13 + .../webhelp/docs/common/css/positioning.css | 377 + DOCBOOK/webhelp/docs/common/images/Thumbs.db | Bin 0 -> 6656 bytes .../docs/common/images/admon/caution.png | Bin 0 -> 1250 bytes .../docs/common/images/admon/important.png | Bin 0 -> 722 bytes .../webhelp/docs/common/images/admon/note.png | Bin 0 -> 490 bytes .../webhelp/docs/common/images/admon/tip.png | Bin 0 -> 449 bytes .../docs/common/images/admon/warning.png | Bin 0 -> 1241 bytes .../webhelp/docs/common/images/callouts/1.png | Bin 0 -> 396 bytes .../docs/common/images/callouts/10.png | Bin 0 -> 524 bytes .../docs/common/images/callouts/11.png | Bin 0 -> 397 bytes .../docs/common/images/callouts/12.png | Bin 0 -> 517 bytes .../docs/common/images/callouts/13.png | Bin 0 -> 520 bytes .../docs/common/images/callouts/14.png | Bin 0 -> 474 bytes .../docs/common/images/callouts/15.png | Bin 0 -> 522 bytes .../docs/common/images/callouts/16.png | Bin 0 -> 539 bytes .../docs/common/images/callouts/17.png | Bin 0 -> 475 bytes .../docs/common/images/callouts/18.png | Bin 0 -> 542 bytes .../docs/common/images/callouts/19.png | Bin 0 -> 539 bytes .../webhelp/docs/common/images/callouts/2.png | Bin 0 -> 475 bytes .../docs/common/images/callouts/20.png | Bin 0 -> 588 bytes .../docs/common/images/callouts/21.png | Bin 0 -> 517 bytes .../docs/common/images/callouts/22.png | Bin 0 -> 503 bytes .../docs/common/images/callouts/23.png | Bin 0 -> 589 bytes .../docs/common/images/callouts/24.png | Bin 0 -> 542 bytes .../docs/common/images/callouts/25.png | Bin 0 -> 564 bytes .../docs/common/images/callouts/26.png | Bin 0 -> 596 bytes .../docs/common/images/callouts/27.png | Bin 0 -> 547 bytes .../docs/common/images/callouts/28.png | Bin 0 -> 594 bytes .../docs/common/images/callouts/29.png | Bin 0 -> 594 bytes .../webhelp/docs/common/images/callouts/3.png | Bin 0 -> 506 bytes .../docs/common/images/callouts/30.png | Bin 0 -> 597 bytes .../webhelp/docs/common/images/callouts/4.png | Bin 0 -> 425 bytes .../webhelp/docs/common/images/callouts/5.png | Bin 0 -> 490 bytes .../webhelp/docs/common/images/callouts/6.png | Bin 0 -> 526 bytes .../webhelp/docs/common/images/callouts/7.png | Bin 0 -> 437 bytes .../webhelp/docs/common/images/callouts/8.png | Bin 0 -> 509 bytes .../webhelp/docs/common/images/callouts/9.png | Bin 0 -> 537 bytes .../webhelp/docs/common/images/header-bg.gif | Bin 0 -> 619 bytes .../webhelp/docs/common/images/header-bg.png | Bin 0 -> 201 bytes .../docs/common/images/highlight-blue.gif | Bin 0 -> 471 bytes .../docs/common/images/highlight-yellow.gif | Bin 0 -> 331 bytes .../webhelp/docs/common/images/loading.gif | Bin 0 -> 1553 bytes DOCBOOK/webhelp/docs/common/images/logo.png | Bin 0 -> 35061 bytes .../webhelp/docs/common/images/next-arrow.png | Bin 0 -> 199 bytes .../docs/common/images/previous-arrow.png | Bin 0 -> 198 bytes .../docs/common/images/search-icon.png | Bin 0 -> 340 bytes .../docs/common/images/showHideTreeIcons.png | Bin 0 -> 726 bytes .../webhelp/docs/common/images/sidebar.png | Bin 0 -> 177 bytes .../webhelp/docs/common/images/starsSmall.png | Bin 0 -> 1032 bytes .../webhelp/docs/common/images/toc-icon.png | Bin 0 -> 3447 bytes .../docs/common/jquery/jquery-1.7.2.min.js | 4 + .../jquery/jquery-ui-1.8.2.custom.min.js | 321 + .../docs/common/jquery/jquery.cookie.js | 93 + .../docs/common/jquery/jquery.ui.all.js | 418 + .../common/jquery/layout/jquery.layout.js | 5449 +++ .../jquery/theme-redmond/images/Thumbs.db | Bin 0 -> 2560 bytes .../images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_55_fbec88_40x100.png | Bin 0 -> 182 bytes .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 0 -> 162 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 0 -> 123 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 0 -> 3457 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 0 -> 104 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 0 -> 88 bytes .../images/ui-icons_217bc0_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_469bdd_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_6da8d5_256x240.png | Bin 0 -> 5355 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_d8e7f3_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_f9bd01_256x240.png | Bin 0 -> 5355 bytes .../theme-redmond/jquery-ui-1.8.2.custom.css | 398 + .../theme-redmond/jquery-ui-1.8.21.custom.css | 304 + .../common/jquery/treeview/images/Thumbs.db | Bin 0 -> 14848 bytes .../common/jquery/treeview/images/file.gif | Bin 0 -> 1008 bytes .../jquery/treeview/images/folder-closed.gif | Bin 0 -> 631 bytes .../jquery/treeview/images/folder-closed2.gif | Bin 0 -> 105 bytes .../common/jquery/treeview/images/folder.gif | Bin 0 -> 631 bytes .../common/jquery/treeview/images/folder2.gif | Bin 0 -> 106 bytes .../common/jquery/treeview/images/minus.gif | Bin 0 -> 837 bytes .../common/jquery/treeview/images/plus.gif | Bin 0 -> 841 bytes .../treeview/images/treeview-black-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-black.gif | Bin 0 -> 1216 bytes .../treeview/images/treeview-default-line.gif | Bin 0 -> 1993 bytes .../treeview/images/treeview-default.gif | Bin 0 -> 1222 bytes .../images/treeview-famfamfam-line.gif | Bin 0 -> 807 bytes .../treeview/images/treeview-famfamfam.gif | Bin 0 -> 1280 bytes .../treeview/images/treeview-gray-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-gray.gif | Bin 0 -> 1230 bytes .../treeview/images/treeview-red-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-red.gif | Bin 0 -> 1230 bytes .../jquery/treeview/jquery.treeview.css | 85 + .../jquery/treeview/jquery.treeview.min.js | 16 + DOCBOOK/webhelp/docs/common/main.js | 276 + DOCBOOK/webhelp/docs/common/splitterInit.js | 40 + DOCBOOK/webhelp/docs/favicon.ico | Bin 0 -> 5686 bytes DOCBOOK/webhelp/docs/images/sample.jpg | Bin 0 -> 78931 bytes DOCBOOK/webhelp/docs/index.html | 179 + DOCBOOK/webhelp/docs/ix01.html | 128 + DOCBOOK/webhelp/docs/search/default.props | 1 + DOCBOOK/webhelp/docs/search/en-us.props | 45 + DOCBOOK/webhelp/docs/search/es-es.props | 179 + .../webhelp/docs/search/htmlFileInfoList.js | 38 + DOCBOOK/webhelp/docs/search/index-1.js | 391 + DOCBOOK/webhelp/docs/search/index-2.js | 390 + DOCBOOK/webhelp/docs/search/index-3.js | 388 + DOCBOOK/webhelp/docs/search/ja-jp.props | 1 + DOCBOOK/webhelp/docs/search/l10n.js | 5 + DOCBOOK/webhelp/docs/search/nwSearchFnt.js | 886 + DOCBOOK/webhelp/docs/search/punctuation.props | 31 + .../docs/search/stemmers/de_stemmer.js | 247 + .../docs/search/stemmers/en_stemmer.js | 234 + .../docs/search/stemmers/fr_stemmer.js | 299 + DOCBOOK/webhelp/docsrc/images/sample.jpg | Bin 0 -> 78931 bytes DOCBOOK/webhelp/docsrc/readme.xml | 970 + .../webhelp/docsrc/webhelp-files/ch01.html | 326 + .../webhelp/docsrc/webhelp-files/ch02.html | 928 + .../webhelp/docsrc/webhelp-files/ch03.html | 559 + .../webhelp/docsrc/webhelp-files/ch04.html | 359 + .../webhelp-files/common/browserDetect.js | 116 + .../docsrc/webhelp-files/common/css/ie.css | 13 + .../webhelp-files/common/css/positioning.css | 377 + .../webhelp-files/common/images/Thumbs.db | Bin 0 -> 6656 bytes .../common/images/admon/caution.png | Bin 0 -> 1250 bytes .../common/images/admon/important.png | Bin 0 -> 722 bytes .../common/images/admon/note.png | Bin 0 -> 490 bytes .../webhelp-files/common/images/admon/tip.png | Bin 0 -> 449 bytes .../common/images/admon/warning.png | Bin 0 -> 1241 bytes .../common/images/callouts/1.png | Bin 0 -> 396 bytes .../common/images/callouts/10.png | Bin 0 -> 524 bytes .../common/images/callouts/11.png | Bin 0 -> 397 bytes .../common/images/callouts/12.png | Bin 0 -> 517 bytes .../common/images/callouts/13.png | Bin 0 -> 520 bytes .../common/images/callouts/14.png | Bin 0 -> 474 bytes .../common/images/callouts/15.png | Bin 0 -> 522 bytes .../common/images/callouts/16.png | Bin 0 -> 539 bytes .../common/images/callouts/17.png | Bin 0 -> 475 bytes .../common/images/callouts/18.png | Bin 0 -> 542 bytes .../common/images/callouts/19.png | Bin 0 -> 539 bytes .../common/images/callouts/2.png | Bin 0 -> 475 bytes .../common/images/callouts/20.png | Bin 0 -> 588 bytes .../common/images/callouts/21.png | Bin 0 -> 517 bytes .../common/images/callouts/22.png | Bin 0 -> 503 bytes .../common/images/callouts/23.png | Bin 0 -> 589 bytes .../common/images/callouts/24.png | Bin 0 -> 542 bytes .../common/images/callouts/25.png | Bin 0 -> 564 bytes .../common/images/callouts/26.png | Bin 0 -> 596 bytes .../common/images/callouts/27.png | Bin 0 -> 547 bytes .../common/images/callouts/28.png | Bin 0 -> 594 bytes .../common/images/callouts/29.png | Bin 0 -> 594 bytes .../common/images/callouts/3.png | Bin 0 -> 506 bytes .../common/images/callouts/30.png | Bin 0 -> 597 bytes .../common/images/callouts/4.png | Bin 0 -> 425 bytes .../common/images/callouts/5.png | Bin 0 -> 490 bytes .../common/images/callouts/6.png | Bin 0 -> 526 bytes .../common/images/callouts/7.png | Bin 0 -> 437 bytes .../common/images/callouts/8.png | Bin 0 -> 509 bytes .../common/images/callouts/9.png | Bin 0 -> 537 bytes .../webhelp-files/common/images/header-bg.gif | Bin 0 -> 619 bytes .../webhelp-files/common/images/header-bg.png | Bin 0 -> 201 bytes .../common/images/highlight-blue.gif | Bin 0 -> 471 bytes .../common/images/highlight-yellow.gif | Bin 0 -> 331 bytes .../webhelp-files/common/images/loading.gif | Bin 0 -> 1553 bytes .../webhelp-files/common/images/logo.png | Bin 0 -> 35061 bytes .../common/images/next-arrow.png | Bin 0 -> 199 bytes .../common/images/previous-arrow.png | Bin 0 -> 198 bytes .../common/images/search-icon.png | Bin 0 -> 340 bytes .../common/images/showHideTreeIcons.png | Bin 0 -> 726 bytes .../webhelp-files/common/images/sidebar.png | Bin 0 -> 177 bytes .../common/images/starsSmall.png | Bin 0 -> 1032 bytes .../webhelp-files/common/images/toc-icon.png | Bin 0 -> 3447 bytes .../common/jquery/jquery-1.7.2.min.js | 4 + .../jquery/jquery-ui-1.8.2.custom.min.js | 321 + .../common/jquery/jquery.cookie.js | 93 + .../common/jquery/jquery.ui.all.js | 418 + .../common/jquery/layout/jquery.layout.js | 5449 +++ .../images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_55_fbec88_40x100.png | Bin 0 -> 182 bytes .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 0 -> 162 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 0 -> 123 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 0 -> 3457 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 0 -> 104 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 0 -> 88 bytes .../images/ui-icons_217bc0_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_469bdd_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_6da8d5_256x240.png | Bin 0 -> 5355 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_d8e7f3_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_f9bd01_256x240.png | Bin 0 -> 5355 bytes .../theme-redmond/jquery-ui-1.8.2.custom.css | 398 + .../theme-redmond/jquery-ui-1.8.21.custom.css | 304 + .../common/jquery/treeview/images/Thumbs.db | Bin 0 -> 12288 bytes .../common/jquery/treeview/images/file.gif | Bin 0 -> 1008 bytes .../jquery/treeview/images/folder-closed.gif | Bin 0 -> 631 bytes .../jquery/treeview/images/folder-closed2.gif | Bin 0 -> 105 bytes .../common/jquery/treeview/images/folder.gif | Bin 0 -> 631 bytes .../common/jquery/treeview/images/folder2.gif | Bin 0 -> 106 bytes .../common/jquery/treeview/images/minus.gif | Bin 0 -> 837 bytes .../common/jquery/treeview/images/plus.gif | Bin 0 -> 841 bytes .../treeview/images/treeview-black-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-black.gif | Bin 0 -> 1216 bytes .../treeview/images/treeview-default-line.gif | Bin 0 -> 1993 bytes .../treeview/images/treeview-default.gif | Bin 0 -> 1222 bytes .../images/treeview-famfamfam-line.gif | Bin 0 -> 807 bytes .../treeview/images/treeview-famfamfam.gif | Bin 0 -> 1280 bytes .../treeview/images/treeview-gray-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-gray.gif | Bin 0 -> 1230 bytes .../treeview/images/treeview-red-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-red.gif | Bin 0 -> 1230 bytes .../jquery/treeview/jquery.treeview.css | 85 + .../jquery/treeview/jquery.treeview.min.js | 16 + .../docsrc/webhelp-files/common/main.js | 276 + .../webhelp-files/common/splitterInit.js | 40 + .../webhelp/docsrc/webhelp-files/favicon.ico | Bin 0 -> 5686 bytes .../docsrc/webhelp-files/images/sample.jpg | Bin 0 -> 78931 bytes .../webhelp/docsrc/webhelp-files/index.html | 368 + .../webhelp/docsrc/webhelp-files/ix01.html | 319 + .../webhelp-files/search/htmlFileInfoList.js | 16 + .../docsrc/webhelp-files/search/index-1.js | 426 + .../docsrc/webhelp-files/search/index-2.js | 425 + .../docsrc/webhelp-files/search/index-3.js | 422 + .../docsrc/webhelp-files/search/l10n.js | 5 + .../webhelp-files/search/nwSearchFnt.js | 886 + .../search/stemmers/de_stemmer.js | 247 + DOCBOOK/webhelp/docsrc/xinclude-test.xml | 13 + .../webhelp/template/common/browserDetect.js | 116 + DOCBOOK/webhelp/template/common/css/ie.css | 13 + .../template/common/css/positioning.css | 377 + .../webhelp/template/common/images/Thumbs.db | Bin 0 -> 6656 bytes .../template/common/images/admon/caution.png | Bin 0 -> 1250 bytes .../common/images/admon/important.png | Bin 0 -> 722 bytes .../template/common/images/admon/note.png | Bin 0 -> 490 bytes .../template/common/images/admon/tip.png | Bin 0 -> 449 bytes .../template/common/images/admon/warning.png | Bin 0 -> 1241 bytes .../template/common/images/callouts/1.png | Bin 0 -> 396 bytes .../template/common/images/callouts/10.png | Bin 0 -> 524 bytes .../template/common/images/callouts/11.png | Bin 0 -> 397 bytes .../template/common/images/callouts/12.png | Bin 0 -> 517 bytes .../template/common/images/callouts/13.png | Bin 0 -> 520 bytes .../template/common/images/callouts/14.png | Bin 0 -> 474 bytes .../template/common/images/callouts/15.png | Bin 0 -> 522 bytes .../template/common/images/callouts/16.png | Bin 0 -> 539 bytes .../template/common/images/callouts/17.png | Bin 0 -> 475 bytes .../template/common/images/callouts/18.png | Bin 0 -> 542 bytes .../template/common/images/callouts/19.png | Bin 0 -> 539 bytes .../template/common/images/callouts/2.png | Bin 0 -> 475 bytes .../template/common/images/callouts/20.png | Bin 0 -> 588 bytes .../template/common/images/callouts/21.png | Bin 0 -> 517 bytes .../template/common/images/callouts/22.png | Bin 0 -> 503 bytes .../template/common/images/callouts/23.png | Bin 0 -> 589 bytes .../template/common/images/callouts/24.png | Bin 0 -> 542 bytes .../template/common/images/callouts/25.png | Bin 0 -> 564 bytes .../template/common/images/callouts/26.png | Bin 0 -> 596 bytes .../template/common/images/callouts/27.png | Bin 0 -> 547 bytes .../template/common/images/callouts/28.png | Bin 0 -> 594 bytes .../template/common/images/callouts/29.png | Bin 0 -> 594 bytes .../template/common/images/callouts/3.png | Bin 0 -> 506 bytes .../template/common/images/callouts/30.png | Bin 0 -> 597 bytes .../template/common/images/callouts/4.png | Bin 0 -> 425 bytes .../template/common/images/callouts/5.png | Bin 0 -> 490 bytes .../template/common/images/callouts/6.png | Bin 0 -> 526 bytes .../template/common/images/callouts/7.png | Bin 0 -> 437 bytes .../template/common/images/callouts/8.png | Bin 0 -> 509 bytes .../template/common/images/callouts/9.png | Bin 0 -> 537 bytes .../template/common/images/header-bg.gif | Bin 0 -> 619 bytes .../template/common/images/header-bg.png | Bin 0 -> 201 bytes .../template/common/images/highlight-blue.gif | Bin 0 -> 471 bytes .../common/images/highlight-yellow.gif | Bin 0 -> 331 bytes .../template/common/images/loading.gif | Bin 0 -> 1553 bytes .../webhelp/template/common/images/logo.png | Bin 0 -> 35061 bytes .../template/common/images/next-arrow.png | Bin 0 -> 199 bytes .../template/common/images/previous-arrow.png | Bin 0 -> 198 bytes .../template/common/images/search-icon.png | Bin 0 -> 340 bytes .../common/images/showHideTreeIcons.png | Bin 0 -> 726 bytes .../template/common/images/sidebar.png | Bin 0 -> 177 bytes .../template/common/images/starsSmall.png | Bin 0 -> 1032 bytes .../template/common/images/toc-icon.png | Bin 0 -> 3447 bytes .../common/jquery/jquery-1.7.2.min.js | 4 + .../jquery/jquery-ui-1.8.2.custom.min.js | 321 + .../template/common/jquery/jquery.cookie.js | 93 + .../template/common/jquery/jquery.ui.all.js | 418 + .../common/jquery/layout/jquery.layout.js | 5449 +++ .../images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_55_fbec88_40x100.png | Bin 0 -> 182 bytes .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 0 -> 162 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 0 -> 123 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 0 -> 3457 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 0 -> 104 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 0 -> 88 bytes .../images/ui-icons_217bc0_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_469bdd_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_6da8d5_256x240.png | Bin 0 -> 5355 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_d8e7f3_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_f9bd01_256x240.png | Bin 0 -> 5355 bytes .../theme-redmond/jquery-ui-1.8.2.custom.css | 398 + .../theme-redmond/jquery-ui-1.8.21.custom.css | 304 + .../common/jquery/treeview/images/Thumbs.db | Bin 0 -> 12288 bytes .../common/jquery/treeview/images/file.gif | Bin 0 -> 1008 bytes .../jquery/treeview/images/folder-closed.gif | Bin 0 -> 631 bytes .../jquery/treeview/images/folder-closed2.gif | Bin 0 -> 105 bytes .../common/jquery/treeview/images/folder.gif | Bin 0 -> 631 bytes .../common/jquery/treeview/images/folder2.gif | Bin 0 -> 106 bytes .../common/jquery/treeview/images/minus.gif | Bin 0 -> 837 bytes .../common/jquery/treeview/images/plus.gif | Bin 0 -> 841 bytes .../treeview/images/treeview-black-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-black.gif | Bin 0 -> 1216 bytes .../treeview/images/treeview-default-line.gif | Bin 0 -> 1993 bytes .../treeview/images/treeview-default.gif | Bin 0 -> 1222 bytes .../images/treeview-famfamfam-line.gif | Bin 0 -> 807 bytes .../treeview/images/treeview-famfamfam.gif | Bin 0 -> 1280 bytes .../treeview/images/treeview-gray-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-gray.gif | Bin 0 -> 1230 bytes .../treeview/images/treeview-red-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-red.gif | Bin 0 -> 1230 bytes .../jquery/treeview/jquery.treeview.css | 85 + .../jquery/treeview/jquery.treeview.min.js | 16 + DOCBOOK/webhelp/template/common/main.js | 276 + .../webhelp/template/common/splitterInit.js | 40 + DOCBOOK/webhelp/template/favicon.ico | Bin 0 -> 5686 bytes DOCBOOK/webhelp/template/search/default.props | 1 + DOCBOOK/webhelp/template/search/en-us.props | 45 + DOCBOOK/webhelp/template/search/es-es.props | 179 + DOCBOOK/webhelp/template/search/ja-jp.props | 1 + .../webhelp/template/search/nwSearchFnt.js | 886 + .../webhelp/template/search/punctuation.props | 31 + .../template/search/stemmers/de_stemmer.js | 247 + .../template/search/stemmers/en_stemmer.js | 234 + .../template/search/stemmers/fr_stemmer.js | 299 + DOCBOOK/webhelp/xsl/titlepage.templates.xml | 738 + DOCBOOK/webhelp/xsl/titlepage.templates.xsl | 3861 ++ DOCBOOK/webhelp/xsl/webhelp-common.xsl | 932 + DOCBOOK/webhelp/xsl/webhelp-common_custom.xsl | 945 + DOCBOOK/webhelp/xsl/webhelp.xsl | 23 + DOCBOOK/webhelp/xsl/webhelp_custom.xsl | 23 + DOCBOOK/website/autolayout.xsl | 258 + DOCBOOK/website/chunk-common.xsl | 227 + DOCBOOK/website/chunk-tabular.xsl | 12 + DOCBOOK/website/chunk-website.xsl | 12 + DOCBOOK/website/head.xsl | 316 + DOCBOOK/website/makefile-dep.xsl | 143 + DOCBOOK/website/olink.xsl | 297 + DOCBOOK/website/param.xml | 788 + DOCBOOK/website/param.xsl | 54 + DOCBOOK/website/rss.xsl | 143 + DOCBOOK/website/tabular.xsl | 213 + DOCBOOK/website/toc-tabular.xsl | 480 + DOCBOOK/website/toc.xsl | 286 + DOCBOOK/website/website-common.xsl | 821 + DOCBOOK/website/website-targets.xsl | 27 + DOCBOOK/website/website.xsl | 132 + DOCBOOK/website/xbel.xsl | 114 + DOCBOOK/xhtml-1_1/admon.xsl | 140 + DOCBOOK/xhtml-1_1/annotations.xsl | 160 + DOCBOOK/xhtml-1_1/autoidx-kimber.xsl | 140 + DOCBOOK/xhtml-1_1/autoidx-kosek.xsl | 110 + DOCBOOK/xhtml-1_1/autoidx-ng.xsl | 23 + DOCBOOK/xhtml-1_1/autoidx.xsl | 733 + DOCBOOK/xhtml-1_1/autotoc.xsl | 703 + DOCBOOK/xhtml-1_1/biblio-iso690.xsl | 1302 + DOCBOOK/xhtml-1_1/biblio.xsl | 1371 + DOCBOOK/xhtml-1_1/block.xsl | 581 + DOCBOOK/xhtml-1_1/callout.xsl | 210 + DOCBOOK/xhtml-1_1/changebars.xsl | 80 + DOCBOOK/xhtml-1_1/chunk-changebars.xsl | 97 + DOCBOOK/xhtml-1_1/chunk-code.xsl | 668 + DOCBOOK/xhtml-1_1/chunk-common.xsl | 1616 + DOCBOOK/xhtml-1_1/chunk.xsl | 53 + DOCBOOK/xhtml-1_1/chunker.xsl | 313 + DOCBOOK/xhtml-1_1/chunkfast.xsl | 70 + DOCBOOK/xhtml-1_1/chunktoc.xsl | 537 + DOCBOOK/xhtml-1_1/component.xsl | 440 + DOCBOOK/xhtml-1_1/division.xsl | 214 + DOCBOOK/xhtml-1_1/docbook.css.xml | 110 + DOCBOOK/xhtml-1_1/docbook.xsl | 530 + DOCBOOK/xhtml-1_1/ebnf.xsl | 328 + DOCBOOK/xhtml-1_1/footnote.xsl | 328 + DOCBOOK/xhtml-1_1/formal.xsl | 496 + DOCBOOK/xhtml-1_1/glossary.xsl | 599 + DOCBOOK/xhtml-1_1/graphics.xsl | 1511 + DOCBOOK/xhtml-1_1/highlight.xsl | 89 + DOCBOOK/xhtml-1_1/html-rtf.xsl | 321 + DOCBOOK/xhtml-1_1/html.xsl | 686 + DOCBOOK/xhtml-1_1/htmltbl.xsl | 102 + DOCBOOK/xhtml-1_1/index.xsl | 257 + DOCBOOK/xhtml-1_1/info.xsl | 48 + DOCBOOK/xhtml-1_1/inline.xsl | 1491 + DOCBOOK/xhtml-1_1/keywords.xsl | 38 + DOCBOOK/xhtml-1_1/lists.xsl | 1201 + DOCBOOK/xhtml-1_1/maketoc.xsl | 92 + DOCBOOK/xhtml-1_1/manifest.xsl | 23 + DOCBOOK/xhtml-1_1/math.xsl | 286 + DOCBOOK/xhtml-1_1/oldchunker.xsl | 177 + DOCBOOK/xhtml-1_1/onechunk.xsl | 37 + DOCBOOK/xhtml-1_1/param.xsl | 442 + DOCBOOK/xhtml-1_1/pi.xsl | 1237 + DOCBOOK/xhtml-1_1/profile-chunk-code.xsl | 640 + DOCBOOK/xhtml-1_1/profile-chunk.xsl | 55 + DOCBOOK/xhtml-1_1/profile-docbook.xsl | 502 + DOCBOOK/xhtml-1_1/profile-onechunk.xsl | 39 + DOCBOOK/xhtml-1_1/qandaset.xsl | 440 + DOCBOOK/xhtml-1_1/refentry.xsl | 307 + DOCBOOK/xhtml-1_1/sections.xsl | 564 + DOCBOOK/xhtml-1_1/synop.xsl | 1616 + DOCBOOK/xhtml-1_1/table.xsl | 1178 + DOCBOOK/xhtml-1_1/task.xsl | 76 + DOCBOOK/xhtml-1_1/titlepage.templates.xsl | 4005 ++ DOCBOOK/xhtml-1_1/titlepage.xsl | 1108 + DOCBOOK/xhtml-1_1/toc.xsl | 334 + DOCBOOK/xhtml-1_1/verbatim.xsl | 389 + DOCBOOK/xhtml-1_1/xref.xsl | 1254 + DOCBOOK/xhtml/admon.xsl | 142 + DOCBOOK/xhtml/annotations.xsl | 160 + DOCBOOK/xhtml/autoidx-kimber.xsl | 140 + DOCBOOK/xhtml/autoidx-kosek.xsl | 110 + DOCBOOK/xhtml/autoidx-ng.xsl | 23 + DOCBOOK/xhtml/autoidx.xsl | 736 + DOCBOOK/xhtml/autotoc.xsl | 706 + DOCBOOK/xhtml/biblio-iso690.xsl | 1302 + DOCBOOK/xhtml/biblio.xsl | 1371 + DOCBOOK/xhtml/block.xsl | 584 + DOCBOOK/xhtml/callout.xsl | 210 + DOCBOOK/xhtml/changebars.xsl | 80 + DOCBOOK/xhtml/chunk-changebars.xsl | 97 + DOCBOOK/xhtml/chunk-code.xsl | 668 + DOCBOOK/xhtml/chunk-common.xsl | 1634 + DOCBOOK/xhtml/chunk.xsl | 53 + DOCBOOK/xhtml/chunker.xsl | 316 + DOCBOOK/xhtml/chunkfast.xsl | 70 + DOCBOOK/xhtml/chunktoc.xsl | 537 + DOCBOOK/xhtml/component.xsl | 440 + DOCBOOK/xhtml/division.xsl | 214 + DOCBOOK/xhtml/docbook-no-doctype.xsl | 530 + DOCBOOK/xhtml/docbook.css.xml | 110 + DOCBOOK/xhtml/docbook.xsl | 530 + DOCBOOK/xhtml/ebnf.xsl | 331 + DOCBOOK/xhtml/footnote.xsl | 346 + DOCBOOK/xhtml/formal.xsl | 496 + DOCBOOK/xhtml/glossary.xsl | 602 + DOCBOOK/xhtml/graphics.xsl | 1514 + DOCBOOK/xhtml/highlight.xsl | 87 + DOCBOOK/xhtml/html-rtf.xsl | 321 + DOCBOOK/xhtml/html.xsl | 686 + DOCBOOK/xhtml/htmltbl.xsl | 102 + DOCBOOK/xhtml/index.xsl | 257 + DOCBOOK/xhtml/info.xsl | 48 + DOCBOOK/xhtml/inline.xsl | 1494 + DOCBOOK/xhtml/keywords.xsl | 38 + DOCBOOK/xhtml/lists.xsl | 1227 + DOCBOOK/xhtml/maketoc.xsl | 92 + DOCBOOK/xhtml/manifest.xsl | 23 + DOCBOOK/xhtml/math.xsl | 286 + DOCBOOK/xhtml/oldchunker.xsl | 177 + DOCBOOK/xhtml/onechunk.xsl | 37 + DOCBOOK/xhtml/param.xsl | 446 + DOCBOOK/xhtml/pi.xsl | 1237 + DOCBOOK/xhtml/profile-chunk-code.xsl | 640 + DOCBOOK/xhtml/profile-chunk.xsl | 55 + DOCBOOK/xhtml/profile-docbook.xsl | 502 + DOCBOOK/xhtml/profile-onechunk.xsl | 39 + DOCBOOK/xhtml/qandaset.xsl | 440 + DOCBOOK/xhtml/refentry.xsl | 307 + DOCBOOK/xhtml/sections.xsl | 564 + DOCBOOK/xhtml/synop.xsl | 1616 + DOCBOOK/xhtml/table.xsl | 1178 + DOCBOOK/xhtml/task.xsl | 76 + DOCBOOK/xhtml/titlepage.templates.xml | 739 + DOCBOOK/xhtml/titlepage.templates.xsl | 4005 ++ DOCBOOK/xhtml/titlepage.xsl | 1108 + DOCBOOK/xhtml/toc.xsl | 334 + DOCBOOK/xhtml/verbatim.xsl | 389 + DOCBOOK/xhtml/xref.xsl | 1257 + DOCBOOK/xhtml5/README | 61 + DOCBOOK/xhtml5/chunk.xsl | 30 + DOCBOOK/xhtml5/chunkfast.xsl | 70 + DOCBOOK/xhtml5/docbook.css.xml | 104 + DOCBOOK/xhtml5/docbook.xsl | 22 + DOCBOOK/xhtml5/html5-chunk-mods.xsl | 112 + DOCBOOK/xhtml5/html5-element-mods.xsl | 791 + DOCBOOK/xhtml5/onechunk.xsl | 37 + DOCBOOK/xhtml5/profile-chunk.xsl | 53 + DOCBOOK/xhtml5/profile-docbook.xsl | 24 + DOCBOOK/xhtml5/xhtml-docbook.xsl | 533 + DOCBOOK/xhtml5/xhtml-profile-docbook.xsl | 407 + DOCBOOK/xhtml5/xhtml2xhtml5.xsl | 51 + Vorlagen/DocBookTemplate.stw | Bin 0 -> 6656 bytes Vorlagen/OOO2SBK.STW | Bin 0 -> 8903 bytes Vorlagen/OOO2SDBK.BAU | Bin 0 -> 8971 bytes Vorlagen/Thumbs.db | Bin 0 -> 17408 bytes Vorlagen/epub3/cover/CoverImage.xhtml | 13 + Vorlagen/epub3/cover/cover.jpg | Bin 0 -> 38210 bytes Vorlagen/epub3/images/annot-close.png | Bin 0 -> 207 bytes Vorlagen/epub3/images/annot-open.png | Bin 0 -> 837 bytes Vorlagen/epub3/images/blank.png | Bin 0 -> 374 bytes Vorlagen/epub3/images/caution.png | Bin 0 -> 1250 bytes Vorlagen/epub3/images/draft.png | Bin 0 -> 16150 bytes Vorlagen/epub3/images/home.png | Bin 0 -> 1156 bytes Vorlagen/epub3/images/important.png | Bin 0 -> 722 bytes Vorlagen/epub3/images/next.png | Bin 0 -> 1150 bytes Vorlagen/epub3/images/note.png | Bin 0 -> 490 bytes Vorlagen/epub3/images/prev.png | Bin 0 -> 1132 bytes Vorlagen/epub3/images/tip.png | Bin 0 -> 449 bytes Vorlagen/epub3/images/toc-blank.png | Bin 0 -> 318 bytes Vorlagen/epub3/images/toc-minus.png | Bin 0 -> 259 bytes Vorlagen/epub3/images/toc-plus.png | Bin 0 -> 264 bytes Vorlagen/epub3/images/up.png | Bin 0 -> 1111 bytes Vorlagen/epub3/images/warning.png | Bin 0 -> 1241 bytes Vorlagen/ooo2sbk.ott | Bin 0 -> 15294 bytes Webhelp/CreateWebHelp.bat | 29 + Webhelp/build.xml | 11 + Webhelp/template/common/browserDetect.js | 116 + Webhelp/template/common/css/ie.css | 13 + Webhelp/template/common/css/positioning.css | 377 + Webhelp/template/common/images/Thumbs.db | Bin 0 -> 6656 bytes .../template/common/images/admon/caution.png | Bin 0 -> 1250 bytes .../common/images/admon/important.png | Bin 0 -> 722 bytes Webhelp/template/common/images/admon/note.png | Bin 0 -> 490 bytes Webhelp/template/common/images/admon/tip.png | Bin 0 -> 449 bytes .../template/common/images/admon/warning.png | Bin 0 -> 1241 bytes Webhelp/template/common/images/callouts/1.png | Bin 0 -> 396 bytes .../template/common/images/callouts/10.png | Bin 0 -> 524 bytes .../template/common/images/callouts/11.png | Bin 0 -> 397 bytes .../template/common/images/callouts/12.png | Bin 0 -> 517 bytes .../template/common/images/callouts/13.png | Bin 0 -> 520 bytes .../template/common/images/callouts/14.png | Bin 0 -> 474 bytes .../template/common/images/callouts/15.png | Bin 0 -> 522 bytes .../template/common/images/callouts/16.png | Bin 0 -> 539 bytes .../template/common/images/callouts/17.png | Bin 0 -> 475 bytes .../template/common/images/callouts/18.png | Bin 0 -> 542 bytes .../template/common/images/callouts/19.png | Bin 0 -> 539 bytes Webhelp/template/common/images/callouts/2.png | Bin 0 -> 475 bytes .../template/common/images/callouts/20.png | Bin 0 -> 588 bytes .../template/common/images/callouts/21.png | Bin 0 -> 517 bytes .../template/common/images/callouts/22.png | Bin 0 -> 503 bytes .../template/common/images/callouts/23.png | Bin 0 -> 589 bytes .../template/common/images/callouts/24.png | Bin 0 -> 542 bytes .../template/common/images/callouts/25.png | Bin 0 -> 564 bytes .../template/common/images/callouts/26.png | Bin 0 -> 596 bytes .../template/common/images/callouts/27.png | Bin 0 -> 547 bytes .../template/common/images/callouts/28.png | Bin 0 -> 594 bytes .../template/common/images/callouts/29.png | Bin 0 -> 594 bytes Webhelp/template/common/images/callouts/3.png | Bin 0 -> 506 bytes .../template/common/images/callouts/30.png | Bin 0 -> 597 bytes Webhelp/template/common/images/callouts/4.png | Bin 0 -> 425 bytes Webhelp/template/common/images/callouts/5.png | Bin 0 -> 490 bytes Webhelp/template/common/images/callouts/6.png | Bin 0 -> 526 bytes Webhelp/template/common/images/callouts/7.png | Bin 0 -> 437 bytes Webhelp/template/common/images/callouts/8.png | Bin 0 -> 509 bytes Webhelp/template/common/images/callouts/9.png | Bin 0 -> 537 bytes Webhelp/template/common/images/header-bg.gif | Bin 0 -> 619 bytes Webhelp/template/common/images/header-bg.png | Bin 0 -> 201 bytes .../template/common/images/highlight-blue.gif | Bin 0 -> 471 bytes .../common/images/highlight-yellow.gif | Bin 0 -> 331 bytes Webhelp/template/common/images/loading.gif | Bin 0 -> 1553 bytes Webhelp/template/common/images/logo.png | Bin 0 -> 35061 bytes Webhelp/template/common/images/next-arrow.png | Bin 0 -> 199 bytes .../template/common/images/previous-arrow.png | Bin 0 -> 198 bytes .../template/common/images/search-icon.png | Bin 0 -> 340 bytes .../common/images/showHideTreeIcons.png | Bin 0 -> 726 bytes Webhelp/template/common/images/sidebar.png | Bin 0 -> 177 bytes Webhelp/template/common/images/starsSmall.png | Bin 0 -> 1032 bytes Webhelp/template/common/images/toc-icon.png | Bin 0 -> 3447 bytes .../common/jquery/jquery-1.7.2.min.js | 4 + .../jquery/jquery-ui-1.8.2.custom.min.js | 321 + .../template/common/jquery/jquery.cookie.js | 93 + .../template/common/jquery/jquery.ui.all.js | 418 + .../common/jquery/layout/jquery.layout.js | 5449 +++ .../images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_55_fbec88_40x100.png | Bin 0 -> 182 bytes .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 0 -> 162 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 0 -> 123 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 0 -> 3457 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 0 -> 104 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 0 -> 88 bytes .../images/ui-icons_217bc0_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_469bdd_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_6da8d5_256x240.png | Bin 0 -> 5355 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_d8e7f3_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_f9bd01_256x240.png | Bin 0 -> 5355 bytes .../theme-redmond/jquery-ui-1.8.2.custom.css | 398 + .../theme-redmond/jquery-ui-1.8.21.custom.css | 304 + .../common/jquery/treeview/images/Thumbs.db | Bin 0 -> 12288 bytes .../common/jquery/treeview/images/file.gif | Bin 0 -> 1008 bytes .../jquery/treeview/images/folder-closed.gif | Bin 0 -> 631 bytes .../jquery/treeview/images/folder-closed2.gif | Bin 0 -> 105 bytes .../common/jquery/treeview/images/folder.gif | Bin 0 -> 631 bytes .../common/jquery/treeview/images/folder2.gif | Bin 0 -> 106 bytes .../common/jquery/treeview/images/minus.gif | Bin 0 -> 837 bytes .../common/jquery/treeview/images/plus.gif | Bin 0 -> 841 bytes .../treeview/images/treeview-black-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-black.gif | Bin 0 -> 1216 bytes .../treeview/images/treeview-default-line.gif | Bin 0 -> 1993 bytes .../treeview/images/treeview-default.gif | Bin 0 -> 1222 bytes .../images/treeview-famfamfam-line.gif | Bin 0 -> 807 bytes .../treeview/images/treeview-famfamfam.gif | Bin 0 -> 1280 bytes .../treeview/images/treeview-gray-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-gray.gif | Bin 0 -> 1230 bytes .../treeview/images/treeview-red-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-red.gif | Bin 0 -> 1230 bytes .../jquery/treeview/jquery.treeview.css | 85 + .../jquery/treeview/jquery.treeview.min.js | 16 + Webhelp/template/common/main.js | 276 + Webhelp/template/common/splitterInit.js | 40 + Webhelp/template/favicon.ico | Bin 0 -> 5686 bytes Webhelp/template/search/default.props | 1 + Webhelp/template/search/en-us.props | 45 + Webhelp/template/search/es-es.props | 179 + Webhelp/template/search/ja-jp.props | 1 + Webhelp/template/search/nwSearchFnt.js | 886 + Webhelp/template/search/punctuation.props | 31 + .../template/search/stemmers/de_stemmer.js | 247 + .../template/search/stemmers/en_stemmer.js | 234 + .../template/search/stemmers/fr_stemmer.js | 299 + config/fop-conf.xml | 0 config/profiles.cfg | 0 lib/Makros/LibreOfficeMakro.txt | 82 + lib/webhelpindexer.jar | Bin ooo2dbk/HISTORY | 912 + ooo2dbk/README.txt | 202 + ooo2dbk/VERSION | 5 + ooo2dbk/doc/ABOUT.txt | 86 + ooo2dbk/doc/TODO.txt | 38 + ooo2dbk/doc/howto-use_psmi.txt | 19 + ooo2dbk/doc/ooo2dbk.1 | 51 + ooo2dbk/docbook-psmi.xsl | 98 + ooo2dbk/images/img001.png | Bin 0 -> 27904 bytes ooo2dbk/images/img002.png | Bin 0 -> 16844 bytes ooo2dbk/images/img003.png | Bin 0 -> 490 bytes ooo2dbk/images/img004.png | Bin 0 -> 2498 bytes ooo2dbk/ole2img.py | 283 + ooo2dbk/ooo2dbk-fo.xsl | 159 + ooo2dbk/ooo2dbk.odf.xsl | 4367 ++ ooo2dbk/ooo2dbk.py | 940 + ooo2dbk/ooo2dbk.pyc | Bin 0 -> 24984 bytes ooo2dbk/ooo2dbk.xml | 162 + ooo2dbk/ooo2dbk.xsl | 4097 ++ ooo2dbk/options.py | 1194 + ooo2dbk/options.pyc | Bin 0 -> 13675 bytes ooo2dbk/text.xml | 732 + xsl/common/gentext.xsl | 48 + xsl/common/inline.xsl | 41 + xsl/common/l10n.xml | 17 + xsl/common/l10n.xsl | 9 + xsl/common/param-refdocs.xsl | 23 + xsl/common/param.xsl | 26 + xsl/common/special-hyph.xsl | 99 + xsl/common/titles.xsl | 209 + xsl/custom_fo.xsl | 50 + xsl/fo.xsl | 57 + xsl/fo/admon.xsl | 75 + xsl/fo/autotoc.xsl | 153 + xsl/fo/block.xsl | 261 + xsl/fo/component.xsl | 566 + xsl/fo/fo-fix.xsl | 62 + xsl/fo/fop.xsl | 83 + xsl/fo/fop1.xsl | 93 + xsl/fo/formal.xsl | 118 + xsl/fo/htmltbl.xsl | 349 + xsl/fo/index.xsl | 158 + xsl/fo/inline.xsl | 67 + xsl/fo/lists.xsl | 573 + xsl/fo/pagesetup.xsl | 193 + xsl/fo/param-refdocs.xsl | 20 + xsl/fo/param-rlsnotes.xsl | 142 + xsl/fo/param.xsl | 391 + xsl/fo/sections.xsl | 221 + xsl/fo/table.xsl | 241 + xsl/fo/titlepage.templates.xml | 424 + xsl/fo/titlepage.templates.xsl | 1537 + xsl/fo/titlepage.xsl | 174 + xsl/fo/verbatim.xsl | 135 + xsl/fo/xref.xsl | 205 + 3490 files changed, 647265 insertions(+) create mode 100755 Ausgabe/common/dbk.css create mode 100755 Ausgabe/common/dbk_html_2.css create mode 100755 Ausgabe/common/dbk_html_3.css create mode 100644 Ausgabe/common/epub.css.xml create mode 100755 Ausgabe/common/fancybox/blank.gif create mode 100755 Ausgabe/common/fancybox/fancybox_loading.gif create mode 100755 Ausgabe/common/fancybox/fancybox_loading@2x.gif create mode 100755 Ausgabe/common/fancybox/fancybox_overlay.png create mode 100755 Ausgabe/common/fancybox/fancybox_sprite.png create mode 100755 Ausgabe/common/fancybox/fancybox_sprite@2x.png create mode 100755 Ausgabe/common/fancybox/helpers/fancybox_buttons.png create mode 100755 Ausgabe/common/fancybox/helpers/jquery.fancybox-buttons.css create mode 100755 Ausgabe/common/fancybox/helpers/jquery.fancybox-buttons.js create mode 100755 Ausgabe/common/fancybox/helpers/jquery.fancybox-media.js create mode 100755 Ausgabe/common/fancybox/helpers/jquery.fancybox-thumbs.css create mode 100755 Ausgabe/common/fancybox/helpers/jquery.fancybox-thumbs.js create mode 100755 Ausgabe/common/fancybox/jquery.fancybox.css create mode 100755 Ausgabe/common/fancybox/jquery.fancybox.js create mode 100755 Ausgabe/common/fancybox/jquery.fancybox.min.css create mode 100755 Ausgabe/common/fancybox/jquery.fancybox.min.js create mode 100755 Ausgabe/common/fancybox/jquery.fancybox.pack.js create mode 100755 Ausgabe/common/fancybox/load_fancybox.js create mode 100755 Ausgabe/common/images/Mein_Logo.png create mode 100755 Ausgabe/common/images/blank.png create mode 100755 Ausgabe/common/images/callouts/1.png create mode 100755 Ausgabe/common/images/callouts/10.png create mode 100755 Ausgabe/common/images/callouts/11.png create mode 100755 Ausgabe/common/images/callouts/12.png create mode 100755 Ausgabe/common/images/callouts/13.png create mode 100755 Ausgabe/common/images/callouts/14.png create mode 100755 Ausgabe/common/images/callouts/15.png create mode 100755 Ausgabe/common/images/callouts/2.png create mode 100755 Ausgabe/common/images/callouts/3.png create mode 100755 Ausgabe/common/images/callouts/4.png create mode 100755 Ausgabe/common/images/callouts/5.png create mode 100755 Ausgabe/common/images/callouts/6.png create mode 100755 Ausgabe/common/images/callouts/7.png create mode 100755 Ausgabe/common/images/callouts/8.png create mode 100755 Ausgabe/common/images/callouts/9.png create mode 100755 Ausgabe/common/images/callouts/ChangeLog create mode 100755 Ausgabe/common/images/caution.png create mode 100755 Ausgabe/common/images/changelog create mode 100755 Ausgabe/common/images/draft.png create mode 100755 Ausgabe/common/images/firebird_logo_400x400.png create mode 100755 Ausgabe/common/images/home.png create mode 100755 Ausgabe/common/images/important.png create mode 100755 Ausgabe/common/images/next.png create mode 100755 Ausgabe/common/images/note.png create mode 100755 Ausgabe/common/images/note_22.png create mode 100755 Ausgabe/common/images/prev.png create mode 100755 Ausgabe/common/images/tip.png create mode 100755 Ausgabe/common/images/toc-blank.png create mode 100755 Ausgabe/common/images/toc-minus.png create mode 100755 Ausgabe/common/images/toc-plus.png create mode 100755 Ausgabe/common/images/up.png create mode 100755 Ausgabe/common/images/warning.png create mode 100755 Ausgabe/common/lib/jquery-1.10.1.min.js create mode 100755 Ausgabe/common/lib/jquery-1.9.0.min.js create mode 100755 Ausgabe/common/lib/jquery-3.3.1.min.js create mode 100755 Ausgabe/common/lib/jquery.mousewheel-3.0.6.pack.js create mode 100755 Ausgabe/common/lib/jquery.mousewheel.min.js create mode 100755 Beispiele/LoremIpsum.odt create mode 100755 Beispiele/Serapion.odt create mode 100755 Beispiele/beispiel_de.odt create mode 100755 Beispiele/beispiel_einfach.odt create mode 100755 DOCBOOK/AUTHORS create mode 100755 DOCBOOK/BUGS create mode 100755 DOCBOOK/COPYING create mode 100755 DOCBOOK/Custom_html.xsl create mode 100755 DOCBOOK/Custom_html_2.xsl create mode 100755 DOCBOOK/Custom_html_Syntax_highlight.xsl create mode 100755 DOCBOOK/Custom_html_help.xsl create mode 100755 DOCBOOK/Custom_xhtml5.xsl create mode 100755 DOCBOOK/INSTALL create mode 100755 DOCBOOK/Makefile create mode 100755 DOCBOOK/NEWS create mode 100755 DOCBOOK/NEWS.html create mode 100755 DOCBOOK/NEWS.xml create mode 100755 DOCBOOK/README create mode 100755 DOCBOOK/README.ns create mode 100755 DOCBOOK/RELEASE-NOTES-TMP.xml create mode 100755 DOCBOOK/RELEASE-NOTES.html create mode 100755 DOCBOOK/RELEASE-NOTES.pdf create mode 100755 DOCBOOK/RELEASE-NOTES.txt create mode 100755 DOCBOOK/RELEASE-NOTES.xml create mode 100755 DOCBOOK/REVISION create mode 100755 DOCBOOK/TODO create mode 100755 DOCBOOK/VERSION create mode 100755 DOCBOOK/VERSION.xsl create mode 100755 DOCBOOK/assembly/README create mode 100755 DOCBOOK/assembly/assemble.xsl create mode 100755 DOCBOOK/assembly/schema/assembly51b7.rnc create mode 100755 DOCBOOK/assembly/schema/docbook51b7.rnc create mode 100755 DOCBOOK/assembly/topic-maker-chunk.xsl create mode 100755 DOCBOOK/assembly/topic-maker.xsl create mode 100755 DOCBOOK/catalog.xml create mode 100755 DOCBOOK/common/addns.xsl create mode 100755 DOCBOOK/common/af.xml create mode 100755 DOCBOOK/common/am.xml create mode 100755 DOCBOOK/common/ar.xml create mode 100755 DOCBOOK/common/as.xml create mode 100755 DOCBOOK/common/ast.xml create mode 100755 DOCBOOK/common/autoidx-kimber.xsl create mode 100755 DOCBOOK/common/autoidx-kosek.xsl create mode 100755 DOCBOOK/common/az.xml create mode 100755 DOCBOOK/common/bg.xml create mode 100755 DOCBOOK/common/bn.xml create mode 100755 DOCBOOK/common/bn_in.xml create mode 100755 DOCBOOK/common/bs.xml create mode 100755 DOCBOOK/common/ca.xml create mode 100755 DOCBOOK/common/charmap.xml create mode 100755 DOCBOOK/common/charmap.xsl create mode 100755 DOCBOOK/common/common.xml create mode 100755 DOCBOOK/common/common.xsl create mode 100755 DOCBOOK/common/cs.xml create mode 100755 DOCBOOK/common/cy.xml create mode 100755 DOCBOOK/common/da.xml create mode 100755 DOCBOOK/common/de.xml create mode 100755 DOCBOOK/common/el.xml create mode 100755 DOCBOOK/common/en.xml create mode 100755 DOCBOOK/common/entities.ent create mode 100755 DOCBOOK/common/eo.xml create mode 100755 DOCBOOK/common/es.xml create mode 100755 DOCBOOK/common/et.xml create mode 100755 DOCBOOK/common/eu.xml create mode 100755 DOCBOOK/common/fa.xml create mode 100755 DOCBOOK/common/fi.xml create mode 100755 DOCBOOK/common/fr.xml create mode 100755 DOCBOOK/common/ga.xml create mode 100755 DOCBOOK/common/gentext.xsl create mode 100755 DOCBOOK/common/gl.xml create mode 100755 DOCBOOK/common/gu.xml create mode 100755 DOCBOOK/common/he.xml create mode 100755 DOCBOOK/common/hi.xml create mode 100755 DOCBOOK/common/hr.xml create mode 100755 DOCBOOK/common/hu.xml create mode 100755 DOCBOOK/common/id.xml create mode 100755 DOCBOOK/common/insertfile.xsl create mode 100755 DOCBOOK/common/is.xml create mode 100755 DOCBOOK/common/it.xml create mode 100755 DOCBOOK/common/ja.xml create mode 100755 DOCBOOK/common/ka.xml create mode 100755 DOCBOOK/common/kn.xml create mode 100755 DOCBOOK/common/ko.xml create mode 100755 DOCBOOK/common/ky.xml create mode 100755 DOCBOOK/common/l10n.dtd create mode 100755 DOCBOOK/common/l10n.xml create mode 100755 DOCBOOK/common/l10n.xsl create mode 100755 DOCBOOK/common/la.xml create mode 100755 DOCBOOK/common/labels.xsl create mode 100755 DOCBOOK/common/lt.xml create mode 100755 DOCBOOK/common/lv.xml create mode 100755 DOCBOOK/common/ml.xml create mode 100755 DOCBOOK/common/mn.xml create mode 100755 DOCBOOK/common/mr.xml create mode 100755 DOCBOOK/common/nb.xml create mode 100755 DOCBOOK/common/nds.xml create mode 100755 DOCBOOK/common/nl.xml create mode 100755 DOCBOOK/common/nn.xml create mode 100755 DOCBOOK/common/olink.xsl create mode 100755 DOCBOOK/common/or.xml create mode 100755 DOCBOOK/common/pa.xml create mode 100755 DOCBOOK/common/pi.xml create mode 100755 DOCBOOK/common/pi.xsl create mode 100755 DOCBOOK/common/pl.xml create mode 100755 DOCBOOK/common/pt.xml create mode 100755 DOCBOOK/common/pt_br.xml create mode 100755 DOCBOOK/common/refentry.xml create mode 100755 DOCBOOK/common/refentry.xsl create mode 100755 DOCBOOK/common/ro.xml create mode 100755 DOCBOOK/common/ru.xml create mode 100755 DOCBOOK/common/sk.xml create mode 100755 DOCBOOK/common/sl.xml create mode 100755 DOCBOOK/common/sq.xml create mode 100755 DOCBOOK/common/sr.xml create mode 100755 DOCBOOK/common/sr_Latn.xml create mode 100755 DOCBOOK/common/subtitles.xsl create mode 100755 DOCBOOK/common/sv.xml create mode 100755 DOCBOOK/common/ta.xml create mode 100755 DOCBOOK/common/table.xsl create mode 100755 DOCBOOK/common/targetdatabase.dtd create mode 100755 DOCBOOK/common/targets.xsl create mode 100755 DOCBOOK/common/te.xml create mode 100755 DOCBOOK/common/th.xml create mode 100755 DOCBOOK/common/titles.xsl create mode 100755 DOCBOOK/common/tl.xml create mode 100755 DOCBOOK/common/tr.xml create mode 100755 DOCBOOK/common/uk.xml create mode 100755 DOCBOOK/common/utility.xml create mode 100755 DOCBOOK/common/utility.xsl create mode 100755 DOCBOOK/common/vi.xml create mode 100755 DOCBOOK/common/xh.xml create mode 100755 DOCBOOK/common/zh.xml create mode 100755 DOCBOOK/common/zh_cn.xml create mode 100755 DOCBOOK/common/zh_tw.xml create mode 100755 DOCBOOK/doc/AUTHORS create mode 100755 DOCBOOK/doc/COPYING create mode 100755 DOCBOOK/doc/README create mode 100755 DOCBOOK/doc/common/base.html create mode 100755 DOCBOOK/doc/common/charmap.html create mode 100755 DOCBOOK/doc/common/index.html create mode 100755 DOCBOOK/doc/common/refentry.html create mode 100755 DOCBOOK/doc/common/reference.css create mode 100755 DOCBOOK/doc/common/template.apply-character-map.html create mode 100755 DOCBOOK/doc/common/template.check.id.unique.html create mode 100755 DOCBOOK/doc/common/template.check.idref.targets.html create mode 100755 DOCBOOK/doc/common/template.copyright.years.html create mode 100755 DOCBOOK/doc/common/template.evaluate.info.profile.html create mode 100755 DOCBOOK/doc/common/template.find.path.params.html create mode 100755 DOCBOOK/doc/common/template.get.doc.title.html create mode 100755 DOCBOOK/doc/common/template.get.refentry.date.html create mode 100755 DOCBOOK/doc/common/template.get.refentry.manual.html create mode 100755 DOCBOOK/doc/common/template.get.refentry.metadata.html create mode 100755 DOCBOOK/doc/common/template.get.refentry.metadata.prefs.html create mode 100755 DOCBOOK/doc/common/template.get.refentry.section.html create mode 100755 DOCBOOK/doc/common/template.get.refentry.source.html create mode 100755 DOCBOOK/doc/common/template.get.refentry.source.name.html create mode 100755 DOCBOOK/doc/common/template.get.refentry.title.html create mode 100755 DOCBOOK/doc/common/template.get.refentry.version.html create mode 100755 DOCBOOK/doc/common/template.graphic.format.content-type.html create mode 100755 DOCBOOK/doc/common/template.is.acceptable.mediaobject.html create mode 100755 DOCBOOK/doc/common/template.is.component.html create mode 100755 DOCBOOK/doc/common/template.is.section.html create mode 100755 DOCBOOK/doc/common/template.log.message.html create mode 100755 DOCBOOK/doc/common/template.pad-string.html create mode 100755 DOCBOOK/doc/common/template.qanda.section.level.html create mode 100755 DOCBOOK/doc/common/template.read-character-map.html create mode 100755 DOCBOOK/doc/common/template.section.level.html create mode 100755 DOCBOOK/doc/common/template.select.choice.separator.html create mode 100755 DOCBOOK/doc/common/template.select.mediaobject.html create mode 100755 DOCBOOK/doc/common/template.select.mediaobject.index.html create mode 100755 DOCBOOK/doc/common/template.set.refentry.metadata.html create mode 100755 DOCBOOK/doc/common/template.string.lower.html create mode 100755 DOCBOOK/doc/common/template.string.upper.html create mode 100755 DOCBOOK/doc/common/utility.html create mode 100755 DOCBOOK/doc/copyright.html create mode 100755 DOCBOOK/doc/developer.html create mode 100755 DOCBOOK/doc/fo-pageregions-image.html create mode 100755 DOCBOOK/doc/fo/abstract.properties.html create mode 100755 DOCBOOK/doc/fo/abstract.title.properties.html create mode 100755 DOCBOOK/doc/fo/activate.external.olinks.html create mode 100755 DOCBOOK/doc/fo/admon.graphics.extension.html create mode 100755 DOCBOOK/doc/fo/admon.graphics.html create mode 100755 DOCBOOK/doc/fo/admon.graphics.path.html create mode 100755 DOCBOOK/doc/fo/admon.textlabel.html create mode 100755 DOCBOOK/doc/fo/admonition.properties.html create mode 100755 DOCBOOK/doc/fo/admonition.title.properties.html create mode 100755 DOCBOOK/doc/fo/admons.html create mode 100755 DOCBOOK/doc/fo/alignment.html create mode 100755 DOCBOOK/doc/fo/appendix.autolabel.html create mode 100755 DOCBOOK/doc/fo/arbortext.extensions.html create mode 100755 DOCBOOK/doc/fo/article.appendix.title.properties.html create mode 100755 DOCBOOK/doc/fo/author.othername.in.middle.html create mode 100755 DOCBOOK/doc/fo/autotoc.label.separator.html create mode 100755 DOCBOOK/doc/fo/axf.extensions.html create mode 100755 DOCBOOK/doc/fo/base.dir.html create mode 100755 DOCBOOK/doc/fo/biblio.html create mode 100755 DOCBOOK/doc/fo/biblioentry.item.separator.html create mode 100755 DOCBOOK/doc/fo/biblioentry.properties.html create mode 100755 DOCBOOK/doc/fo/bibliography.collection.html create mode 100755 DOCBOOK/doc/fo/bibliography.numbered.html create mode 100755 DOCBOOK/doc/fo/bibliography.style.html create mode 100755 DOCBOOK/doc/fo/blockquote.properties.html create mode 100755 DOCBOOK/doc/fo/body.end.indent.html create mode 100755 DOCBOOK/doc/fo/body.font.family.html create mode 100755 DOCBOOK/doc/fo/body.font.master.html create mode 100755 DOCBOOK/doc/fo/body.font.size.html create mode 100755 DOCBOOK/doc/fo/body.margin.bottom.html create mode 100755 DOCBOOK/doc/fo/body.margin.inner.html create mode 100755 DOCBOOK/doc/fo/body.margin.outer.html create mode 100755 DOCBOOK/doc/fo/body.margin.top.html create mode 100755 DOCBOOK/doc/fo/body.start.indent.html create mode 100755 DOCBOOK/doc/fo/bookmarks.collapse.html create mode 100755 DOCBOOK/doc/fo/bridgehead.in.toc.html create mode 100755 DOCBOOK/doc/fo/callout.defaultcolumn.html create mode 100755 DOCBOOK/doc/fo/callout.graphics.extension.html create mode 100755 DOCBOOK/doc/fo/callout.graphics.html create mode 100755 DOCBOOK/doc/fo/callout.graphics.number.limit.html create mode 100755 DOCBOOK/doc/fo/callout.graphics.path.html create mode 100755 DOCBOOK/doc/fo/callout.icon.size.html create mode 100755 DOCBOOK/doc/fo/callout.properties.html create mode 100755 DOCBOOK/doc/fo/callout.unicode.font.html create mode 100755 DOCBOOK/doc/fo/callout.unicode.html create mode 100755 DOCBOOK/doc/fo/callout.unicode.number.limit.html create mode 100755 DOCBOOK/doc/fo/callout.unicode.start.character.html create mode 100755 DOCBOOK/doc/fo/calloutlist.properties.html create mode 100755 DOCBOOK/doc/fo/callouts.extension.html create mode 100755 DOCBOOK/doc/fo/callouts.html create mode 100755 DOCBOOK/doc/fo/chapter.autolabel.html create mode 100755 DOCBOOK/doc/fo/chunk.quietly.html create mode 100755 DOCBOOK/doc/fo/collect.xref.targets.html create mode 100755 DOCBOOK/doc/fo/column.count.back.html create mode 100755 DOCBOOK/doc/fo/column.count.body.html create mode 100755 DOCBOOK/doc/fo/column.count.front.html create mode 100755 DOCBOOK/doc/fo/column.count.index.html create mode 100755 DOCBOOK/doc/fo/column.count.lot.html create mode 100755 DOCBOOK/doc/fo/column.count.titlepage.html create mode 100755 DOCBOOK/doc/fo/column.gap.back.html create mode 100755 DOCBOOK/doc/fo/column.gap.body.html create mode 100755 DOCBOOK/doc/fo/column.gap.front.html create mode 100755 DOCBOOK/doc/fo/column.gap.index.html create mode 100755 DOCBOOK/doc/fo/column.gap.lot.html create mode 100755 DOCBOOK/doc/fo/column.gap.titlepage.html create mode 100755 DOCBOOK/doc/fo/compact.list.item.spacing.html create mode 100755 DOCBOOK/doc/fo/component.label.includes.part.label.html create mode 100755 DOCBOOK/doc/fo/component.title.properties.html create mode 100755 DOCBOOK/doc/fo/component.titlepage.properties.html create mode 100755 DOCBOOK/doc/fo/crop.mark.bleed.html create mode 100755 DOCBOOK/doc/fo/crop.mark.offset.html create mode 100755 DOCBOOK/doc/fo/crop.mark.width.html create mode 100755 DOCBOOK/doc/fo/crop.marks.html create mode 100755 DOCBOOK/doc/fo/current.docid.html create mode 100755 DOCBOOK/doc/fo/dbk_ext.html create mode 100755 DOCBOOK/doc/fo/default.float.class.html create mode 100755 DOCBOOK/doc/fo/default.image.width.html create mode 100755 DOCBOOK/doc/fo/default.table.frame.html create mode 100755 DOCBOOK/doc/fo/default.table.rules.html create mode 100755 DOCBOOK/doc/fo/default.table.width.html create mode 100755 DOCBOOK/doc/fo/default.units.html create mode 100755 DOCBOOK/doc/fo/dingbat.font.family.html create mode 100755 DOCBOOK/doc/fo/double.sided.html create mode 100755 DOCBOOK/doc/fo/draft.mode.html create mode 100755 DOCBOOK/doc/fo/draft.watermark.image.html create mode 100755 DOCBOOK/doc/fo/ebnf.assignment.html create mode 100755 DOCBOOK/doc/fo/ebnf.html create mode 100755 DOCBOOK/doc/fo/ebnf.statement.terminator.html create mode 100755 DOCBOOK/doc/fo/email.delimiters.enabled.html create mode 100755 DOCBOOK/doc/fo/email.mailto.enabled.html create mode 100755 DOCBOOK/doc/fo/equation.number.properties.html create mode 100755 DOCBOOK/doc/fo/equation.properties.html create mode 100755 DOCBOOK/doc/fo/example.properties.html create mode 100755 DOCBOOK/doc/fo/exsl.node.set.available.html create mode 100755 DOCBOOK/doc/fo/figure.properties.html create mode 100755 DOCBOOK/doc/fo/firstterm.only.link.html create mode 100755 DOCBOOK/doc/fo/fo-pageregions-image.html create mode 100755 DOCBOOK/doc/fo/fo_ext.html create mode 100755 DOCBOOK/doc/fo/fonts.html create mode 100755 DOCBOOK/doc/fo/footer.column.widths.html create mode 100755 DOCBOOK/doc/fo/footer.content.properties.html create mode 100755 DOCBOOK/doc/fo/footer.rule.html create mode 100755 DOCBOOK/doc/fo/footer.table.height.html create mode 100755 DOCBOOK/doc/fo/footer.table.properties.html create mode 100755 DOCBOOK/doc/fo/footers.on.blank.pages.html create mode 100755 DOCBOOK/doc/fo/footnote.font.size.html create mode 100755 DOCBOOK/doc/fo/footnote.mark.properties.html create mode 100755 DOCBOOK/doc/fo/footnote.number.format.html create mode 100755 DOCBOOK/doc/fo/footnote.number.symbols.html create mode 100755 DOCBOOK/doc/fo/footnote.properties.html create mode 100755 DOCBOOK/doc/fo/footnote.sep.leader.properties.html create mode 100755 DOCBOOK/doc/fo/fop.extensions.html create mode 100755 DOCBOOK/doc/fo/fop1.extensions.html create mode 100755 DOCBOOK/doc/fo/force.blank.pages.html create mode 100755 DOCBOOK/doc/fo/formal.object.properties.html create mode 100755 DOCBOOK/doc/fo/formal.procedures.html create mode 100755 DOCBOOK/doc/fo/formal.title.placement.html create mode 100755 DOCBOOK/doc/fo/formal.title.properties.html create mode 100755 DOCBOOK/doc/fo/funcsynopsis.decoration.html create mode 100755 DOCBOOK/doc/fo/funcsynopsis.style.html create mode 100755 DOCBOOK/doc/fo/function.parens.html create mode 100755 DOCBOOK/doc/fo/general.html create mode 100755 DOCBOOK/doc/fo/generate.consistent.ids.html create mode 100755 DOCBOOK/doc/fo/generate.index.html create mode 100755 DOCBOOK/doc/fo/generate.section.toc.level.html create mode 100755 DOCBOOK/doc/fo/generate.toc.html create mode 100755 DOCBOOK/doc/fo/glossary.as.blocks.html create mode 100755 DOCBOOK/doc/fo/glossary.collection.html create mode 100755 DOCBOOK/doc/fo/glossary.html create mode 100755 DOCBOOK/doc/fo/glossary.sort.html create mode 100755 DOCBOOK/doc/fo/glossdef.block.properties.html create mode 100755 DOCBOOK/doc/fo/glossdef.list.properties.html create mode 100755 DOCBOOK/doc/fo/glossentry.list.item.properties.html create mode 100755 DOCBOOK/doc/fo/glossentry.show.acronym.html create mode 100755 DOCBOOK/doc/fo/glosslist.as.blocks.html create mode 100755 DOCBOOK/doc/fo/glossterm.auto.link.html create mode 100755 DOCBOOK/doc/fo/glossterm.block.properties.html create mode 100755 DOCBOOK/doc/fo/glossterm.list.properties.html create mode 100755 DOCBOOK/doc/fo/glossterm.separation.html create mode 100755 DOCBOOK/doc/fo/glossterm.width.html create mode 100755 DOCBOOK/doc/fo/graphic.default.extension.html create mode 100755 DOCBOOK/doc/fo/graphical.admonition.properties.html create mode 100755 DOCBOOK/doc/fo/graphics.html create mode 100755 DOCBOOK/doc/fo/header.column.widths.html create mode 100755 DOCBOOK/doc/fo/header.content.properties.html create mode 100755 DOCBOOK/doc/fo/header.rule.html create mode 100755 DOCBOOK/doc/fo/header.table.height.html create mode 100755 DOCBOOK/doc/fo/header.table.properties.html create mode 100755 DOCBOOK/doc/fo/headers.on.blank.pages.html create mode 100755 DOCBOOK/doc/fo/highlight.default.language.html create mode 100755 DOCBOOK/doc/fo/highlight.source.html create mode 100755 DOCBOOK/doc/fo/highlight.xslthl.config.html create mode 100755 DOCBOOK/doc/fo/hyphenate.html create mode 100755 DOCBOOK/doc/fo/hyphenate.verbatim.characters.html create mode 100755 DOCBOOK/doc/fo/hyphenate.verbatim.html create mode 100755 DOCBOOK/doc/fo/ignore.image.scaling.html create mode 100755 DOCBOOK/doc/fo/img.src.path.html create mode 100755 DOCBOOK/doc/fo/index.div.title.properties.html create mode 100755 DOCBOOK/doc/fo/index.entry.properties.html create mode 100755 DOCBOOK/doc/fo/index.html create mode 100755 DOCBOOK/doc/fo/index.method.html create mode 100755 DOCBOOK/doc/fo/index.number.separator.html create mode 100755 DOCBOOK/doc/fo/index.on.role.html create mode 100755 DOCBOOK/doc/fo/index.on.type.html create mode 100755 DOCBOOK/doc/fo/index.page.number.properties.html create mode 100755 DOCBOOK/doc/fo/index.preferred.page.properties.html create mode 100755 DOCBOOK/doc/fo/index.range.separator.html create mode 100755 DOCBOOK/doc/fo/index.term.separator.html create mode 100755 DOCBOOK/doc/fo/informal.object.properties.html create mode 100755 DOCBOOK/doc/fo/informalequation.properties.html create mode 100755 DOCBOOK/doc/fo/informalexample.properties.html create mode 100755 DOCBOOK/doc/fo/informalfigure.properties.html create mode 100755 DOCBOOK/doc/fo/informaltable.properties.html create mode 100755 DOCBOOK/doc/fo/inner.region.content.properties.html create mode 100755 DOCBOOK/doc/fo/insert.link.page.number.html create mode 100755 DOCBOOK/doc/fo/insert.olink.page.number.html create mode 100755 DOCBOOK/doc/fo/insert.olink.pdf.frag.html create mode 100755 DOCBOOK/doc/fo/insert.xref.page.number.html create mode 100755 DOCBOOK/doc/fo/itemizedlist.label.properties.html create mode 100755 DOCBOOK/doc/fo/itemizedlist.label.width.html create mode 100755 DOCBOOK/doc/fo/itemizedlist.properties.html create mode 100755 DOCBOOK/doc/fo/keep.relative.image.uris.html create mode 100755 DOCBOOK/doc/fo/l10n.gentext.default.language.html create mode 100755 DOCBOOK/doc/fo/l10n.gentext.language.html create mode 100755 DOCBOOK/doc/fo/l10n.gentext.use.xref.language.html create mode 100755 DOCBOOK/doc/fo/l10n.html create mode 100755 DOCBOOK/doc/fo/l10n.lang.value.rfc.compliant.html create mode 100755 DOCBOOK/doc/fo/label.from.part.html create mode 100755 DOCBOOK/doc/fo/labels.html create mode 100755 DOCBOOK/doc/fo/line-height.html create mode 100755 DOCBOOK/doc/fo/linenumbering.everyNth.html create mode 100755 DOCBOOK/doc/fo/linenumbering.extension.html create mode 100755 DOCBOOK/doc/fo/linenumbering.separator.html create mode 100755 DOCBOOK/doc/fo/linenumbering.width.html create mode 100755 DOCBOOK/doc/fo/links.html create mode 100755 DOCBOOK/doc/fo/list.block.properties.html create mode 100755 DOCBOOK/doc/fo/list.block.spacing.html create mode 100755 DOCBOOK/doc/fo/list.item.spacing.html create mode 100755 DOCBOOK/doc/fo/lists.html create mode 100755 DOCBOOK/doc/fo/make.index.markup.html create mode 100755 DOCBOOK/doc/fo/make.single.year.ranges.html create mode 100755 DOCBOOK/doc/fo/make.year.ranges.html create mode 100755 DOCBOOK/doc/fo/margin.note.float.type.html create mode 100755 DOCBOOK/doc/fo/margin.note.properties.html create mode 100755 DOCBOOK/doc/fo/margin.note.title.properties.html create mode 100755 DOCBOOK/doc/fo/margin.note.width.html create mode 100755 DOCBOOK/doc/fo/marker.section.level.html create mode 100755 DOCBOOK/doc/fo/menuchoice.menu.separator.html create mode 100755 DOCBOOK/doc/fo/menuchoice.separator.html create mode 100755 DOCBOOK/doc/fo/meta.html create mode 100755 DOCBOOK/doc/fo/misc.html create mode 100755 DOCBOOK/doc/fo/monospace.font.family.html create mode 100755 DOCBOOK/doc/fo/monospace.properties.html create mode 100755 DOCBOOK/doc/fo/monospace.verbatim.font.width.html create mode 100755 DOCBOOK/doc/fo/monospace.verbatim.properties.html create mode 100755 DOCBOOK/doc/fo/nominal.table.width.html create mode 100755 DOCBOOK/doc/fo/nongraphical.admonition.properties.html create mode 100755 DOCBOOK/doc/fo/normal.para.spacing.html create mode 100755 DOCBOOK/doc/fo/olink.base.uri.html create mode 100755 DOCBOOK/doc/fo/olink.debug.html create mode 100755 DOCBOOK/doc/fo/olink.doctitle.html create mode 100755 DOCBOOK/doc/fo/olink.lang.fallback.sequence.html create mode 100755 DOCBOOK/doc/fo/olink.properties.html create mode 100755 DOCBOOK/doc/fo/orderedlist.label.properties.html create mode 100755 DOCBOOK/doc/fo/orderedlist.label.width.html create mode 100755 DOCBOOK/doc/fo/orderedlist.properties.html create mode 100755 DOCBOOK/doc/fo/outer.region.content.properties.html create mode 100755 DOCBOOK/doc/fo/page.height.html create mode 100755 DOCBOOK/doc/fo/page.height.portrait.html create mode 100755 DOCBOOK/doc/fo/page.margin.bottom.html create mode 100755 DOCBOOK/doc/fo/page.margin.inner.html create mode 100755 DOCBOOK/doc/fo/page.margin.outer.html create mode 100755 DOCBOOK/doc/fo/page.margin.top.html create mode 100755 DOCBOOK/doc/fo/page.orientation.html create mode 100755 DOCBOOK/doc/fo/page.png create mode 100755 DOCBOOK/doc/fo/page.width.html create mode 100755 DOCBOOK/doc/fo/page.width.portrait.html create mode 100755 DOCBOOK/doc/fo/paper.type.html create mode 100755 DOCBOOK/doc/fo/para.properties.html create mode 100755 DOCBOOK/doc/fo/part.autolabel.html create mode 100755 DOCBOOK/doc/fo/passivetex.extensions.html create mode 100755 DOCBOOK/doc/fo/pgwide.properties.html create mode 100755 DOCBOOK/doc/fo/preface.autolabel.html create mode 100755 DOCBOOK/doc/fo/prefer.internal.olink.html create mode 100755 DOCBOOK/doc/fo/preferred.mediaobject.role.html create mode 100755 DOCBOOK/doc/fo/prepress.html create mode 100755 DOCBOOK/doc/fo/procedure.properties.html create mode 100755 DOCBOOK/doc/fo/process.empty.source.toc.html create mode 100755 DOCBOOK/doc/fo/process.source.toc.html create mode 100755 DOCBOOK/doc/fo/profile.arch.html create mode 100755 DOCBOOK/doc/fo/profile.attribute.html create mode 100755 DOCBOOK/doc/fo/profile.audience.html create mode 100755 DOCBOOK/doc/fo/profile.condition.html create mode 100755 DOCBOOK/doc/fo/profile.conformance.html create mode 100755 DOCBOOK/doc/fo/profile.lang.html create mode 100755 DOCBOOK/doc/fo/profile.os.html create mode 100755 DOCBOOK/doc/fo/profile.revision.html create mode 100755 DOCBOOK/doc/fo/profile.revisionflag.html create mode 100755 DOCBOOK/doc/fo/profile.role.html create mode 100755 DOCBOOK/doc/fo/profile.security.html create mode 100755 DOCBOOK/doc/fo/profile.separator.html create mode 100755 DOCBOOK/doc/fo/profile.status.html create mode 100755 DOCBOOK/doc/fo/profile.userlevel.html create mode 100755 DOCBOOK/doc/fo/profile.value.html create mode 100755 DOCBOOK/doc/fo/profile.vendor.html create mode 100755 DOCBOOK/doc/fo/profile.wordsize.html create mode 100755 DOCBOOK/doc/fo/profiling.html create mode 100755 DOCBOOK/doc/fo/propsets.html create mode 100755 DOCBOOK/doc/fo/punct.honorific.html create mode 100755 DOCBOOK/doc/fo/qa.html create mode 100755 DOCBOOK/doc/fo/qanda.defaultlabel.html create mode 100755 DOCBOOK/doc/fo/qanda.in.toc.html create mode 100755 DOCBOOK/doc/fo/qanda.inherit.numeration.html create mode 100755 DOCBOOK/doc/fo/qanda.nested.in.toc.html create mode 100755 DOCBOOK/doc/fo/qanda.title.level1.properties.html create mode 100755 DOCBOOK/doc/fo/qanda.title.level2.properties.html create mode 100755 DOCBOOK/doc/fo/qanda.title.level3.properties.html create mode 100755 DOCBOOK/doc/fo/qanda.title.level4.properties.html create mode 100755 DOCBOOK/doc/fo/qanda.title.level5.properties.html create mode 100755 DOCBOOK/doc/fo/qanda.title.level6.properties.html create mode 100755 DOCBOOK/doc/fo/qanda.title.properties.html create mode 100755 DOCBOOK/doc/fo/qandadiv.autolabel.html create mode 100755 DOCBOOK/doc/fo/refclass.suppress.html create mode 100755 DOCBOOK/doc/fo/refentry.generate.name.html create mode 100755 DOCBOOK/doc/fo/refentry.generate.title.html create mode 100755 DOCBOOK/doc/fo/refentry.html create mode 100755 DOCBOOK/doc/fo/refentry.pagebreak.html create mode 100755 DOCBOOK/doc/fo/refentry.title.properties.html create mode 100755 DOCBOOK/doc/fo/refentry.xref.manvolnum.html create mode 100755 DOCBOOK/doc/fo/reference.autolabel.html create mode 100755 DOCBOOK/doc/fo/reference.css create mode 100755 DOCBOOK/doc/fo/region.after.extent.html create mode 100755 DOCBOOK/doc/fo/region.before.extent.html create mode 100755 DOCBOOK/doc/fo/region.inner.extent.html create mode 100755 DOCBOOK/doc/fo/region.inner.properties.html create mode 100755 DOCBOOK/doc/fo/region.outer.extent.html create mode 100755 DOCBOOK/doc/fo/region.outer.properties.html create mode 100755 DOCBOOK/doc/fo/revhistory.table.cell.properties.html create mode 100755 DOCBOOK/doc/fo/revhistory.table.properties.html create mode 100755 DOCBOOK/doc/fo/revhistory.title.properties.html create mode 100755 DOCBOOK/doc/fo/root.properties.html create mode 100755 DOCBOOK/doc/fo/rootid.html create mode 100755 DOCBOOK/doc/fo/runinhead.default.title.end.punct.html create mode 100755 DOCBOOK/doc/fo/runinhead.title.end.punct.html create mode 100755 DOCBOOK/doc/fo/sans.font.family.html create mode 100755 DOCBOOK/doc/fo/section.autolabel.html create mode 100755 DOCBOOK/doc/fo/section.autolabel.max.depth.html create mode 100755 DOCBOOK/doc/fo/section.container.element.html create mode 100755 DOCBOOK/doc/fo/section.label.includes.component.label.html create mode 100755 DOCBOOK/doc/fo/section.level1.properties.html create mode 100755 DOCBOOK/doc/fo/section.level2.properties.html create mode 100755 DOCBOOK/doc/fo/section.level3.properties.html create mode 100755 DOCBOOK/doc/fo/section.level4.properties.html create mode 100755 DOCBOOK/doc/fo/section.level5.properties.html create mode 100755 DOCBOOK/doc/fo/section.level6.properties.html create mode 100755 DOCBOOK/doc/fo/section.properties.html create mode 100755 DOCBOOK/doc/fo/section.title.level1.properties.html create mode 100755 DOCBOOK/doc/fo/section.title.level2.properties.html create mode 100755 DOCBOOK/doc/fo/section.title.level3.properties.html create mode 100755 DOCBOOK/doc/fo/section.title.level4.properties.html create mode 100755 DOCBOOK/doc/fo/section.title.level5.properties.html create mode 100755 DOCBOOK/doc/fo/section.title.level6.properties.html create mode 100755 DOCBOOK/doc/fo/section.title.properties.html create mode 100755 DOCBOOK/doc/fo/segmentedlist.as.table.html create mode 100755 DOCBOOK/doc/fo/shade.verbatim.html create mode 100755 DOCBOOK/doc/fo/shade.verbatim.style.html create mode 100755 DOCBOOK/doc/fo/show.comments.html create mode 100755 DOCBOOK/doc/fo/side.region.precedence.html create mode 100755 DOCBOOK/doc/fo/sidebar.float.type.html create mode 100755 DOCBOOK/doc/fo/sidebar.float.width.html create mode 100755 DOCBOOK/doc/fo/sidebar.properties.html create mode 100755 DOCBOOK/doc/fo/sidebar.title.properties.html create mode 100755 DOCBOOK/doc/fo/simplesect.in.toc.html create mode 100755 DOCBOOK/doc/fo/subscript.properties.html create mode 100755 DOCBOOK/doc/fo/superscript.properties.html create mode 100755 DOCBOOK/doc/fo/symbol.font.family.html create mode 100755 DOCBOOK/doc/fo/table-templates.html create mode 100755 DOCBOOK/doc/fo/table.caption.properties.html create mode 100755 DOCBOOK/doc/fo/table.cell.border.color.html create mode 100755 DOCBOOK/doc/fo/table.cell.border.style.html create mode 100755 DOCBOOK/doc/fo/table.cell.border.thickness.html create mode 100755 DOCBOOK/doc/fo/table.cell.padding.html create mode 100755 DOCBOOK/doc/fo/table.footnote.number.format.html create mode 100755 DOCBOOK/doc/fo/table.footnote.number.symbols.html create mode 100755 DOCBOOK/doc/fo/table.footnote.properties.html create mode 100755 DOCBOOK/doc/fo/table.frame.border.color.html create mode 100755 DOCBOOK/doc/fo/table.frame.border.style.html create mode 100755 DOCBOOK/doc/fo/table.frame.border.thickness.html create mode 100755 DOCBOOK/doc/fo/table.properties.html create mode 100755 DOCBOOK/doc/fo/table.table.properties.html create mode 100755 DOCBOOK/doc/fo/tablecolumns.extension.html create mode 100755 DOCBOOK/doc/fo/tables.html create mode 100755 DOCBOOK/doc/fo/target.database.document.html create mode 100755 DOCBOOK/doc/fo/targets.filename.html create mode 100755 DOCBOOK/doc/fo/task.properties.html create mode 100755 DOCBOOK/doc/fo/template.calc.column.width.html create mode 100755 DOCBOOK/doc/fo/tex.math.delims.html create mode 100755 DOCBOOK/doc/fo/tex.math.in.alt.html create mode 100755 DOCBOOK/doc/fo/textdata.default.encoding.html create mode 100755 DOCBOOK/doc/fo/textinsert.extension.html create mode 100755 DOCBOOK/doc/fo/title.font.family.html create mode 100755 DOCBOOK/doc/fo/title.margin.left.html create mode 100755 DOCBOOK/doc/fo/toc.indent.width.html create mode 100755 DOCBOOK/doc/fo/toc.line.properties.html create mode 100755 DOCBOOK/doc/fo/toc.margin.properties.html create mode 100755 DOCBOOK/doc/fo/toc.max.depth.html create mode 100755 DOCBOOK/doc/fo/toc.section.depth.html create mode 100755 DOCBOOK/doc/fo/toc_index.html create mode 100755 DOCBOOK/doc/fo/ulink.footnotes.html create mode 100755 DOCBOOK/doc/fo/ulink.hyphenate.chars.html create mode 100755 DOCBOOK/doc/fo/ulink.hyphenate.html create mode 100755 DOCBOOK/doc/fo/ulink.show.html create mode 100755 DOCBOOK/doc/fo/use.extensions.html create mode 100755 DOCBOOK/doc/fo/use.local.olink.style.html create mode 100755 DOCBOOK/doc/fo/use.role.as.xrefstyle.html create mode 100755 DOCBOOK/doc/fo/use.role.for.mediaobject.html create mode 100755 DOCBOOK/doc/fo/use.svg.html create mode 100755 DOCBOOK/doc/fo/variablelist.as.blocks.html create mode 100755 DOCBOOK/doc/fo/variablelist.max.termlength.html create mode 100755 DOCBOOK/doc/fo/variablelist.term.break.after.html create mode 100755 DOCBOOK/doc/fo/variablelist.term.properties.html create mode 100755 DOCBOOK/doc/fo/variablelist.term.separator.html create mode 100755 DOCBOOK/doc/fo/verbatim.properties.html create mode 100755 DOCBOOK/doc/fo/writing.mode.html create mode 100755 DOCBOOK/doc/fo/xep.extensions.html create mode 100755 DOCBOOK/doc/fo/xep.index.item.properties.html create mode 100755 DOCBOOK/doc/fo/xref.label-page.separator.html create mode 100755 DOCBOOK/doc/fo/xref.label-title.separator.html create mode 100755 DOCBOOK/doc/fo/xref.properties.html create mode 100755 DOCBOOK/doc/fo/xref.title-page.separator.html create mode 100755 DOCBOOK/doc/fo/xref.with.number.and.title.html create mode 100755 DOCBOOK/doc/fo/xrefs.html create mode 100755 DOCBOOK/doc/fo/xslt.html create mode 100755 DOCBOOK/doc/html/abstract.notitle.enabled.html create mode 100755 DOCBOOK/doc/html/activate.external.olinks.html create mode 100755 DOCBOOK/doc/html/admon.graphics.extension.html create mode 100755 DOCBOOK/doc/html/admon.graphics.html create mode 100755 DOCBOOK/doc/html/admon.graphics.path.html create mode 100755 DOCBOOK/doc/html/admon.style.html create mode 100755 DOCBOOK/doc/html/admon.textlabel.html create mode 100755 DOCBOOK/doc/html/admons.html create mode 100755 DOCBOOK/doc/html/annos.html create mode 100755 DOCBOOK/doc/html/annotate.toc.html create mode 100755 DOCBOOK/doc/html/annotation.css.html create mode 100755 DOCBOOK/doc/html/annotation.graphic.close.html create mode 100755 DOCBOOK/doc/html/annotation.graphic.open.html create mode 100755 DOCBOOK/doc/html/annotation.js.html create mode 100755 DOCBOOK/doc/html/annotation.support.html create mode 100755 DOCBOOK/doc/html/appendix.autolabel.html create mode 100755 DOCBOOK/doc/html/author.othername.in.middle.html create mode 100755 DOCBOOK/doc/html/autotoc.label.in.hyperlink.html create mode 100755 DOCBOOK/doc/html/autotoc.label.separator.html create mode 100755 DOCBOOK/doc/html/base.dir.html create mode 100755 DOCBOOK/doc/html/biblio.html create mode 100755 DOCBOOK/doc/html/biblioentry.item.separator.html create mode 100755 DOCBOOK/doc/html/bibliography.collection.html create mode 100755 DOCBOOK/doc/html/bibliography.numbered.html create mode 100755 DOCBOOK/doc/html/bibliography.style.html create mode 100755 DOCBOOK/doc/html/blurb.on.titlepage.enabled.html create mode 100755 DOCBOOK/doc/html/bridgehead.in.toc.html create mode 100755 DOCBOOK/doc/html/callout.defaultcolumn.html create mode 100755 DOCBOOK/doc/html/callout.graphics.extension.html create mode 100755 DOCBOOK/doc/html/callout.graphics.html create mode 100755 DOCBOOK/doc/html/callout.graphics.number.limit.html create mode 100755 DOCBOOK/doc/html/callout.graphics.path.html create mode 100755 DOCBOOK/doc/html/callout.list.table.html create mode 100755 DOCBOOK/doc/html/callout.unicode.html create mode 100755 DOCBOOK/doc/html/callout.unicode.number.limit.html create mode 100755 DOCBOOK/doc/html/callout.unicode.start.character.html create mode 100755 DOCBOOK/doc/html/callouts.extension.html create mode 100755 DOCBOOK/doc/html/callouts.html create mode 100755 DOCBOOK/doc/html/chapter.autolabel.html create mode 100755 DOCBOOK/doc/html/chunk.append.html create mode 100755 DOCBOOK/doc/html/chunk.first.sections.html create mode 100755 DOCBOOK/doc/html/chunk.quietly.html create mode 100755 DOCBOOK/doc/html/chunk.section.depth.html create mode 100755 DOCBOOK/doc/html/chunk.separate.lots.html create mode 100755 DOCBOOK/doc/html/chunk.toc.html create mode 100755 DOCBOOK/doc/html/chunk.tocs.and.lots.has.title.html create mode 100755 DOCBOOK/doc/html/chunk.tocs.and.lots.html create mode 100755 DOCBOOK/doc/html/chunked.filename.prefix.html create mode 100755 DOCBOOK/doc/html/chunker.output.cdata-section-elements.html create mode 100755 DOCBOOK/doc/html/chunker.output.doctype-public.html create mode 100755 DOCBOOK/doc/html/chunker.output.doctype-system.html create mode 100755 DOCBOOK/doc/html/chunker.output.encoding.html create mode 100755 DOCBOOK/doc/html/chunker.output.indent.html create mode 100755 DOCBOOK/doc/html/chunker.output.media-type.html create mode 100755 DOCBOOK/doc/html/chunker.output.method.html create mode 100755 DOCBOOK/doc/html/chunker.output.omit-xml-declaration.html create mode 100755 DOCBOOK/doc/html/chunker.output.standalone.html create mode 100755 DOCBOOK/doc/html/chunking.html create mode 100755 DOCBOOK/doc/html/citerefentry.link.html create mode 100755 DOCBOOK/doc/html/collect.xref.targets.html create mode 100755 DOCBOOK/doc/html/component.label.includes.part.label.html create mode 100755 DOCBOOK/doc/html/contrib.inline.enabled.html create mode 100755 DOCBOOK/doc/html/css.decoration.html create mode 100755 DOCBOOK/doc/html/current.docid.html create mode 100755 DOCBOOK/doc/html/custom.css.source.html create mode 100755 DOCBOOK/doc/html/dbk_ext.html create mode 100755 DOCBOOK/doc/html/default.float.class.html create mode 100755 DOCBOOK/doc/html/default.image.width.html create mode 100755 DOCBOOK/doc/html/default.table.frame.html create mode 100755 DOCBOOK/doc/html/default.table.width.html create mode 100755 DOCBOOK/doc/html/docbook.css.link.html create mode 100755 DOCBOOK/doc/html/docbook.css.source.html create mode 100755 DOCBOOK/doc/html/draft.mode.html create mode 100755 DOCBOOK/doc/html/draft.watermark.image.html create mode 100755 DOCBOOK/doc/html/ebnf.assignment.html create mode 100755 DOCBOOK/doc/html/ebnf.html create mode 100755 DOCBOOK/doc/html/ebnf.statement.terminator.html create mode 100755 DOCBOOK/doc/html/ebnf.table.bgcolor.html create mode 100755 DOCBOOK/doc/html/ebnf.table.border.html create mode 100755 DOCBOOK/doc/html/eclipse.autolabel.html create mode 100755 DOCBOOK/doc/html/eclipse.plugin.id.html create mode 100755 DOCBOOK/doc/html/eclipse.plugin.name.html create mode 100755 DOCBOOK/doc/html/eclipse.plugin.provider.html create mode 100755 DOCBOOK/doc/html/eclipse_help.html create mode 100755 DOCBOOK/doc/html/editedby.enabled.html create mode 100755 DOCBOOK/doc/html/email.delimiters.enabled.html create mode 100755 DOCBOOK/doc/html/emphasis.propagates.style.html create mode 100755 DOCBOOK/doc/html/entry.propagates.style.html create mode 100755 DOCBOOK/doc/html/exsl.node.set.available.html create mode 100755 DOCBOOK/doc/html/firstterm.only.link.html create mode 100755 DOCBOOK/doc/html/footer.rule.html create mode 100755 DOCBOOK/doc/html/footnote.number.format.html create mode 100755 DOCBOOK/doc/html/footnote.number.symbols.html create mode 100755 DOCBOOK/doc/html/formal.procedures.html create mode 100755 DOCBOOK/doc/html/formal.title.placement.html create mode 100755 DOCBOOK/doc/html/funcsynopsis.decoration.html create mode 100755 DOCBOOK/doc/html/funcsynopsis.style.html create mode 100755 DOCBOOK/doc/html/function.parens.html create mode 100755 DOCBOOK/doc/html/generate.consistent.ids.html create mode 100755 DOCBOOK/doc/html/generate.css.header.html create mode 100755 DOCBOOK/doc/html/generate.id.attributes.html create mode 100755 DOCBOOK/doc/html/generate.index.html create mode 100755 DOCBOOK/doc/html/generate.legalnotice.link.html create mode 100755 DOCBOOK/doc/html/generate.manifest.html create mode 100755 DOCBOOK/doc/html/generate.meta.abstract.html create mode 100755 DOCBOOK/doc/html/generate.revhistory.link.html create mode 100755 DOCBOOK/doc/html/generate.section.toc.level.html create mode 100755 DOCBOOK/doc/html/generate.toc.html create mode 100755 DOCBOOK/doc/html/glossary.collection.html create mode 100755 DOCBOOK/doc/html/glossary.html create mode 100755 DOCBOOK/doc/html/glossary.sort.html create mode 100755 DOCBOOK/doc/html/glossentry.show.acronym.html create mode 100755 DOCBOOK/doc/html/glossterm.auto.link.html create mode 100755 DOCBOOK/doc/html/graphic.default.extension.html create mode 100755 DOCBOOK/doc/html/graphics.html create mode 100755 DOCBOOK/doc/html/graphicsize.extension.html create mode 100755 DOCBOOK/doc/html/graphicsize.use.img.src.path.html create mode 100755 DOCBOOK/doc/html/header.rule.html create mode 100755 DOCBOOK/doc/html/highlight.default.language.html create mode 100755 DOCBOOK/doc/html/highlight.source.html create mode 100755 DOCBOOK/doc/html/highlight.xslthl.config.html create mode 100755 DOCBOOK/doc/html/html.append.html create mode 100755 DOCBOOK/doc/html/html.base.html create mode 100755 DOCBOOK/doc/html/html.cellpadding.html create mode 100755 DOCBOOK/doc/html/html.cellspacing.html create mode 100755 DOCBOOK/doc/html/html.cleanup.html create mode 100755 DOCBOOK/doc/html/html.ext.html create mode 100755 DOCBOOK/doc/html/html.extra.head.links.html create mode 100755 DOCBOOK/doc/html/html.head.legalnotice.link.multiple.html create mode 100755 DOCBOOK/doc/html/html.head.legalnotice.link.types.html create mode 100755 DOCBOOK/doc/html/html.html create mode 100755 DOCBOOK/doc/html/html.longdesc.html create mode 100755 DOCBOOK/doc/html/html.longdesc.link.html create mode 100755 DOCBOOK/doc/html/html.script.html create mode 100755 DOCBOOK/doc/html/html.script.type.html create mode 100755 DOCBOOK/doc/html/html.stylesheet.html create mode 100755 DOCBOOK/doc/html/html.stylesheet.type.html create mode 100755 DOCBOOK/doc/html/htmlhelp.alias.file.html create mode 100755 DOCBOOK/doc/html/htmlhelp.autolabel.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.back.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.forward.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.hideshow.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.home.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.home.url.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.jump1.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.jump1.title.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.jump1.url.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.jump2.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.jump2.title.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.jump2.url.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.locate.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.next.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.options.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.prev.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.print.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.refresh.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.stop.html create mode 100755 DOCBOOK/doc/html/htmlhelp.button.zoom.html create mode 100755 DOCBOOK/doc/html/htmlhelp.chm.html create mode 100755 DOCBOOK/doc/html/htmlhelp.default.topic.html create mode 100755 DOCBOOK/doc/html/htmlhelp.display.progress.html create mode 100755 DOCBOOK/doc/html/htmlhelp.encoding.html create mode 100755 DOCBOOK/doc/html/htmlhelp.enhanced.decompilation.html create mode 100755 DOCBOOK/doc/html/htmlhelp.enumerate.images.html create mode 100755 DOCBOOK/doc/html/htmlhelp.force.map.and.alias.html create mode 100755 DOCBOOK/doc/html/htmlhelp.hhc.binary.html create mode 100755 DOCBOOK/doc/html/htmlhelp.hhc.folders.instead.books.html create mode 100755 DOCBOOK/doc/html/htmlhelp.hhc.html create mode 100755 DOCBOOK/doc/html/htmlhelp.hhc.section.depth.html create mode 100755 DOCBOOK/doc/html/htmlhelp.hhc.show.root.html create mode 100755 DOCBOOK/doc/html/htmlhelp.hhc.width.html create mode 100755 DOCBOOK/doc/html/htmlhelp.hhk.html create mode 100755 DOCBOOK/doc/html/htmlhelp.hhp.html create mode 100755 DOCBOOK/doc/html/htmlhelp.hhp.tail.html create mode 100755 DOCBOOK/doc/html/htmlhelp.hhp.window.html create mode 100755 DOCBOOK/doc/html/htmlhelp.hhp.windows.html create mode 100755 DOCBOOK/doc/html/htmlhelp.html create mode 100755 DOCBOOK/doc/html/htmlhelp.map.file.html create mode 100755 DOCBOOK/doc/html/htmlhelp.only.html create mode 100755 DOCBOOK/doc/html/htmlhelp.remember.window.position.html create mode 100755 DOCBOOK/doc/html/htmlhelp.show.advanced.search.html create mode 100755 DOCBOOK/doc/html/htmlhelp.show.favorities.html create mode 100755 DOCBOOK/doc/html/htmlhelp.show.menu.html create mode 100755 DOCBOOK/doc/html/htmlhelp.show.toolbar.text.html create mode 100755 DOCBOOK/doc/html/htmlhelp.title.html create mode 100755 DOCBOOK/doc/html/htmlhelp.use.hhk.html create mode 100755 DOCBOOK/doc/html/htmlhelp.window.geometry.html create mode 100755 DOCBOOK/doc/html/id.warnings.html create mode 100755 DOCBOOK/doc/html/ignore.image.scaling.html create mode 100755 DOCBOOK/doc/html/img.src.path.html create mode 100755 DOCBOOK/doc/html/index.html create mode 100755 DOCBOOK/doc/html/index.links.to.section.html create mode 100755 DOCBOOK/doc/html/index.method.html create mode 100755 DOCBOOK/doc/html/index.number.separator.html create mode 100755 DOCBOOK/doc/html/index.on.role.html create mode 100755 DOCBOOK/doc/html/index.on.type.html create mode 100755 DOCBOOK/doc/html/index.prefer.titleabbrev.html create mode 100755 DOCBOOK/doc/html/index.range.separator.html create mode 100755 DOCBOOK/doc/html/index.term.separator.html create mode 100755 DOCBOOK/doc/html/inherit.keywords.html create mode 100755 DOCBOOK/doc/html/insert.olink.page.number.html create mode 100755 DOCBOOK/doc/html/insert.olink.pdf.frag.html create mode 100755 DOCBOOK/doc/html/insert.xref.page.number.html create mode 100755 DOCBOOK/doc/html/javahelp.encoding.html create mode 100755 DOCBOOK/doc/html/javahelp.html create mode 100755 DOCBOOK/doc/html/keep.relative.image.uris.html create mode 100755 DOCBOOK/doc/html/l10n.gentext.default.language.html create mode 100755 DOCBOOK/doc/html/l10n.gentext.language.html create mode 100755 DOCBOOK/doc/html/l10n.gentext.use.xref.language.html create mode 100755 DOCBOOK/doc/html/l10n.html create mode 100755 DOCBOOK/doc/html/l10n.lang.value.rfc.compliant.html create mode 100755 DOCBOOK/doc/html/label.from.part.html create mode 100755 DOCBOOK/doc/html/labels.html create mode 100755 DOCBOOK/doc/html/linenumbering.everyNth.html create mode 100755 DOCBOOK/doc/html/linenumbering.extension.html create mode 100755 DOCBOOK/doc/html/linenumbering.separator.html create mode 100755 DOCBOOK/doc/html/linenumbering.width.html create mode 100755 DOCBOOK/doc/html/link.mailto.url.html create mode 100755 DOCBOOK/doc/html/links.html create mode 100755 DOCBOOK/doc/html/lists.html create mode 100755 DOCBOOK/doc/html/make.clean.html.html create mode 100755 DOCBOOK/doc/html/make.graphic.viewport.html create mode 100755 DOCBOOK/doc/html/make.single.year.ranges.html create mode 100755 DOCBOOK/doc/html/make.valid.html.html create mode 100755 DOCBOOK/doc/html/make.year.ranges.html create mode 100755 DOCBOOK/doc/html/manifest.html create mode 100755 DOCBOOK/doc/html/manifest.in.base.dir.html create mode 100755 DOCBOOK/doc/html/manual.toc.html create mode 100755 DOCBOOK/doc/html/menuchoice.menu.separator.html create mode 100755 DOCBOOK/doc/html/menuchoice.separator.html create mode 100755 DOCBOOK/doc/html/meta.html create mode 100755 DOCBOOK/doc/html/misc.html create mode 100755 DOCBOOK/doc/html/navig.graphics.extension.html create mode 100755 DOCBOOK/doc/html/navig.graphics.html create mode 100755 DOCBOOK/doc/html/navig.graphics.path.html create mode 100755 DOCBOOK/doc/html/navig.showtitles.html create mode 100755 DOCBOOK/doc/html/nominal.image.depth.html create mode 100755 DOCBOOK/doc/html/nominal.image.width.html create mode 100755 DOCBOOK/doc/html/nominal.table.width.html create mode 100755 DOCBOOK/doc/html/olink.base.uri.html create mode 100755 DOCBOOK/doc/html/olink.debug.html create mode 100755 DOCBOOK/doc/html/olink.doctitle.html create mode 100755 DOCBOOK/doc/html/olink.fragid.html create mode 100755 DOCBOOK/doc/html/olink.lang.fallback.sequence.html create mode 100755 DOCBOOK/doc/html/olink.outline.ext.html create mode 100755 DOCBOOK/doc/html/olink.properties.html create mode 100755 DOCBOOK/doc/html/olink.pubid.html create mode 100755 DOCBOOK/doc/html/olink.resolver.html create mode 100755 DOCBOOK/doc/html/olink.sysid.html create mode 100755 DOCBOOK/doc/html/othercredit.like.author.enabled.html create mode 100755 DOCBOOK/doc/html/para.propagates.style.html create mode 100755 DOCBOOK/doc/html/part.autolabel.html create mode 100755 DOCBOOK/doc/html/phrase.propagates.style.html create mode 100755 DOCBOOK/doc/html/pixels.per.inch.html create mode 100755 DOCBOOK/doc/html/points.per.em.html create mode 100755 DOCBOOK/doc/html/preface.autolabel.html create mode 100755 DOCBOOK/doc/html/prefer.internal.olink.html create mode 100755 DOCBOOK/doc/html/preferred.mediaobject.role.html create mode 100755 DOCBOOK/doc/html/process.empty.source.toc.html create mode 100755 DOCBOOK/doc/html/process.source.toc.html create mode 100755 DOCBOOK/doc/html/profile.arch.html create mode 100755 DOCBOOK/doc/html/profile.attribute.html create mode 100755 DOCBOOK/doc/html/profile.audience.html create mode 100755 DOCBOOK/doc/html/profile.condition.html create mode 100755 DOCBOOK/doc/html/profile.conformance.html create mode 100755 DOCBOOK/doc/html/profile.lang.html create mode 100755 DOCBOOK/doc/html/profile.os.html create mode 100755 DOCBOOK/doc/html/profile.revision.html create mode 100755 DOCBOOK/doc/html/profile.revisionflag.html create mode 100755 DOCBOOK/doc/html/profile.role.html create mode 100755 DOCBOOK/doc/html/profile.security.html create mode 100755 DOCBOOK/doc/html/profile.separator.html create mode 100755 DOCBOOK/doc/html/profile.status.html create mode 100755 DOCBOOK/doc/html/profile.userlevel.html create mode 100755 DOCBOOK/doc/html/profile.value.html create mode 100755 DOCBOOK/doc/html/profile.vendor.html create mode 100755 DOCBOOK/doc/html/profile.wordsize.html create mode 100755 DOCBOOK/doc/html/profiling.html create mode 100755 DOCBOOK/doc/html/punct.honorific.html create mode 100755 DOCBOOK/doc/html/qa.html create mode 100755 DOCBOOK/doc/html/qanda.defaultlabel.html create mode 100755 DOCBOOK/doc/html/qanda.in.toc.html create mode 100755 DOCBOOK/doc/html/qanda.inherit.numeration.html create mode 100755 DOCBOOK/doc/html/qanda.nested.in.toc.html create mode 100755 DOCBOOK/doc/html/qandadiv.autolabel.html create mode 100755 DOCBOOK/doc/html/refclass.suppress.html create mode 100755 DOCBOOK/doc/html/refentry.generate.name.html create mode 100755 DOCBOOK/doc/html/refentry.generate.title.html create mode 100755 DOCBOOK/doc/html/refentry.html create mode 100755 DOCBOOK/doc/html/refentry.separator.html create mode 100755 DOCBOOK/doc/html/refentry.xref.manvolnum.html create mode 100755 DOCBOOK/doc/html/reference.autolabel.html create mode 100755 DOCBOOK/doc/html/reference.css create mode 100755 DOCBOOK/doc/html/root.filename.html create mode 100755 DOCBOOK/doc/html/rootid.html create mode 100755 DOCBOOK/doc/html/runinhead.default.title.end.punct.html create mode 100755 DOCBOOK/doc/html/runinhead.title.end.punct.html create mode 100755 DOCBOOK/doc/html/saxon.character.representation.html create mode 100755 DOCBOOK/doc/html/section.autolabel.html create mode 100755 DOCBOOK/doc/html/section.autolabel.max.depth.html create mode 100755 DOCBOOK/doc/html/section.label.includes.component.label.html create mode 100755 DOCBOOK/doc/html/segmentedlist.as.table.html create mode 100755 DOCBOOK/doc/html/shade.verbatim.html create mode 100755 DOCBOOK/doc/html/shade.verbatim.style.html create mode 100755 DOCBOOK/doc/html/show.comments.html create mode 100755 DOCBOOK/doc/html/show.revisionflag.html create mode 100755 DOCBOOK/doc/html/simplesect.in.toc.html create mode 100755 DOCBOOK/doc/html/spacing.paras.html create mode 100755 DOCBOOK/doc/html/suppress.footer.navigation.html create mode 100755 DOCBOOK/doc/html/suppress.header.navigation.html create mode 100755 DOCBOOK/doc/html/suppress.navigation.html create mode 100755 DOCBOOK/doc/html/table.borders.with.css.html create mode 100755 DOCBOOK/doc/html/table.cell.border.color.html create mode 100755 DOCBOOK/doc/html/table.cell.border.style.html create mode 100755 DOCBOOK/doc/html/table.cell.border.thickness.html create mode 100755 DOCBOOK/doc/html/table.footnote.number.format.html create mode 100755 DOCBOOK/doc/html/table.footnote.number.symbols.html create mode 100755 DOCBOOK/doc/html/table.frame.border.color.html create mode 100755 DOCBOOK/doc/html/table.frame.border.style.html create mode 100755 DOCBOOK/doc/html/table.frame.border.thickness.html create mode 100755 DOCBOOK/doc/html/tablecolumns.extension.html create mode 100755 DOCBOOK/doc/html/tables.html create mode 100755 DOCBOOK/doc/html/target.database.document.html create mode 100755 DOCBOOK/doc/html/targets.filename.html create mode 100755 DOCBOOK/doc/html/tex.math.delims.html create mode 100755 DOCBOOK/doc/html/tex.math.file.html create mode 100755 DOCBOOK/doc/html/tex.math.in.alt.html create mode 100755 DOCBOOK/doc/html/textdata.default.encoding.html create mode 100755 DOCBOOK/doc/html/textinsert.extension.html create mode 100755 DOCBOOK/doc/html/toc.list.type.html create mode 100755 DOCBOOK/doc/html/toc.max.depth.html create mode 100755 DOCBOOK/doc/html/toc.section.depth.html create mode 100755 DOCBOOK/doc/html/toc_index.html create mode 100755 DOCBOOK/doc/html/ulink.target.html create mode 100755 DOCBOOK/doc/html/use.embed.for.svg.html create mode 100755 DOCBOOK/doc/html/use.extensions.html create mode 100755 DOCBOOK/doc/html/use.id.as.filename.html create mode 100755 DOCBOOK/doc/html/use.local.olink.style.html create mode 100755 DOCBOOK/doc/html/use.role.as.xrefstyle.html create mode 100755 DOCBOOK/doc/html/use.role.for.mediaobject.html create mode 100755 DOCBOOK/doc/html/use.svg.html create mode 100755 DOCBOOK/doc/html/variablelist.as.table.html create mode 100755 DOCBOOK/doc/html/variablelist.term.break.after.html create mode 100755 DOCBOOK/doc/html/variablelist.term.separator.html create mode 100755 DOCBOOK/doc/html/webhelp.autolabel.html create mode 100755 DOCBOOK/doc/html/webhelp.base.dir.html create mode 100755 DOCBOOK/doc/html/webhelp.common.dir.html create mode 100755 DOCBOOK/doc/html/webhelp.default.topic.html create mode 100755 DOCBOOK/doc/html/webhelp.html create mode 100755 DOCBOOK/doc/html/webhelp.include.search.tab.html create mode 100755 DOCBOOK/doc/html/webhelp.indexer.language.html create mode 100755 DOCBOOK/doc/html/webhelp.start.filename.html create mode 100755 DOCBOOK/doc/html/webhelp.tree.cookie.id.html create mode 100755 DOCBOOK/doc/html/writing.mode.html create mode 100755 DOCBOOK/doc/html/xref.label-page.separator.html create mode 100755 DOCBOOK/doc/html/xref.label-title.separator.html create mode 100755 DOCBOOK/doc/html/xref.title-page.separator.html create mode 100755 DOCBOOK/doc/html/xref.with.number.and.title.html create mode 100755 DOCBOOK/doc/html/xrefs.html create mode 100755 DOCBOOK/doc/html/xslt.html create mode 100755 DOCBOOK/doc/images/Thumbs.db create mode 100755 DOCBOOK/doc/images/annot-close.png create mode 100755 DOCBOOK/doc/images/annot-open.png create mode 100755 DOCBOOK/doc/images/blank.png create mode 100755 DOCBOOK/doc/images/callouts/1.gif create mode 100755 DOCBOOK/doc/images/callouts/1.png create mode 100755 DOCBOOK/doc/images/callouts/1.svg create mode 100755 DOCBOOK/doc/images/callouts/10.gif create mode 100755 DOCBOOK/doc/images/callouts/10.png create mode 100755 DOCBOOK/doc/images/callouts/10.svg create mode 100755 DOCBOOK/doc/images/callouts/11.gif create mode 100755 DOCBOOK/doc/images/callouts/11.png create mode 100755 DOCBOOK/doc/images/callouts/11.svg create mode 100755 DOCBOOK/doc/images/callouts/12.gif create mode 100755 DOCBOOK/doc/images/callouts/12.png create mode 100755 DOCBOOK/doc/images/callouts/12.svg create mode 100755 DOCBOOK/doc/images/callouts/13.gif create mode 100755 DOCBOOK/doc/images/callouts/13.png create mode 100755 DOCBOOK/doc/images/callouts/13.svg create mode 100755 DOCBOOK/doc/images/callouts/14.gif create mode 100755 DOCBOOK/doc/images/callouts/14.png create mode 100755 DOCBOOK/doc/images/callouts/14.svg create mode 100755 DOCBOOK/doc/images/callouts/15.gif create mode 100755 DOCBOOK/doc/images/callouts/15.png create mode 100755 DOCBOOK/doc/images/callouts/15.svg create mode 100755 DOCBOOK/doc/images/callouts/16.svg create mode 100755 DOCBOOK/doc/images/callouts/17.svg create mode 100755 DOCBOOK/doc/images/callouts/18.svg create mode 100755 DOCBOOK/doc/images/callouts/19.svg create mode 100755 DOCBOOK/doc/images/callouts/2.gif create mode 100755 DOCBOOK/doc/images/callouts/2.png create mode 100755 DOCBOOK/doc/images/callouts/2.svg create mode 100755 DOCBOOK/doc/images/callouts/20.svg create mode 100755 DOCBOOK/doc/images/callouts/21.svg create mode 100755 DOCBOOK/doc/images/callouts/22.svg create mode 100755 DOCBOOK/doc/images/callouts/23.svg create mode 100755 DOCBOOK/doc/images/callouts/24.svg create mode 100755 DOCBOOK/doc/images/callouts/25.svg create mode 100755 DOCBOOK/doc/images/callouts/26.svg create mode 100755 DOCBOOK/doc/images/callouts/27.svg create mode 100755 DOCBOOK/doc/images/callouts/28.svg create mode 100755 DOCBOOK/doc/images/callouts/29.svg create mode 100755 DOCBOOK/doc/images/callouts/3.gif create mode 100755 DOCBOOK/doc/images/callouts/3.png create mode 100755 DOCBOOK/doc/images/callouts/3.svg create mode 100755 DOCBOOK/doc/images/callouts/30.svg create mode 100755 DOCBOOK/doc/images/callouts/4.gif create mode 100755 DOCBOOK/doc/images/callouts/4.png create mode 100755 DOCBOOK/doc/images/callouts/4.svg create mode 100755 DOCBOOK/doc/images/callouts/5.gif create mode 100755 DOCBOOK/doc/images/callouts/5.png create mode 100755 DOCBOOK/doc/images/callouts/5.svg create mode 100755 DOCBOOK/doc/images/callouts/6.gif create mode 100755 DOCBOOK/doc/images/callouts/6.png create mode 100755 DOCBOOK/doc/images/callouts/6.svg create mode 100755 DOCBOOK/doc/images/callouts/7.gif create mode 100755 DOCBOOK/doc/images/callouts/7.png create mode 100755 DOCBOOK/doc/images/callouts/7.svg create mode 100755 DOCBOOK/doc/images/callouts/8.gif create mode 100755 DOCBOOK/doc/images/callouts/8.png create mode 100755 DOCBOOK/doc/images/callouts/8.svg create mode 100755 DOCBOOK/doc/images/callouts/9.gif create mode 100755 DOCBOOK/doc/images/callouts/9.png create mode 100755 DOCBOOK/doc/images/callouts/9.svg create mode 100755 DOCBOOK/doc/images/callouts/Thumbs.db create mode 100755 DOCBOOK/doc/images/caution.gif create mode 100755 DOCBOOK/doc/images/caution.png create mode 100755 DOCBOOK/doc/images/caution.svg create mode 100755 DOCBOOK/doc/images/caution.tif create mode 100755 DOCBOOK/doc/images/colorsvg/caution.svg create mode 100755 DOCBOOK/doc/images/colorsvg/home.svg create mode 100755 DOCBOOK/doc/images/colorsvg/important.svg create mode 100755 DOCBOOK/doc/images/colorsvg/next.svg create mode 100755 DOCBOOK/doc/images/colorsvg/note.svg create mode 100755 DOCBOOK/doc/images/colorsvg/prev.svg create mode 100755 DOCBOOK/doc/images/colorsvg/tip.svg create mode 100755 DOCBOOK/doc/images/colorsvg/up.svg create mode 100755 DOCBOOK/doc/images/colorsvg/warning.svg create mode 100755 DOCBOOK/doc/images/draft.png create mode 100755 DOCBOOK/doc/images/draft.svg create mode 100755 DOCBOOK/doc/images/home.gif create mode 100755 DOCBOOK/doc/images/home.png create mode 100755 DOCBOOK/doc/images/home.svg create mode 100755 DOCBOOK/doc/images/important.gif create mode 100755 DOCBOOK/doc/images/important.png create mode 100755 DOCBOOK/doc/images/important.svg create mode 100755 DOCBOOK/doc/images/important.tif create mode 100755 DOCBOOK/doc/images/next.gif create mode 100755 DOCBOOK/doc/images/next.png create mode 100755 DOCBOOK/doc/images/next.svg create mode 100755 DOCBOOK/doc/images/note.gif create mode 100755 DOCBOOK/doc/images/note.png create mode 100755 DOCBOOK/doc/images/note.svg create mode 100755 DOCBOOK/doc/images/note.tif create mode 100755 DOCBOOK/doc/images/prev.gif create mode 100755 DOCBOOK/doc/images/prev.png create mode 100755 DOCBOOK/doc/images/prev.svg create mode 100755 DOCBOOK/doc/images/tip.gif create mode 100755 DOCBOOK/doc/images/tip.png create mode 100755 DOCBOOK/doc/images/tip.svg create mode 100755 DOCBOOK/doc/images/tip.tif create mode 100755 DOCBOOK/doc/images/toc-blank.png create mode 100755 DOCBOOK/doc/images/toc-minus.png create mode 100755 DOCBOOK/doc/images/toc-plus.png create mode 100755 DOCBOOK/doc/images/up.gif create mode 100755 DOCBOOK/doc/images/up.png create mode 100755 DOCBOOK/doc/images/up.svg create mode 100755 DOCBOOK/doc/images/warning.gif create mode 100755 DOCBOOK/doc/images/warning.png create mode 100755 DOCBOOK/doc/images/warning.svg create mode 100755 DOCBOOK/doc/images/warning.tif create mode 100755 DOCBOOK/doc/index.html create mode 100755 DOCBOOK/doc/lib/apply-string-subst-map.html create mode 100755 DOCBOOK/doc/lib/comment-escape-string.html create mode 100755 DOCBOOK/doc/lib/comment-escape-string.recursive.html create mode 100755 DOCBOOK/doc/lib/copy-string.html create mode 100755 DOCBOOK/doc/lib/count.uri.path.depth.html create mode 100755 DOCBOOK/doc/lib/dirname.html create mode 100755 DOCBOOK/doc/lib/dot.count.html create mode 100755 DOCBOOK/doc/lib/generallibrary.html create mode 100755 DOCBOOK/doc/lib/idref.html create mode 100755 DOCBOOK/doc/lib/index.html create mode 100755 DOCBOOK/doc/lib/length-in-points.html create mode 100755 DOCBOOK/doc/lib/length-magnitude.html create mode 100755 DOCBOOK/doc/lib/length-spec.html create mode 100755 DOCBOOK/doc/lib/length-units.html create mode 100755 DOCBOOK/doc/lib/lookup.key.html create mode 100755 DOCBOOK/doc/lib/pi-attribute.html create mode 100755 DOCBOOK/doc/lib/reference.css create mode 100755 DOCBOOK/doc/lib/relativeuri.html create mode 100755 DOCBOOK/doc/lib/resolve.path.html create mode 100755 DOCBOOK/doc/lib/str.tokenize.keep.delimiters.html create mode 100755 DOCBOOK/doc/lib/string.subst.html create mode 100755 DOCBOOK/doc/lib/trim.common.uri.paths.html create mode 100755 DOCBOOK/doc/lib/trim.text.html create mode 100755 DOCBOOK/doc/lib/xpath.location.html create mode 100755 DOCBOOK/doc/lib/xpointer.idref.html create mode 100755 DOCBOOK/doc/manpages/authors.html create mode 100755 DOCBOOK/doc/manpages/charmap.html create mode 100755 DOCBOOK/doc/manpages/endnotes.html create mode 100755 DOCBOOK/doc/manpages/fonts.html create mode 100755 DOCBOOK/doc/manpages/general.html create mode 100755 DOCBOOK/doc/manpages/indent.html create mode 100755 DOCBOOK/doc/manpages/index.html create mode 100755 DOCBOOK/doc/manpages/lists.html create mode 100755 DOCBOOK/doc/manpages/man.authors.section.enabled.html create mode 100755 DOCBOOK/doc/manpages/man.base.url.for.relative.links.html create mode 100755 DOCBOOK/doc/manpages/man.break.after.slash.html create mode 100755 DOCBOOK/doc/manpages/man.charmap.enabled.html create mode 100755 DOCBOOK/doc/manpages/man.charmap.subset.profile.english.html create mode 100755 DOCBOOK/doc/manpages/man.charmap.subset.profile.html create mode 100755 DOCBOOK/doc/manpages/man.charmap.uri.html create mode 100755 DOCBOOK/doc/manpages/man.charmap.use.subset.html create mode 100755 DOCBOOK/doc/manpages/man.copyright.section.enabled.html create mode 100755 DOCBOOK/doc/manpages/man.endnotes.are.numbered.html create mode 100755 DOCBOOK/doc/manpages/man.endnotes.list.enabled.html create mode 100755 DOCBOOK/doc/manpages/man.endnotes.list.heading.html create mode 100755 DOCBOOK/doc/manpages/man.font.funcprototype.html create mode 100755 DOCBOOK/doc/manpages/man.font.funcsynopsisinfo.html create mode 100755 DOCBOOK/doc/manpages/man.font.links.html create mode 100755 DOCBOOK/doc/manpages/man.font.table.headings.html create mode 100755 DOCBOOK/doc/manpages/man.font.table.title.html create mode 100755 DOCBOOK/doc/manpages/man.funcsynopsis.style.html create mode 100755 DOCBOOK/doc/manpages/man.hyphenate.computer.inlines.html create mode 100755 DOCBOOK/doc/manpages/man.hyphenate.filenames.html create mode 100755 DOCBOOK/doc/manpages/man.hyphenate.html create mode 100755 DOCBOOK/doc/manpages/man.hyphenate.urls.html create mode 100755 DOCBOOK/doc/manpages/man.indent.blurbs.html create mode 100755 DOCBOOK/doc/manpages/man.indent.lists.html create mode 100755 DOCBOOK/doc/manpages/man.indent.refsect.html create mode 100755 DOCBOOK/doc/manpages/man.indent.verbatims.html create mode 100755 DOCBOOK/doc/manpages/man.indent.width.html create mode 100755 DOCBOOK/doc/manpages/man.justify.html create mode 100755 DOCBOOK/doc/manpages/man.output.base.dir.html create mode 100755 DOCBOOK/doc/manpages/man.output.better.ps.enabled.html create mode 100755 DOCBOOK/doc/manpages/man.output.encoding.html create mode 100755 DOCBOOK/doc/manpages/man.output.in.separate.dir.html create mode 100755 DOCBOOK/doc/manpages/man.output.lang.in.name.enabled.html create mode 100755 DOCBOOK/doc/manpages/man.output.manifest.enabled.html create mode 100755 DOCBOOK/doc/manpages/man.output.manifest.filename.html create mode 100755 DOCBOOK/doc/manpages/man.output.quietly.html create mode 100755 DOCBOOK/doc/manpages/man.output.subdirs.enabled.html create mode 100755 DOCBOOK/doc/manpages/man.segtitle.suppress.html create mode 100755 DOCBOOK/doc/manpages/man.string.subst.map.html create mode 100755 DOCBOOK/doc/manpages/man.string.subst.map.local.post.html create mode 100755 DOCBOOK/doc/manpages/man.string.subst.map.local.pre.html create mode 100755 DOCBOOK/doc/manpages/man.subheading.divider.enabled.html create mode 100755 DOCBOOK/doc/manpages/man.subheading.divider.html create mode 100755 DOCBOOK/doc/manpages/man.table.footnotes.divider.html create mode 100755 DOCBOOK/doc/manpages/man.th.extra1.suppress.html create mode 100755 DOCBOOK/doc/manpages/man.th.extra2.max.length.html create mode 100755 DOCBOOK/doc/manpages/man.th.extra2.suppress.html create mode 100755 DOCBOOK/doc/manpages/man.th.extra3.max.length.html create mode 100755 DOCBOOK/doc/manpages/man.th.extra3.suppress.html create mode 100755 DOCBOOK/doc/manpages/man.th.title.max.length.html create mode 100755 DOCBOOK/doc/manpages/other.html create mode 100755 DOCBOOK/doc/manpages/output.html create mode 100755 DOCBOOK/doc/manpages/refentry.date.profile.enabled.html create mode 100755 DOCBOOK/doc/manpages/refentry.date.profile.html create mode 100755 DOCBOOK/doc/manpages/refentry.manual.fallback.profile.html create mode 100755 DOCBOOK/doc/manpages/refentry.manual.profile.enabled.html create mode 100755 DOCBOOK/doc/manpages/refentry.manual.profile.html create mode 100755 DOCBOOK/doc/manpages/refentry.meta.get.quietly.html create mode 100755 DOCBOOK/doc/manpages/refentry.source.fallback.profile.html create mode 100755 DOCBOOK/doc/manpages/refentry.source.name.profile.enabled.html create mode 100755 DOCBOOK/doc/manpages/refentry.source.name.profile.html create mode 100755 DOCBOOK/doc/manpages/refentry.source.name.suppress.html create mode 100755 DOCBOOK/doc/manpages/refentry.version.profile.enabled.html create mode 100755 DOCBOOK/doc/manpages/refentry.version.profile.html create mode 100755 DOCBOOK/doc/manpages/refentry.version.suppress.html create mode 100755 DOCBOOK/doc/manpages/reference.css create mode 100755 DOCBOOK/doc/manpages/refmeta.html create mode 100755 DOCBOOK/doc/manpages/synopsis.html create mode 100755 DOCBOOK/doc/manpages/th.html create mode 100755 DOCBOOK/doc/param.html create mode 100755 DOCBOOK/doc/pi/dbchoice_choice.html create mode 100755 DOCBOOK/doc/pi/dbcmdlist.html create mode 100755 DOCBOOK/doc/pi/dbfo-need.html create mode 100755 DOCBOOK/doc/pi/dbfo_background-color.html create mode 100755 DOCBOOK/doc/pi/dbfo_bgcolor.html create mode 100755 DOCBOOK/doc/pi/dbfo_float-type.html create mode 100755 DOCBOOK/doc/pi/dbfo_funcsynopsis-style.html create mode 100755 DOCBOOK/doc/pi/dbfo_glossary-presentation.html create mode 100755 DOCBOOK/doc/pi/dbfo_glosslist-presentation.html create mode 100755 DOCBOOK/doc/pi/dbfo_glossterm-width.html create mode 100755 DOCBOOK/doc/pi/dbfo_keep-together.html create mode 100755 DOCBOOK/doc/pi/dbfo_label-width.html create mode 100755 DOCBOOK/doc/pi/dbfo_linenumbering.everyNth.html create mode 100755 DOCBOOK/doc/pi/dbfo_linenumbering.separator.html create mode 100755 DOCBOOK/doc/pi/dbfo_linenumbering.width.html create mode 100755 DOCBOOK/doc/pi/dbfo_list-presentation.html create mode 100755 DOCBOOK/doc/pi/dbfo_list-width.html create mode 100755 DOCBOOK/doc/pi/dbfo_orientation.html create mode 100755 DOCBOOK/doc/pi/dbfo_pgwide.html create mode 100755 DOCBOOK/doc/pi/dbfo_rotated-width.html create mode 100755 DOCBOOK/doc/pi/dbfo_row-height.html create mode 100755 DOCBOOK/doc/pi/dbfo_sidebar-width.html create mode 100755 DOCBOOK/doc/pi/dbfo_start.html create mode 100755 DOCBOOK/doc/pi/dbfo_table-width.html create mode 100755 DOCBOOK/doc/pi/dbfo_term-width.html create mode 100755 DOCBOOK/doc/pi/dbfo_toc.html create mode 100755 DOCBOOK/doc/pi/dbfunclist.html create mode 100755 DOCBOOK/doc/pi/dbhh.html create mode 100755 DOCBOOK/doc/pi/dbhtml-include_href.html create mode 100755 DOCBOOK/doc/pi/dbhtml_background-color.html create mode 100755 DOCBOOK/doc/pi/dbhtml_bgcolor.html create mode 100755 DOCBOOK/doc/pi/dbhtml_cellpadding.html create mode 100755 DOCBOOK/doc/pi/dbhtml_cellspacing.html create mode 100755 DOCBOOK/doc/pi/dbhtml_class.html create mode 100755 DOCBOOK/doc/pi/dbhtml_dir.html create mode 100755 DOCBOOK/doc/pi/dbhtml_filename.html create mode 100755 DOCBOOK/doc/pi/dbhtml_funcsynopsis-style.html create mode 100755 DOCBOOK/doc/pi/dbhtml_img.src.path.html create mode 100755 DOCBOOK/doc/pi/dbhtml_label-width.html create mode 100755 DOCBOOK/doc/pi/dbhtml_linenumbering.everyNth.html create mode 100755 DOCBOOK/doc/pi/dbhtml_linenumbering.separator.html create mode 100755 DOCBOOK/doc/pi/dbhtml_linenumbering.width.html create mode 100755 DOCBOOK/doc/pi/dbhtml_list-presentation.html create mode 100755 DOCBOOK/doc/pi/dbhtml_list-width.html create mode 100755 DOCBOOK/doc/pi/dbhtml_row-height.html create mode 100755 DOCBOOK/doc/pi/dbhtml_start.html create mode 100755 DOCBOOK/doc/pi/dbhtml_stop-chunking.html create mode 100755 DOCBOOK/doc/pi/dbhtml_table-summary.html create mode 100755 DOCBOOK/doc/pi/dbhtml_table-width.html create mode 100755 DOCBOOK/doc/pi/dbhtml_term-presentation.html create mode 100755 DOCBOOK/doc/pi/dbhtml_term-separator.html create mode 100755 DOCBOOK/doc/pi/dbhtml_term-width.html create mode 100755 DOCBOOK/doc/pi/dbhtml_toc.html create mode 100755 DOCBOOK/doc/pi/dbman_funcsynopsis-style.html create mode 100755 DOCBOOK/doc/pi/dbtex_delims.html create mode 100755 DOCBOOK/doc/pi/dbtimestamp.html create mode 100755 DOCBOOK/doc/pi/index.html create mode 100755 DOCBOOK/doc/pi/pi-common.html create mode 100755 DOCBOOK/doc/pi/pi-fo.html create mode 100755 DOCBOOK/doc/pi/pi-html.html create mode 100755 DOCBOOK/doc/pi/pi-man.html create mode 100755 DOCBOOK/doc/pi/reference.css create mode 100755 DOCBOOK/doc/refentry/reference.css create mode 100755 DOCBOOK/doc/reference.css create mode 100755 DOCBOOK/doc/reference.html create mode 100755 DOCBOOK/doc/reference.pdf.gz create mode 100755 DOCBOOK/doc/reference.txt.gz create mode 100755 DOCBOOK/doc/roundtrip/index.html create mode 100755 DOCBOOK/doc/roundtrip/pages.template.html create mode 100755 DOCBOOK/doc/roundtrip/reference.css create mode 100755 DOCBOOK/doc/roundtrip/wordml.template.html create mode 100755 DOCBOOK/doc/slides/active.toc.html create mode 100755 DOCBOOK/doc/slides/body.bg.color.html create mode 100755 DOCBOOK/doc/slides/bullet.image.html create mode 100755 DOCBOOK/doc/slides/css.stylesheet.dir.html create mode 100755 DOCBOOK/doc/slides/css.stylesheet.html create mode 100755 DOCBOOK/doc/slides/disable.collapsible.html create mode 100755 DOCBOOK/doc/slides/disable.incremental.html create mode 100755 DOCBOOK/doc/slides/dynamic.toc.html create mode 100755 DOCBOOK/doc/slides/fo.html create mode 100755 DOCBOOK/doc/slides/foil.footer.properties.html create mode 100755 DOCBOOK/doc/slides/foil.header.properties.html create mode 100755 DOCBOOK/doc/slides/foil.master.properties.html create mode 100755 DOCBOOK/doc/slides/foil.page-sequence.properties.html create mode 100755 DOCBOOK/doc/slides/foil.properties.html create mode 100755 DOCBOOK/doc/slides/foil.region-after.properties.html create mode 100755 DOCBOOK/doc/slides/foil.region-before.properties.html create mode 100755 DOCBOOK/doc/slides/foil.region-body.properties.html create mode 100755 DOCBOOK/doc/slides/foil.subtitle.properties.html create mode 100755 DOCBOOK/doc/slides/foil.title.master.html create mode 100755 DOCBOOK/doc/slides/foil.title.properties.html create mode 100755 DOCBOOK/doc/slides/foil.title.size.html create mode 100755 DOCBOOK/doc/slides/foilgroup.properties.html create mode 100755 DOCBOOK/doc/slides/foilgroup.toc.html create mode 100755 DOCBOOK/doc/slides/frames.html create mode 100755 DOCBOOK/doc/slides/generate.copyright.html create mode 100755 DOCBOOK/doc/slides/generate.foilgroup.numbered.toc.html create mode 100755 DOCBOOK/doc/slides/generate.foilgroup.toc.html create mode 100755 DOCBOOK/doc/slides/generate.handoutnotes.html create mode 100755 DOCBOOK/doc/slides/generate.page.number.html create mode 100755 DOCBOOK/doc/slides/generate.pubdate.html create mode 100755 DOCBOOK/doc/slides/generate.speakernotes.html create mode 100755 DOCBOOK/doc/slides/generate.titlepage.html create mode 100755 DOCBOOK/doc/slides/graphics.dir.html create mode 100755 DOCBOOK/doc/slides/graphics.html create mode 100755 DOCBOOK/doc/slides/handoutnotes.properties.html create mode 100755 DOCBOOK/doc/slides/hidetoc.image.html create mode 100755 DOCBOOK/doc/slides/home.image.html create mode 100755 DOCBOOK/doc/slides/html.html create mode 100755 DOCBOOK/doc/slides/index.html create mode 100755 DOCBOOK/doc/slides/javascript.html create mode 100755 DOCBOOK/doc/slides/keyboard.nav.html create mode 100755 DOCBOOK/doc/slides/l10n.html create mode 100755 DOCBOOK/doc/slides/minus.image.html create mode 100755 DOCBOOK/doc/slides/mml.embedding.mode.html create mode 100755 DOCBOOK/doc/slides/multiframe.bottom.bgcolor.html create mode 100755 DOCBOOK/doc/slides/multiframe.html create mode 100755 DOCBOOK/doc/slides/multiframe.navigation.height.html create mode 100755 DOCBOOK/doc/slides/multiframe.top.bgcolor.html create mode 100755 DOCBOOK/doc/slides/nav.separator.html create mode 100755 DOCBOOK/doc/slides/next.image.html create mode 100755 DOCBOOK/doc/slides/no.home.image.html create mode 100755 DOCBOOK/doc/slides/no.next.image.html create mode 100755 DOCBOOK/doc/slides/no.prev.image.html create mode 100755 DOCBOOK/doc/slides/no.toc.image.html create mode 100755 DOCBOOK/doc/slides/no.up.image.html create mode 100755 DOCBOOK/doc/slides/output.indent.html create mode 100755 DOCBOOK/doc/slides/overlay.html create mode 100755 DOCBOOK/doc/slides/overlay.js.html create mode 100755 DOCBOOK/doc/slides/overlay.logo.html create mode 100755 DOCBOOK/doc/slides/plus.image.html create mode 100755 DOCBOOK/doc/slides/prev.image.html create mode 100755 DOCBOOK/doc/slides/propsets.html create mode 100755 DOCBOOK/doc/slides/reference.css create mode 100755 DOCBOOK/doc/slides/running.foot.properties.html create mode 100755 DOCBOOK/doc/slides/s5.controls.html create mode 100755 DOCBOOK/doc/slides/s5.defaultview.html create mode 100755 DOCBOOK/doc/slides/s5.html create mode 100755 DOCBOOK/doc/slides/s5.opera.css.html create mode 100755 DOCBOOK/doc/slides/s5.outline.css.html create mode 100755 DOCBOOK/doc/slides/s5.path.prefix.html create mode 100755 DOCBOOK/doc/slides/s5.print.css.html create mode 100755 DOCBOOK/doc/slides/s5.slides.css.html create mode 100755 DOCBOOK/doc/slides/s5.slides.js.html create mode 100755 DOCBOOK/doc/slides/script.dir.html create mode 100755 DOCBOOK/doc/slides/show.foil.number.html create mode 100755 DOCBOOK/doc/slides/showtoc.image.html create mode 100755 DOCBOOK/doc/slides/slide.font.family.html create mode 100755 DOCBOOK/doc/slides/slide.title.font.family.html create mode 100755 DOCBOOK/doc/slides/slides.js.html create mode 100755 DOCBOOK/doc/slides/slides.properties.html create mode 100755 DOCBOOK/doc/slides/slides.titlepage.author.properties.html create mode 100755 DOCBOOK/doc/slides/slides.titlepage.authorgroup.properties.html create mode 100755 DOCBOOK/doc/slides/slides.titlepage.corpauthor.properties.html create mode 100755 DOCBOOK/doc/slides/slides.titlepage.master.properties.html create mode 100755 DOCBOOK/doc/slides/slides.titlepage.pubdate.properties.html create mode 100755 DOCBOOK/doc/slides/slides.titlepage.region-body.properties.html create mode 100755 DOCBOOK/doc/slides/slides.titlepage.subtitle.properties.html create mode 100755 DOCBOOK/doc/slides/slides.titlepage.title.properties.html create mode 100755 DOCBOOK/doc/slides/slidy.duration.html create mode 100755 DOCBOOK/doc/slides/slidy.html create mode 100755 DOCBOOK/doc/slides/slidy.path.prefix.html create mode 100755 DOCBOOK/doc/slides/slidy.slidy.css.html create mode 100755 DOCBOOK/doc/slides/slidy.slidy.js.html create mode 100755 DOCBOOK/doc/slides/slidy.user.css.html create mode 100755 DOCBOOK/doc/slides/speakernote.properties.html create mode 100755 DOCBOOK/doc/slides/speakernotes.properties.html create mode 100755 DOCBOOK/doc/slides/svg.embedding.mode.html create mode 100755 DOCBOOK/doc/slides/text.home.html create mode 100755 DOCBOOK/doc/slides/text.next.html create mode 100755 DOCBOOK/doc/slides/text.prev.html create mode 100755 DOCBOOK/doc/slides/text.toc.html create mode 100755 DOCBOOK/doc/slides/text.up.html create mode 100755 DOCBOOK/doc/slides/titlefoil.html.html create mode 100755 DOCBOOK/doc/slides/toc.bg.color.html create mode 100755 DOCBOOK/doc/slides/toc.hide.show.html create mode 100755 DOCBOOK/doc/slides/toc.html.html create mode 100755 DOCBOOK/doc/slides/toc.image.html create mode 100755 DOCBOOK/doc/slides/toc.row.height.html create mode 100755 DOCBOOK/doc/slides/toc.width.html create mode 100755 DOCBOOK/doc/slides/ua.js.html create mode 100755 DOCBOOK/doc/slides/up.image.html create mode 100755 DOCBOOK/doc/slides/user.css.html create mode 100755 DOCBOOK/doc/slides/wrap.slidecontent.html create mode 100755 DOCBOOK/doc/slides/xbCollapsibleLists.js.html create mode 100755 DOCBOOK/doc/slides/xbDOM.js.html create mode 100755 DOCBOOK/doc/slides/xbLibrary.js.html create mode 100755 DOCBOOK/doc/slides/xbStyle.js.html create mode 100755 DOCBOOK/doc/slides/xhtml.html create mode 100755 DOCBOOK/doc/template/attr_star_in_copy.html create mode 100755 DOCBOOK/doc/template/attr_star_in_copy.literal.atts.html create mode 100755 DOCBOOK/doc/template/attr_star_in_document.order.html create mode 100755 DOCBOOK/doc/template/index.html create mode 100755 DOCBOOK/doc/template/or.html create mode 100755 DOCBOOK/doc/template/or_in_titlepage.subrules.html create mode 100755 DOCBOOK/doc/template/reference.css create mode 100755 DOCBOOK/doc/template/star.html create mode 100755 DOCBOOK/doc/template/star_in_copy.html create mode 100755 DOCBOOK/doc/template/star_in_document.order.html create mode 100755 DOCBOOK/doc/template/star_in_titlepage.specialrules.html create mode 100755 DOCBOOK/doc/template/star_in_titlepage.subrules.html create mode 100755 DOCBOOK/doc/template/template.element-or-list.html create mode 100755 DOCBOOK/doc/template/templates.html create mode 100755 DOCBOOK/doc/template/titlepage-before.html create mode 100755 DOCBOOK/doc/template/titlepage-content.html create mode 100755 DOCBOOK/doc/template/titlepage-separator.html create mode 100755 DOCBOOK/doc/template/titlepage.html create mode 100755 DOCBOOK/doc/utility/reference.css create mode 100755 DOCBOOK/doc/warranty.html create mode 100755 DOCBOOK/doc/website/autolayout-file.html create mode 100755 DOCBOOK/doc/website/banner.before.navigation.html create mode 100755 DOCBOOK/doc/website/body.attributes.html create mode 100755 DOCBOOK/doc/website/currentpage.marker.html create mode 100755 DOCBOOK/doc/website/dry-run.html create mode 100755 DOCBOOK/doc/website/feedback.href.html create mode 100755 DOCBOOK/doc/website/feedback.link.text.html create mode 100755 DOCBOOK/doc/website/feedback.with.ids.html create mode 100755 DOCBOOK/doc/website/filename-prefix.html create mode 100755 DOCBOOK/doc/website/footer.hr.html create mode 100755 DOCBOOK/doc/website/general.html create mode 100755 DOCBOOK/doc/website/header.hr.html create mode 100755 DOCBOOK/doc/website/index.html create mode 100755 DOCBOOK/doc/website/nav.html create mode 100755 DOCBOOK/doc/website/nav.table.summary.html create mode 100755 DOCBOOK/doc/website/navbgcolor.html create mode 100755 DOCBOOK/doc/website/navbodywidth.html create mode 100755 DOCBOOK/doc/website/navtocwidth.html create mode 100755 DOCBOOK/doc/website/output-root.html create mode 100755 DOCBOOK/doc/website/rebuild-all.html create mode 100755 DOCBOOK/doc/website/reference.css create mode 100755 DOCBOOK/doc/website/sequential.links.html create mode 100755 DOCBOOK/doc/website/suppress.homepage.title.html create mode 100755 DOCBOOK/doc/website/table.spacer.image.html create mode 100755 DOCBOOK/doc/website/textbgcolor.html create mode 100755 DOCBOOK/doc/website/toc.blank.graphic.html create mode 100755 DOCBOOK/doc/website/toc.blank.image.html create mode 100755 DOCBOOK/doc/website/toc.blank.text.html create mode 100755 DOCBOOK/doc/website/toc.html create mode 100755 DOCBOOK/doc/website/toc.pointer.graphic.html create mode 100755 DOCBOOK/doc/website/toc.pointer.image.html create mode 100755 DOCBOOK/doc/website/toc.pointer.text.html create mode 100755 DOCBOOK/doc/website/toc.spacer.graphic.html create mode 100755 DOCBOOK/doc/website/toc.spacer.image.html create mode 100755 DOCBOOK/doc/website/toc.spacer.text.html create mode 100755 DOCBOOK/docsrc/authors.xml create mode 100755 DOCBOOK/docsrc/copyright.xml create mode 100755 DOCBOOK/docsrc/license.xml create mode 100755 DOCBOOK/docsrc/page.png create mode 100755 DOCBOOK/docsrc/reference.css create mode 100755 DOCBOOK/docsrc/reference.xml create mode 100755 DOCBOOK/docsrc/reference.xml.included create mode 100755 DOCBOOK/docsrc/warranty.xml create mode 100755 DOCBOOK/eclipse/eclipse.xsl create mode 100755 DOCBOOK/eclipse/eclipse3.xsl create mode 100755 DOCBOOK/eclipse/profile-eclipse.xsl create mode 100755 DOCBOOK/epub/README create mode 100755 DOCBOOK/epub/bin/dbtoepub create mode 100755 DOCBOOK/epub/bin/lib/docbook.rb create mode 100755 DOCBOOK/epub/bin/xslt/obfuscate.xsl create mode 100755 DOCBOOK/epub/docbook.xsl create mode 100755 DOCBOOK/epub3/CoverImage.xhtml create mode 100755 DOCBOOK/epub3/README create mode 100755 DOCBOOK/epub3/chunk.xsl create mode 100755 DOCBOOK/epub3/chunkfast.xsl create mode 100755 DOCBOOK/epub3/cover.jpg create mode 100755 DOCBOOK/epub3/docbook-epub.css.xml create mode 100755 DOCBOOK/epub3/docbook.xsl create mode 100755 DOCBOOK/epub3/epub3-chunk-mods.xsl create mode 100755 DOCBOOK/epub3/epub3-element-mods.xsl create mode 100755 DOCBOOK/epub3/profile-chunk.xsl create mode 100755 DOCBOOK/epub3/profile-docbook.xsl create mode 100755 DOCBOOK/epub3/titlepage.templates.xml create mode 100755 DOCBOOK/epub3/titlepage.templates.xsl create mode 100755 DOCBOOK/fo/admon.xsl create mode 100755 DOCBOOK/fo/annotations.xsl create mode 100755 DOCBOOK/fo/autoidx-kimber.xsl create mode 100755 DOCBOOK/fo/autoidx-kosek.xsl create mode 100755 DOCBOOK/fo/autoidx-ng.xsl create mode 100755 DOCBOOK/fo/autoidx.xsl create mode 100755 DOCBOOK/fo/autotoc.xsl create mode 100755 DOCBOOK/fo/axf.xsl create mode 100755 DOCBOOK/fo/biblio-iso690.xsl create mode 100755 DOCBOOK/fo/biblio.xsl create mode 100755 DOCBOOK/fo/block.xsl create mode 100755 DOCBOOK/fo/callout.xsl create mode 100755 DOCBOOK/fo/component.xsl create mode 100755 DOCBOOK/fo/division.xsl create mode 100755 DOCBOOK/fo/docbook.xsl create mode 100755 DOCBOOK/fo/ebnf.xsl create mode 100755 DOCBOOK/fo/fo-rtf.xsl create mode 100755 DOCBOOK/fo/fo.xsl create mode 100755 DOCBOOK/fo/footnote.xsl create mode 100755 DOCBOOK/fo/fop.xsl create mode 100755 DOCBOOK/fo/fop1.xsl create mode 100755 DOCBOOK/fo/formal.xsl create mode 100755 DOCBOOK/fo/glossary.xsl create mode 100755 DOCBOOK/fo/graphics.xsl create mode 100755 DOCBOOK/fo/highlight.xsl create mode 100755 DOCBOOK/fo/htmltbl.xsl create mode 100755 DOCBOOK/fo/index.xsl create mode 100755 DOCBOOK/fo/info.xsl create mode 100755 DOCBOOK/fo/inline.xsl create mode 100755 DOCBOOK/fo/keywords.xsl create mode 100755 DOCBOOK/fo/lists.xsl create mode 100755 DOCBOOK/fo/math.xsl create mode 100755 DOCBOOK/fo/pagesetup.xsl create mode 100755 DOCBOOK/fo/param.xml create mode 100755 DOCBOOK/fo/param.xsl create mode 100755 DOCBOOK/fo/passivetex.xsl create mode 100755 DOCBOOK/fo/pdf2index create mode 100755 DOCBOOK/fo/pi.xml create mode 100755 DOCBOOK/fo/pi.xsl create mode 100755 DOCBOOK/fo/profile-docbook.xsl create mode 100755 DOCBOOK/fo/ptc.xsl create mode 100755 DOCBOOK/fo/qandaset.xsl create mode 100755 DOCBOOK/fo/refentry.xsl create mode 100755 DOCBOOK/fo/sections.xsl create mode 100755 DOCBOOK/fo/spaces.xsl create mode 100755 DOCBOOK/fo/synop.xsl create mode 100755 DOCBOOK/fo/table.xml create mode 100755 DOCBOOK/fo/table.xsl create mode 100755 DOCBOOK/fo/task.xsl create mode 100755 DOCBOOK/fo/titlepage.templates.xml create mode 100755 DOCBOOK/fo/titlepage.templates.xsl create mode 100755 DOCBOOK/fo/titlepage.xsl create mode 100755 DOCBOOK/fo/toc.xsl create mode 100755 DOCBOOK/fo/verbatim.xsl create mode 100755 DOCBOOK/fo/xep.xsl create mode 100755 DOCBOOK/fo/xref.xsl create mode 100755 DOCBOOK/highlighting/README create mode 100755 DOCBOOK/highlighting/bourne-hl.xml create mode 100755 DOCBOOK/highlighting/c-hl.xml create mode 100755 DOCBOOK/highlighting/cmake-hl.xml create mode 100755 DOCBOOK/highlighting/common.xsl create mode 100755 DOCBOOK/highlighting/cpp-hl.xml create mode 100755 DOCBOOK/highlighting/csharp-hl.xml create mode 100755 DOCBOOK/highlighting/css21-hl.xml create mode 100755 DOCBOOK/highlighting/delphi-hl.xml create mode 100755 DOCBOOK/highlighting/ini-hl.xml create mode 100755 DOCBOOK/highlighting/java-hl.xml create mode 100755 DOCBOOK/highlighting/javascript-hl.xml create mode 100755 DOCBOOK/highlighting/lua-hl.xml create mode 100755 DOCBOOK/highlighting/m2-hl.xml create mode 100755 DOCBOOK/highlighting/myxml-hl.xml create mode 100755 DOCBOOK/highlighting/perl-hl.xml create mode 100755 DOCBOOK/highlighting/php-hl.xml create mode 100755 DOCBOOK/highlighting/python-hl.xml create mode 100755 DOCBOOK/highlighting/ruby-hl.xml create mode 100755 DOCBOOK/highlighting/sql1999-hl.xml create mode 100755 DOCBOOK/highlighting/sql2003-hl.xml create mode 100755 DOCBOOK/highlighting/sql92-hl.xml create mode 100755 DOCBOOK/highlighting/tcl-hl.xml create mode 100755 DOCBOOK/highlighting/upc-hl.xml create mode 100755 DOCBOOK/highlighting/xslthl-config.xml create mode 100755 DOCBOOK/html/admon.xsl create mode 100755 DOCBOOK/html/annotations.xsl create mode 100755 DOCBOOK/html/autoidx-kimber.xsl create mode 100755 DOCBOOK/html/autoidx-kosek.xsl create mode 100755 DOCBOOK/html/autoidx-ng.xsl create mode 100755 DOCBOOK/html/autoidx.xsl create mode 100755 DOCBOOK/html/autotoc.xsl create mode 100755 DOCBOOK/html/biblio-iso690.xsl create mode 100755 DOCBOOK/html/biblio.xsl create mode 100755 DOCBOOK/html/block.xsl create mode 100755 DOCBOOK/html/callout.xsl create mode 100755 DOCBOOK/html/changebars.xsl create mode 100755 DOCBOOK/html/chunk-changebars.xsl create mode 100755 DOCBOOK/html/chunk-code.xsl create mode 100755 DOCBOOK/html/chunk-common.xsl create mode 100755 DOCBOOK/html/chunk.xsl create mode 100755 DOCBOOK/html/chunker.xsl create mode 100755 DOCBOOK/html/chunkfast.xsl create mode 100755 DOCBOOK/html/chunktoc.xsl create mode 100755 DOCBOOK/html/component.xsl create mode 100755 DOCBOOK/html/division.xsl create mode 100755 DOCBOOK/html/docbook.css.xml create mode 100755 DOCBOOK/html/docbook.xsl create mode 100755 DOCBOOK/html/ebnf.xsl create mode 100755 DOCBOOK/html/footnote.xsl create mode 100755 DOCBOOK/html/formal.xsl create mode 100755 DOCBOOK/html/glossary.xsl create mode 100755 DOCBOOK/html/graphics.xsl create mode 100755 DOCBOOK/html/highlight.xsl create mode 100755 DOCBOOK/html/html-rtf.xsl create mode 100755 DOCBOOK/html/html.xsl create mode 100755 DOCBOOK/html/htmltbl.xsl create mode 100755 DOCBOOK/html/index.xsl create mode 100755 DOCBOOK/html/info.xsl create mode 100755 DOCBOOK/html/inline.xsl create mode 100755 DOCBOOK/html/keywords.xsl create mode 100755 DOCBOOK/html/lists.xsl create mode 100755 DOCBOOK/html/maketoc.xsl create mode 100755 DOCBOOK/html/manifest.xsl create mode 100755 DOCBOOK/html/math.xsl create mode 100755 DOCBOOK/html/oldchunker.xsl create mode 100755 DOCBOOK/html/onechunk.xsl create mode 100755 DOCBOOK/html/param.xml create mode 100755 DOCBOOK/html/param.xsl create mode 100755 DOCBOOK/html/pi.xml create mode 100755 DOCBOOK/html/pi.xsl create mode 100755 DOCBOOK/html/profile-chunk-code.xsl create mode 100755 DOCBOOK/html/profile-chunk.xsl create mode 100755 DOCBOOK/html/profile-docbook.xsl create mode 100755 DOCBOOK/html/profile-onechunk.xsl create mode 100755 DOCBOOK/html/qandaset.xsl create mode 100755 DOCBOOK/html/refentry.xsl create mode 100755 DOCBOOK/html/sections.xsl create mode 100755 DOCBOOK/html/synop.xsl create mode 100755 DOCBOOK/html/table.xsl create mode 100755 DOCBOOK/html/task.xsl create mode 100755 DOCBOOK/html/titlepage.templates.xml create mode 100755 DOCBOOK/html/titlepage.templates.xsl create mode 100755 DOCBOOK/html/titlepage.xsl create mode 100755 DOCBOOK/html/toc.xsl create mode 100755 DOCBOOK/html/verbatim.xsl create mode 100755 DOCBOOK/html/xref.xsl create mode 100755 DOCBOOK/htmlhelp/htmlhelp-common.xsl create mode 100755 DOCBOOK/htmlhelp/htmlhelp.xsl create mode 100755 DOCBOOK/htmlhelp/profile-htmlhelp-common.xsl create mode 100755 DOCBOOK/htmlhelp/profile-htmlhelp.xsl create mode 100755 DOCBOOK/images/Thumbs.db create mode 100755 DOCBOOK/images/annot-close.png create mode 100755 DOCBOOK/images/annot-open.png create mode 100755 DOCBOOK/images/blank.png create mode 100755 DOCBOOK/images/callouts/1.gif create mode 100755 DOCBOOK/images/callouts/1.png create mode 100755 DOCBOOK/images/callouts/1.svg create mode 100755 DOCBOOK/images/callouts/10.gif create mode 100755 DOCBOOK/images/callouts/10.png create mode 100755 DOCBOOK/images/callouts/10.svg create mode 100755 DOCBOOK/images/callouts/11.gif create mode 100755 DOCBOOK/images/callouts/11.png create mode 100755 DOCBOOK/images/callouts/11.svg create mode 100755 DOCBOOK/images/callouts/12.gif create mode 100755 DOCBOOK/images/callouts/12.png create mode 100755 DOCBOOK/images/callouts/12.svg create mode 100755 DOCBOOK/images/callouts/13.gif create mode 100755 DOCBOOK/images/callouts/13.png create mode 100755 DOCBOOK/images/callouts/13.svg create mode 100755 DOCBOOK/images/callouts/14.gif create mode 100755 DOCBOOK/images/callouts/14.png create mode 100755 DOCBOOK/images/callouts/14.svg create mode 100755 DOCBOOK/images/callouts/15.gif create mode 100755 DOCBOOK/images/callouts/15.png create mode 100755 DOCBOOK/images/callouts/15.svg create mode 100755 DOCBOOK/images/callouts/16.svg create mode 100755 DOCBOOK/images/callouts/17.svg create mode 100755 DOCBOOK/images/callouts/18.svg create mode 100755 DOCBOOK/images/callouts/19.svg create mode 100755 DOCBOOK/images/callouts/2.gif create mode 100755 DOCBOOK/images/callouts/2.png create mode 100755 DOCBOOK/images/callouts/2.svg create mode 100755 DOCBOOK/images/callouts/20.svg create mode 100755 DOCBOOK/images/callouts/21.svg create mode 100755 DOCBOOK/images/callouts/22.svg create mode 100755 DOCBOOK/images/callouts/23.svg create mode 100755 DOCBOOK/images/callouts/24.svg create mode 100755 DOCBOOK/images/callouts/25.svg create mode 100755 DOCBOOK/images/callouts/26.svg create mode 100755 DOCBOOK/images/callouts/27.svg create mode 100755 DOCBOOK/images/callouts/28.svg create mode 100755 DOCBOOK/images/callouts/29.svg create mode 100755 DOCBOOK/images/callouts/3.gif create mode 100755 DOCBOOK/images/callouts/3.png create mode 100755 DOCBOOK/images/callouts/3.svg create mode 100755 DOCBOOK/images/callouts/30.svg create mode 100755 DOCBOOK/images/callouts/4.gif create mode 100755 DOCBOOK/images/callouts/4.png create mode 100755 DOCBOOK/images/callouts/4.svg create mode 100755 DOCBOOK/images/callouts/5.gif create mode 100755 DOCBOOK/images/callouts/5.png create mode 100755 DOCBOOK/images/callouts/5.svg create mode 100755 DOCBOOK/images/callouts/6.gif create mode 100755 DOCBOOK/images/callouts/6.png create mode 100755 DOCBOOK/images/callouts/6.svg create mode 100755 DOCBOOK/images/callouts/7.gif create mode 100755 DOCBOOK/images/callouts/7.png create mode 100755 DOCBOOK/images/callouts/7.svg create mode 100755 DOCBOOK/images/callouts/8.gif create mode 100755 DOCBOOK/images/callouts/8.png create mode 100755 DOCBOOK/images/callouts/8.svg create mode 100755 DOCBOOK/images/callouts/9.gif create mode 100755 DOCBOOK/images/callouts/9.png create mode 100755 DOCBOOK/images/callouts/9.svg create mode 100755 DOCBOOK/images/callouts/Thumbs.db create mode 100755 DOCBOOK/images/caution.gif create mode 100755 DOCBOOK/images/caution.png create mode 100755 DOCBOOK/images/caution.svg create mode 100755 DOCBOOK/images/caution.tif create mode 100755 DOCBOOK/images/colorsvg/caution.svg create mode 100755 DOCBOOK/images/colorsvg/home.svg create mode 100755 DOCBOOK/images/colorsvg/important.svg create mode 100755 DOCBOOK/images/colorsvg/next.svg create mode 100755 DOCBOOK/images/colorsvg/note.svg create mode 100755 DOCBOOK/images/colorsvg/prev.svg create mode 100755 DOCBOOK/images/colorsvg/tip.svg create mode 100755 DOCBOOK/images/colorsvg/up.svg create mode 100755 DOCBOOK/images/colorsvg/warning.svg create mode 100755 DOCBOOK/images/draft.png create mode 100755 DOCBOOK/images/draft.svg create mode 100755 DOCBOOK/images/home.gif create mode 100755 DOCBOOK/images/home.png create mode 100755 DOCBOOK/images/home.svg create mode 100755 DOCBOOK/images/important.gif create mode 100755 DOCBOOK/images/important.png create mode 100755 DOCBOOK/images/important.svg create mode 100755 DOCBOOK/images/important.tif create mode 100755 DOCBOOK/images/next.gif create mode 100755 DOCBOOK/images/next.png create mode 100755 DOCBOOK/images/next.svg create mode 100755 DOCBOOK/images/note.gif create mode 100755 DOCBOOK/images/note.png create mode 100755 DOCBOOK/images/note.svg create mode 100755 DOCBOOK/images/note.tif create mode 100755 DOCBOOK/images/prev.gif create mode 100755 DOCBOOK/images/prev.png create mode 100755 DOCBOOK/images/prev.svg create mode 100755 DOCBOOK/images/tip.gif create mode 100755 DOCBOOK/images/tip.png create mode 100755 DOCBOOK/images/tip.svg create mode 100755 DOCBOOK/images/tip.tif create mode 100755 DOCBOOK/images/toc-blank.png create mode 100755 DOCBOOK/images/toc-minus.png create mode 100755 DOCBOOK/images/toc-plus.png create mode 100755 DOCBOOK/images/up.gif create mode 100755 DOCBOOK/images/up.png create mode 100755 DOCBOOK/images/up.svg create mode 100755 DOCBOOK/images/warning.gif create mode 100755 DOCBOOK/images/warning.png create mode 100755 DOCBOOK/images/warning.svg create mode 100755 DOCBOOK/images/warning.tif create mode 100755 DOCBOOK/install.sh create mode 100755 DOCBOOK/javahelp/javahelp.xsl create mode 100755 DOCBOOK/javahelp/profile-javahelp.xsl create mode 100755 DOCBOOK/lib/lib.xsl create mode 100755 DOCBOOK/log create mode 100755 DOCBOOK/manpages/ChangeLog.20020917 create mode 100755 DOCBOOK/manpages/block.xsl create mode 100755 DOCBOOK/manpages/charmap.groff.xsl create mode 100755 DOCBOOK/manpages/docbook.xsl create mode 100755 DOCBOOK/manpages/endnotes.xsl create mode 100755 DOCBOOK/manpages/html-synop.xsl create mode 100755 DOCBOOK/manpages/info.xsl create mode 100755 DOCBOOK/manpages/inline.xsl create mode 100755 DOCBOOK/manpages/lists.xsl create mode 100755 DOCBOOK/manpages/other.xsl create mode 100755 DOCBOOK/manpages/param.xml create mode 100755 DOCBOOK/manpages/param.xsl create mode 100755 DOCBOOK/manpages/pi.xml create mode 100755 DOCBOOK/manpages/pi.xsl create mode 100755 DOCBOOK/manpages/profile-docbook.xsl create mode 100755 DOCBOOK/manpages/refentry.xsl create mode 100755 DOCBOOK/manpages/synop.xsl create mode 100755 DOCBOOK/manpages/table.xsl create mode 100755 DOCBOOK/manpages/utility.xsl create mode 100755 DOCBOOK/params/abstract.notitle.enabled.xml create mode 100755 DOCBOOK/params/abstract.properties.xml create mode 100755 DOCBOOK/params/abstract.title.properties.xml create mode 100755 DOCBOOK/params/activate.external.olinks.xml create mode 100755 DOCBOOK/params/active.toc.xml create mode 100755 DOCBOOK/params/ade.extensions.xml create mode 100755 DOCBOOK/params/admon.graphics.extension.xml create mode 100755 DOCBOOK/params/admon.graphics.path.xml create mode 100755 DOCBOOK/params/admon.graphics.xml create mode 100755 DOCBOOK/params/admon.style.xml create mode 100755 DOCBOOK/params/admon.textlabel.xml create mode 100755 DOCBOOK/params/admonition.properties.xml create mode 100755 DOCBOOK/params/admonition.title.properties.xml create mode 100755 DOCBOOK/params/alignment.xml create mode 100755 DOCBOOK/params/annotate.toc.xml create mode 100755 DOCBOOK/params/annotation.css.xml create mode 100755 DOCBOOK/params/annotation.graphic.close.xml create mode 100755 DOCBOOK/params/annotation.graphic.open.xml create mode 100755 DOCBOOK/params/annotation.js.xml create mode 100755 DOCBOOK/params/annotation.support.xml create mode 100755 DOCBOOK/params/appendix.autolabel.xml create mode 100755 DOCBOOK/params/arbortext.extensions.xml create mode 100755 DOCBOOK/params/article.appendix.title.properties.xml create mode 100755 DOCBOOK/params/author.othername.in.middle.xml create mode 100755 DOCBOOK/params/autolayout-file.xml create mode 100755 DOCBOOK/params/autotoc.label.in.hyperlink.xml create mode 100755 DOCBOOK/params/autotoc.label.separator.xml create mode 100755 DOCBOOK/params/axf.extensions.xml create mode 100755 DOCBOOK/params/banner.before.navigation.xml create mode 100755 DOCBOOK/params/base.dir.xml create mode 100755 DOCBOOK/params/biblioentry.item.separator.xml create mode 100755 DOCBOOK/params/biblioentry.properties.xml create mode 100755 DOCBOOK/params/bibliography.collection.xml create mode 100755 DOCBOOK/params/bibliography.numbered.xml create mode 100755 DOCBOOK/params/bibliography.style.xml create mode 100755 DOCBOOK/params/blockquote.properties.xml create mode 100755 DOCBOOK/params/blurb.on.titlepage.enabled.xml create mode 100755 DOCBOOK/params/body.attributes.xml create mode 100755 DOCBOOK/params/body.bg.color.xml create mode 100755 DOCBOOK/params/body.end.indent.xml create mode 100755 DOCBOOK/params/body.font.family.xml create mode 100755 DOCBOOK/params/body.font.master.xml create mode 100755 DOCBOOK/params/body.font.size.xml create mode 100755 DOCBOOK/params/body.margin.bottom.xml create mode 100755 DOCBOOK/params/body.margin.inner.xml create mode 100755 DOCBOOK/params/body.margin.outer.xml create mode 100755 DOCBOOK/params/body.margin.top.xml create mode 100755 DOCBOOK/params/body.start.indent.xml create mode 100755 DOCBOOK/params/bookmarks.collapse.xml create mode 100755 DOCBOOK/params/bridgehead.in.toc.xml create mode 100755 DOCBOOK/params/bullet.image.xml create mode 100755 DOCBOOK/params/callout.defaultcolumn.xml create mode 100755 DOCBOOK/params/callout.graphics.extension.xml create mode 100755 DOCBOOK/params/callout.graphics.number.limit.xml create mode 100755 DOCBOOK/params/callout.graphics.path.xml create mode 100755 DOCBOOK/params/callout.graphics.xml create mode 100755 DOCBOOK/params/callout.icon.size.xml create mode 100755 DOCBOOK/params/callout.list.table.xml create mode 100755 DOCBOOK/params/callout.properties.xml create mode 100755 DOCBOOK/params/callout.unicode.font.xml create mode 100755 DOCBOOK/params/callout.unicode.number.limit.xml create mode 100755 DOCBOOK/params/callout.unicode.start.character.xml create mode 100755 DOCBOOK/params/callout.unicode.xml create mode 100755 DOCBOOK/params/calloutlist.properties.xml create mode 100755 DOCBOOK/params/callouts.extension.xml create mode 100755 DOCBOOK/params/chapter.autolabel.xml create mode 100755 DOCBOOK/params/chunk.append.xml create mode 100755 DOCBOOK/params/chunk.first.sections.xml create mode 100755 DOCBOOK/params/chunk.quietly.xml create mode 100755 DOCBOOK/params/chunk.section.depth.xml create mode 100755 DOCBOOK/params/chunk.sections.xml create mode 100755 DOCBOOK/params/chunk.separate.lots.xml create mode 100755 DOCBOOK/params/chunk.toc.xml create mode 100755 DOCBOOK/params/chunk.tocs.and.lots.has.title.xml create mode 100755 DOCBOOK/params/chunk.tocs.and.lots.xml create mode 100755 DOCBOOK/params/chunked.filename.prefix.xml create mode 100755 DOCBOOK/params/chunker.output.cdata-section-elements.xml create mode 100755 DOCBOOK/params/chunker.output.doctype-public.xml create mode 100755 DOCBOOK/params/chunker.output.doctype-system.xml create mode 100755 DOCBOOK/params/chunker.output.encoding.xml create mode 100755 DOCBOOK/params/chunker.output.indent.xml create mode 100755 DOCBOOK/params/chunker.output.media-type.xml create mode 100755 DOCBOOK/params/chunker.output.method.xml create mode 100755 DOCBOOK/params/chunker.output.omit-xml-declaration.xml create mode 100755 DOCBOOK/params/chunker.output.standalone.xml create mode 100755 DOCBOOK/params/citerefentry.link.xml create mode 100755 DOCBOOK/params/collect.xref.targets.xml create mode 100755 DOCBOOK/params/column.count.back.xml create mode 100755 DOCBOOK/params/column.count.body.xml create mode 100755 DOCBOOK/params/column.count.front.xml create mode 100755 DOCBOOK/params/column.count.index.xml create mode 100755 DOCBOOK/params/column.count.lot.xml create mode 100755 DOCBOOK/params/column.count.titlepage.xml create mode 100755 DOCBOOK/params/column.gap.back.xml create mode 100755 DOCBOOK/params/column.gap.body.xml create mode 100755 DOCBOOK/params/column.gap.front.xml create mode 100755 DOCBOOK/params/column.gap.index.xml create mode 100755 DOCBOOK/params/column.gap.lot.xml create mode 100755 DOCBOOK/params/column.gap.titlepage.xml create mode 100755 DOCBOOK/params/compact.list.item.spacing.xml create mode 100755 DOCBOOK/params/component.label.includes.part.label.xml create mode 100755 DOCBOOK/params/component.title.properties.xml create mode 100755 DOCBOOK/params/component.titlepage.properties.xml create mode 100755 DOCBOOK/params/contrib.inline.enabled.xml create mode 100755 DOCBOOK/params/crop.mark.bleed.xml create mode 100755 DOCBOOK/params/crop.mark.offset.xml create mode 100755 DOCBOOK/params/crop.mark.width.xml create mode 100755 DOCBOOK/params/crop.marks.xml create mode 100755 DOCBOOK/params/css.decoration.xml create mode 100755 DOCBOOK/params/css.stylesheet.dir.xml create mode 100755 DOCBOOK/params/css.stylesheet.xml create mode 100755 DOCBOOK/params/current.docid.xml create mode 100755 DOCBOOK/params/currentpage.marker.xml create mode 100755 DOCBOOK/params/custom.css.source.xml create mode 100755 DOCBOOK/params/default.float.class.xml create mode 100755 DOCBOOK/params/default.image.width.xml create mode 100755 DOCBOOK/params/default.table.frame.xml create mode 100755 DOCBOOK/params/default.table.rules.xml create mode 100755 DOCBOOK/params/default.table.width.xml create mode 100755 DOCBOOK/params/default.units.xml create mode 100755 DOCBOOK/params/dingbat.font.family.xml create mode 100755 DOCBOOK/params/disable.collapsible.xml create mode 100755 DOCBOOK/params/disable.incremental.xml create mode 100755 DOCBOOK/params/docbook.css.link.xml create mode 100755 DOCBOOK/params/docbook.css.source.xml create mode 100755 DOCBOOK/params/double.sided.xml create mode 100755 DOCBOOK/params/draft.mode.xml create mode 100755 DOCBOOK/params/draft.watermark.image.xml create mode 100755 DOCBOOK/params/dry-run.xml create mode 100755 DOCBOOK/params/dynamic.toc.xml create mode 100755 DOCBOOK/params/ebnf.assignment.xml create mode 100755 DOCBOOK/params/ebnf.statement.terminator.xml create mode 100755 DOCBOOK/params/ebnf.table.bgcolor.xml create mode 100755 DOCBOOK/params/ebnf.table.border.xml create mode 100755 DOCBOOK/params/eclipse.autolabel.xml create mode 100755 DOCBOOK/params/eclipse.plugin.id.xml create mode 100755 DOCBOOK/params/eclipse.plugin.name.xml create mode 100755 DOCBOOK/params/eclipse.plugin.provider.xml create mode 100755 DOCBOOK/params/editedby.enabled.xml create mode 100755 DOCBOOK/params/email.delimiters.enabled.xml create mode 100755 DOCBOOK/params/email.mailto.enabled.xml create mode 100755 DOCBOOK/params/emphasis.propagates.style.xml create mode 100755 DOCBOOK/params/entry.propagates.style.xml create mode 100755 DOCBOOK/params/epub.autolabel.xml create mode 100755 DOCBOOK/params/equation.number.properties.xml create mode 100755 DOCBOOK/params/equation.properties.xml create mode 100755 DOCBOOK/params/example.properties.xml create mode 100755 DOCBOOK/params/exsl.node.set.available.xml create mode 100755 DOCBOOK/params/feedback.href.xml create mode 100755 DOCBOOK/params/feedback.link.text.xml create mode 100755 DOCBOOK/params/feedback.with.ids.xml create mode 100755 DOCBOOK/params/figure.properties.xml create mode 100755 DOCBOOK/params/filename-prefix.xml create mode 100755 DOCBOOK/params/firstterm.only.link.xml create mode 100755 DOCBOOK/params/foil.footer.properties.xml create mode 100755 DOCBOOK/params/foil.header.properties.xml create mode 100755 DOCBOOK/params/foil.master.properties.xml create mode 100755 DOCBOOK/params/foil.page-sequence.properties.xml create mode 100755 DOCBOOK/params/foil.properties.xml create mode 100755 DOCBOOK/params/foil.region-after.properties.xml create mode 100755 DOCBOOK/params/foil.region-before.properties.xml create mode 100755 DOCBOOK/params/foil.region-body.properties.xml create mode 100755 DOCBOOK/params/foil.subtitle.properties.xml create mode 100755 DOCBOOK/params/foil.title.master.xml create mode 100755 DOCBOOK/params/foil.title.properties.xml create mode 100755 DOCBOOK/params/foil.title.size.xml create mode 100755 DOCBOOK/params/foilgroup.properties.xml create mode 100755 DOCBOOK/params/foilgroup.toc.xml create mode 100755 DOCBOOK/params/footer.column.widths.xml create mode 100755 DOCBOOK/params/footer.content.properties.xml create mode 100755 DOCBOOK/params/footer.hr.xml create mode 100755 DOCBOOK/params/footer.rule.xml create mode 100755 DOCBOOK/params/footer.table.height.xml create mode 100755 DOCBOOK/params/footer.table.properties.xml create mode 100755 DOCBOOK/params/footers.on.blank.pages.xml create mode 100755 DOCBOOK/params/footnote.font.size.xml create mode 100755 DOCBOOK/params/footnote.mark.properties.xml create mode 100755 DOCBOOK/params/footnote.number.format.xml create mode 100755 DOCBOOK/params/footnote.number.symbols.xml create mode 100755 DOCBOOK/params/footnote.properties.xml create mode 100755 DOCBOOK/params/footnote.sep.leader.properties.xml create mode 100755 DOCBOOK/params/fop.extensions.xml create mode 100755 DOCBOOK/params/fop1.extensions.xml create mode 100755 DOCBOOK/params/force.blank.pages.xml create mode 100755 DOCBOOK/params/formal.object.properties.xml create mode 100755 DOCBOOK/params/formal.procedures.xml create mode 100755 DOCBOOK/params/formal.title.placement.xml create mode 100755 DOCBOOK/params/formal.title.properties.xml create mode 100755 DOCBOOK/params/funcsynopsis.decoration.xml create mode 100755 DOCBOOK/params/funcsynopsis.style.xml create mode 100755 DOCBOOK/params/function.parens.xml create mode 100755 DOCBOOK/params/generate.consistent.ids.xml create mode 100755 DOCBOOK/params/generate.copyright.xml create mode 100755 DOCBOOK/params/generate.css.header.xml create mode 100755 DOCBOOK/params/generate.foilgroup.numbered.toc.xml create mode 100755 DOCBOOK/params/generate.foilgroup.toc.xml create mode 100755 DOCBOOK/params/generate.handoutnotes.xml create mode 100755 DOCBOOK/params/generate.id.attributes.xml create mode 100755 DOCBOOK/params/generate.index.xml create mode 100755 DOCBOOK/params/generate.legalnotice.link.xml create mode 100755 DOCBOOK/params/generate.manifest.xml create mode 100755 DOCBOOK/params/generate.meta.abstract.xml create mode 100755 DOCBOOK/params/generate.page.number.xml create mode 100755 DOCBOOK/params/generate.pubdate.xml create mode 100755 DOCBOOK/params/generate.revhistory.link.xml create mode 100755 DOCBOOK/params/generate.section.toc.level.xml create mode 100755 DOCBOOK/params/generate.speakernotes.xml create mode 100755 DOCBOOK/params/generate.titlepage.xml create mode 100755 DOCBOOK/params/generate.toc.xml create mode 100755 DOCBOOK/params/glossary.as.blocks.xml create mode 100755 DOCBOOK/params/glossary.collection.xml create mode 100755 DOCBOOK/params/glossary.sort.xml create mode 100755 DOCBOOK/params/glossdef.block.properties.xml create mode 100755 DOCBOOK/params/glossdef.list.properties.xml create mode 100755 DOCBOOK/params/glossentry.list.item.properties.xml create mode 100755 DOCBOOK/params/glossentry.show.acronym.xml create mode 100755 DOCBOOK/params/glosslist.as.blocks.xml create mode 100755 DOCBOOK/params/glossterm.auto.link.xml create mode 100755 DOCBOOK/params/glossterm.block.properties.xml create mode 100755 DOCBOOK/params/glossterm.list.properties.xml create mode 100755 DOCBOOK/params/glossterm.separation.xml create mode 100755 DOCBOOK/params/glossterm.width.xml create mode 100755 DOCBOOK/params/graphic.default.extension.xml create mode 100755 DOCBOOK/params/graphical.admonition.properties.xml create mode 100755 DOCBOOK/params/graphics.dir.xml create mode 100755 DOCBOOK/params/graphicsize.extension.xml create mode 100755 DOCBOOK/params/graphicsize.use.img.src.path.xml create mode 100755 DOCBOOK/params/handoutnotes.properties.xml create mode 100755 DOCBOOK/params/header.column.widths.xml create mode 100755 DOCBOOK/params/header.content.properties.xml create mode 100755 DOCBOOK/params/header.hr.xml create mode 100755 DOCBOOK/params/header.rule.xml create mode 100755 DOCBOOK/params/header.table.height.xml create mode 100755 DOCBOOK/params/header.table.properties.xml create mode 100755 DOCBOOK/params/headers.on.blank.pages.xml create mode 100755 DOCBOOK/params/hidetoc.image.xml create mode 100755 DOCBOOK/params/highlight.default.language.xml create mode 100755 DOCBOOK/params/highlight.source.xml create mode 100755 DOCBOOK/params/highlight.xslthl.config.xml create mode 100755 DOCBOOK/params/home.image.xml create mode 100755 DOCBOOK/params/html.append.xml create mode 100755 DOCBOOK/params/html.base.xml create mode 100755 DOCBOOK/params/html.cellpadding.xml create mode 100755 DOCBOOK/params/html.cellspacing.xml create mode 100755 DOCBOOK/params/html.cleanup.xml create mode 100755 DOCBOOK/params/html.ext.xml create mode 100755 DOCBOOK/params/html.extra.head.links.xml create mode 100755 DOCBOOK/params/html.head.legalnotice.link.multiple.xml create mode 100755 DOCBOOK/params/html.head.legalnotice.link.types.xml create mode 100755 DOCBOOK/params/html.longdesc.link.xml create mode 100755 DOCBOOK/params/html.longdesc.xml create mode 100755 DOCBOOK/params/html.script.type.xml create mode 100755 DOCBOOK/params/html.script.xml create mode 100755 DOCBOOK/params/html.stylesheet.type.xml create mode 100755 DOCBOOK/params/html.stylesheet.xml create mode 100755 DOCBOOK/params/htmlhelp.alias.file.xml create mode 100755 DOCBOOK/params/htmlhelp.autolabel.xml create mode 100755 DOCBOOK/params/htmlhelp.button.back.xml create mode 100755 DOCBOOK/params/htmlhelp.button.forward.xml create mode 100755 DOCBOOK/params/htmlhelp.button.hideshow.xml create mode 100755 DOCBOOK/params/htmlhelp.button.home.url.xml create mode 100755 DOCBOOK/params/htmlhelp.button.home.xml create mode 100755 DOCBOOK/params/htmlhelp.button.jump1.title.xml create mode 100755 DOCBOOK/params/htmlhelp.button.jump1.url.xml create mode 100755 DOCBOOK/params/htmlhelp.button.jump1.xml create mode 100755 DOCBOOK/params/htmlhelp.button.jump2.title.xml create mode 100755 DOCBOOK/params/htmlhelp.button.jump2.url.xml create mode 100755 DOCBOOK/params/htmlhelp.button.jump2.xml create mode 100755 DOCBOOK/params/htmlhelp.button.locate.xml create mode 100755 DOCBOOK/params/htmlhelp.button.next.xml create mode 100755 DOCBOOK/params/htmlhelp.button.options.xml create mode 100755 DOCBOOK/params/htmlhelp.button.prev.xml create mode 100755 DOCBOOK/params/htmlhelp.button.print.xml create mode 100755 DOCBOOK/params/htmlhelp.button.refresh.xml create mode 100755 DOCBOOK/params/htmlhelp.button.stop.xml create mode 100755 DOCBOOK/params/htmlhelp.button.zoom.xml create mode 100755 DOCBOOK/params/htmlhelp.chm.xml create mode 100755 DOCBOOK/params/htmlhelp.default.topic.xml create mode 100755 DOCBOOK/params/htmlhelp.display.progress.xml create mode 100755 DOCBOOK/params/htmlhelp.encoding.xml create mode 100755 DOCBOOK/params/htmlhelp.enhanced.decompilation.xml create mode 100755 DOCBOOK/params/htmlhelp.enumerate.images.xml create mode 100755 DOCBOOK/params/htmlhelp.force.map.and.alias.xml create mode 100755 DOCBOOK/params/htmlhelp.hhc.binary.xml create mode 100755 DOCBOOK/params/htmlhelp.hhc.folders.instead.books.xml create mode 100755 DOCBOOK/params/htmlhelp.hhc.section.depth.xml create mode 100755 DOCBOOK/params/htmlhelp.hhc.show.root.xml create mode 100755 DOCBOOK/params/htmlhelp.hhc.width.xml create mode 100755 DOCBOOK/params/htmlhelp.hhc.xml create mode 100755 DOCBOOK/params/htmlhelp.hhk.xml create mode 100755 DOCBOOK/params/htmlhelp.hhp.tail.xml create mode 100755 DOCBOOK/params/htmlhelp.hhp.window.xml create mode 100755 DOCBOOK/params/htmlhelp.hhp.windows.xml create mode 100755 DOCBOOK/params/htmlhelp.hhp.xml create mode 100755 DOCBOOK/params/htmlhelp.map.file.xml create mode 100755 DOCBOOK/params/htmlhelp.only.xml create mode 100755 DOCBOOK/params/htmlhelp.remember.window.position.xml create mode 100755 DOCBOOK/params/htmlhelp.show.advanced.search.xml create mode 100755 DOCBOOK/params/htmlhelp.show.favorities.xml create mode 100755 DOCBOOK/params/htmlhelp.show.menu.xml create mode 100755 DOCBOOK/params/htmlhelp.show.toolbar.text.xml create mode 100755 DOCBOOK/params/htmlhelp.title.xml create mode 100755 DOCBOOK/params/htmlhelp.use.hhk.xml create mode 100755 DOCBOOK/params/htmlhelp.window.geometry.xml create mode 100755 DOCBOOK/params/hyphenate.verbatim.characters.xml create mode 100755 DOCBOOK/params/hyphenate.verbatim.xml create mode 100755 DOCBOOK/params/hyphenate.xml create mode 100755 DOCBOOK/params/id.warnings.xml create mode 100755 DOCBOOK/params/ignore.image.scaling.xml create mode 100755 DOCBOOK/params/img.src.path.xml create mode 100755 DOCBOOK/params/index.div.title.properties.xml create mode 100755 DOCBOOK/params/index.entry.properties.xml create mode 100755 DOCBOOK/params/index.links.to.section.xml create mode 100755 DOCBOOK/params/index.method.xml create mode 100755 DOCBOOK/params/index.number.separator.xml create mode 100755 DOCBOOK/params/index.on.role.xml create mode 100755 DOCBOOK/params/index.on.type.xml create mode 100755 DOCBOOK/params/index.page.number.properties.xml create mode 100755 DOCBOOK/params/index.prefer.titleabbrev.xml create mode 100755 DOCBOOK/params/index.preferred.page.properties.xml create mode 100755 DOCBOOK/params/index.range.separator.xml create mode 100755 DOCBOOK/params/index.term.separator.xml create mode 100755 DOCBOOK/params/informal.object.properties.xml create mode 100755 DOCBOOK/params/informalequation.properties.xml create mode 100755 DOCBOOK/params/informalexample.properties.xml create mode 100755 DOCBOOK/params/informalfigure.properties.xml create mode 100755 DOCBOOK/params/informaltable.properties.xml create mode 100755 DOCBOOK/params/inherit.keywords.xml create mode 100755 DOCBOOK/params/inner.region.content.properties.xml create mode 100755 DOCBOOK/params/insert.link.page.number.xml create mode 100755 DOCBOOK/params/insert.olink.page.number.xml create mode 100755 DOCBOOK/params/insert.olink.pdf.frag.xml create mode 100755 DOCBOOK/params/insert.xref.page.number.xml create mode 100755 DOCBOOK/params/itemizedlist.label.properties.xml create mode 100755 DOCBOOK/params/itemizedlist.label.width.xml create mode 100755 DOCBOOK/params/itemizedlist.properties.xml create mode 100755 DOCBOOK/params/javahelp.encoding.xml create mode 100755 DOCBOOK/params/keep.relative.image.uris.xml create mode 100755 DOCBOOK/params/keyboard.nav.xml create mode 100755 DOCBOOK/params/l10n.gentext.default.language.xml create mode 100755 DOCBOOK/params/l10n.gentext.language.xml create mode 100755 DOCBOOK/params/l10n.gentext.use.xref.language.xml create mode 100755 DOCBOOK/params/l10n.lang.value.rfc.compliant.xml create mode 100755 DOCBOOK/params/label.from.part.xml create mode 100755 DOCBOOK/params/line-height.xml create mode 100755 DOCBOOK/params/linenumbering.everyNth.xml create mode 100755 DOCBOOK/params/linenumbering.extension.xml create mode 100755 DOCBOOK/params/linenumbering.separator.xml create mode 100755 DOCBOOK/params/linenumbering.width.xml create mode 100755 DOCBOOK/params/link.mailto.url.xml create mode 100755 DOCBOOK/params/list.block.properties.xml create mode 100755 DOCBOOK/params/list.block.spacing.xml create mode 100755 DOCBOOK/params/list.item.spacing.xml create mode 100755 DOCBOOK/params/make.clean.html.xml create mode 100755 DOCBOOK/params/make.graphic.viewport.xml create mode 100755 DOCBOOK/params/make.index.markup.xml create mode 100755 DOCBOOK/params/make.single.year.ranges.xml create mode 100755 DOCBOOK/params/make.valid.html.xml create mode 100755 DOCBOOK/params/make.year.ranges.xml create mode 100755 DOCBOOK/params/man.authors.section.enabled.xml create mode 100755 DOCBOOK/params/man.base.url.for.relative.links.xml create mode 100755 DOCBOOK/params/man.break.after.slash.xml create mode 100755 DOCBOOK/params/man.charmap.enabled.xml create mode 100755 DOCBOOK/params/man.charmap.subset.profile.english.xml create mode 100755 DOCBOOK/params/man.charmap.subset.profile.xml create mode 100755 DOCBOOK/params/man.charmap.uri.xml create mode 100755 DOCBOOK/params/man.charmap.use.subset.xml create mode 100755 DOCBOOK/params/man.copyright.section.enabled.xml create mode 100755 DOCBOOK/params/man.endnotes.are.numbered.xml create mode 100755 DOCBOOK/params/man.endnotes.list.enabled.xml create mode 100755 DOCBOOK/params/man.endnotes.list.heading.xml create mode 100755 DOCBOOK/params/man.font.funcprototype.xml create mode 100755 DOCBOOK/params/man.font.funcsynopsisinfo.xml create mode 100755 DOCBOOK/params/man.font.links.xml create mode 100755 DOCBOOK/params/man.font.table.headings.xml create mode 100755 DOCBOOK/params/man.font.table.title.xml create mode 100755 DOCBOOK/params/man.funcsynopsis.style.xml create mode 100755 DOCBOOK/params/man.hyphenate.computer.inlines.xml create mode 100755 DOCBOOK/params/man.hyphenate.filenames.xml create mode 100755 DOCBOOK/params/man.hyphenate.urls.xml create mode 100755 DOCBOOK/params/man.hyphenate.xml create mode 100755 DOCBOOK/params/man.indent.blurbs.xml create mode 100755 DOCBOOK/params/man.indent.lists.xml create mode 100755 DOCBOOK/params/man.indent.refsect.xml create mode 100755 DOCBOOK/params/man.indent.verbatims.xml create mode 100755 DOCBOOK/params/man.indent.width.xml create mode 100755 DOCBOOK/params/man.justify.xml create mode 100755 DOCBOOK/params/man.output.base.dir.xml create mode 100755 DOCBOOK/params/man.output.better.ps.enabled.xml create mode 100755 DOCBOOK/params/man.output.encoding.xml create mode 100755 DOCBOOK/params/man.output.in.separate.dir.xml create mode 100755 DOCBOOK/params/man.output.lang.in.name.enabled.xml create mode 100755 DOCBOOK/params/man.output.manifest.enabled.xml create mode 100755 DOCBOOK/params/man.output.manifest.filename.xml create mode 100755 DOCBOOK/params/man.output.quietly.xml create mode 100755 DOCBOOK/params/man.output.subdirs.enabled.xml create mode 100755 DOCBOOK/params/man.segtitle.suppress.xml create mode 100755 DOCBOOK/params/man.string.subst.map.local.post.xml create mode 100755 DOCBOOK/params/man.string.subst.map.local.pre.xml create mode 100755 DOCBOOK/params/man.string.subst.map.xml create mode 100755 DOCBOOK/params/man.subheading.divider.enabled.xml create mode 100755 DOCBOOK/params/man.subheading.divider.xml create mode 100755 DOCBOOK/params/man.table.footnotes.divider.xml create mode 100755 DOCBOOK/params/man.th.extra1.suppress.xml create mode 100755 DOCBOOK/params/man.th.extra2.max.length.xml create mode 100755 DOCBOOK/params/man.th.extra2.suppress.xml create mode 100755 DOCBOOK/params/man.th.extra3.max.length.xml create mode 100755 DOCBOOK/params/man.th.extra3.suppress.xml create mode 100755 DOCBOOK/params/man.th.title.max.length.xml create mode 100755 DOCBOOK/params/manifest.in.base.dir.xml create mode 100755 DOCBOOK/params/manifest.xml create mode 100755 DOCBOOK/params/manual.toc.xml create mode 100755 DOCBOOK/params/margin.note.float.type.xml create mode 100755 DOCBOOK/params/margin.note.properties.xml create mode 100755 DOCBOOK/params/margin.note.title.properties.xml create mode 100755 DOCBOOK/params/margin.note.width.xml create mode 100755 DOCBOOK/params/marker.section.level.xml create mode 100755 DOCBOOK/params/menuchoice.menu.separator.xml create mode 100755 DOCBOOK/params/menuchoice.separator.xml create mode 100755 DOCBOOK/params/minus.image.xml create mode 100755 DOCBOOK/params/mml.embedding.mode.fo.xml create mode 100755 DOCBOOK/params/mml.embedding.mode.xml create mode 100755 DOCBOOK/params/monospace.font.family.xml create mode 100755 DOCBOOK/params/monospace.properties.xml create mode 100755 DOCBOOK/params/monospace.verbatim.font.width.xml create mode 100755 DOCBOOK/params/monospace.verbatim.properties.xml create mode 100755 DOCBOOK/params/multiframe.bottom.bgcolor.xml create mode 100755 DOCBOOK/params/multiframe.navigation.height.xml create mode 100755 DOCBOOK/params/multiframe.top.bgcolor.xml create mode 100755 DOCBOOK/params/multiframe.xml create mode 100755 DOCBOOK/params/nav.separator.xml create mode 100755 DOCBOOK/params/nav.table.summary.xml create mode 100755 DOCBOOK/params/navbgcolor.xml create mode 100755 DOCBOOK/params/navbodywidth.xml create mode 100755 DOCBOOK/params/navig.graphics.extension.xml create mode 100755 DOCBOOK/params/navig.graphics.path.xml create mode 100755 DOCBOOK/params/navig.graphics.xml create mode 100755 DOCBOOK/params/navig.showtitles.xml create mode 100755 DOCBOOK/params/navtocwidth.xml create mode 100755 DOCBOOK/params/next.image.xml create mode 100755 DOCBOOK/params/no.home.image.xml create mode 100755 DOCBOOK/params/no.next.image.xml create mode 100755 DOCBOOK/params/no.prev.image.xml create mode 100755 DOCBOOK/params/no.toc.image.xml create mode 100755 DOCBOOK/params/no.up.image.xml create mode 100755 DOCBOOK/params/nominal.image.depth.xml create mode 100755 DOCBOOK/params/nominal.image.width.xml create mode 100755 DOCBOOK/params/nominal.table.width.xml create mode 100755 DOCBOOK/params/nongraphical.admonition.properties.xml create mode 100755 DOCBOOK/params/normal.para.spacing.xml create mode 100755 DOCBOOK/params/olink.base.uri.xml create mode 100755 DOCBOOK/params/olink.debug.xml create mode 100755 DOCBOOK/params/olink.doctitle.xml create mode 100755 DOCBOOK/params/olink.fragid.xml create mode 100755 DOCBOOK/params/olink.lang.fallback.sequence.xml create mode 100755 DOCBOOK/params/olink.outline.ext.xml create mode 100755 DOCBOOK/params/olink.properties.xml create mode 100755 DOCBOOK/params/olink.pubid.xml create mode 100755 DOCBOOK/params/olink.resolver.xml create mode 100755 DOCBOOK/params/olink.sysid.xml create mode 100755 DOCBOOK/params/orderedlist.label.properties.xml create mode 100755 DOCBOOK/params/orderedlist.label.width.xml create mode 100755 DOCBOOK/params/orderedlist.properties.xml create mode 100755 DOCBOOK/params/othercredit.like.author.enabled.xml create mode 100755 DOCBOOK/params/outer.region.content.properties.xml create mode 100755 DOCBOOK/params/output-root.xml create mode 100755 DOCBOOK/params/output.indent.xml create mode 100755 DOCBOOK/params/overlay.js.xml create mode 100755 DOCBOOK/params/overlay.logo.xml create mode 100755 DOCBOOK/params/overlay.xml create mode 100755 DOCBOOK/params/page.height.portrait.xml create mode 100755 DOCBOOK/params/page.height.xml create mode 100755 DOCBOOK/params/page.margin.bottom.xml create mode 100755 DOCBOOK/params/page.margin.inner.xml create mode 100755 DOCBOOK/params/page.margin.outer.xml create mode 100755 DOCBOOK/params/page.margin.top.xml create mode 100755 DOCBOOK/params/page.orientation.xml create mode 100755 DOCBOOK/params/page.width.portrait.xml create mode 100755 DOCBOOK/params/page.width.xml create mode 100755 DOCBOOK/params/pages.template.xml create mode 100755 DOCBOOK/params/paper.type.xml create mode 100755 DOCBOOK/params/para.propagates.style.xml create mode 100755 DOCBOOK/params/para.properties.xml create mode 100755 DOCBOOK/params/part.autolabel.xml create mode 100755 DOCBOOK/params/passivetex.extensions.xml create mode 100755 DOCBOOK/params/pgwide.properties.xml create mode 100755 DOCBOOK/params/phrase.propagates.style.xml create mode 100755 DOCBOOK/params/pixels.per.inch.xml create mode 100755 DOCBOOK/params/plus.image.xml create mode 100755 DOCBOOK/params/points.per.em.xml create mode 100755 DOCBOOK/params/preface.autolabel.xml create mode 100755 DOCBOOK/params/prefer.internal.olink.xml create mode 100755 DOCBOOK/params/preferred.mediaobject.role.xml create mode 100755 DOCBOOK/params/prev.image.xml create mode 100755 DOCBOOK/params/procedure.properties.xml create mode 100755 DOCBOOK/params/process.empty.source.toc.xml create mode 100755 DOCBOOK/params/process.source.toc.xml create mode 100755 DOCBOOK/params/profile.arch.xml create mode 100755 DOCBOOK/params/profile.attribute.xml create mode 100755 DOCBOOK/params/profile.audience.xml create mode 100755 DOCBOOK/params/profile.condition.xml create mode 100755 DOCBOOK/params/profile.conformance.xml create mode 100755 DOCBOOK/params/profile.lang.xml create mode 100755 DOCBOOK/params/profile.os.xml create mode 100755 DOCBOOK/params/profile.revision.xml create mode 100755 DOCBOOK/params/profile.revisionflag.xml create mode 100755 DOCBOOK/params/profile.role.xml create mode 100755 DOCBOOK/params/profile.security.xml create mode 100755 DOCBOOK/params/profile.separator.xml create mode 100755 DOCBOOK/params/profile.status.xml create mode 100755 DOCBOOK/params/profile.userlevel.xml create mode 100755 DOCBOOK/params/profile.value.xml create mode 100755 DOCBOOK/params/profile.vendor.xml create mode 100755 DOCBOOK/params/profile.wordsize.xml create mode 100755 DOCBOOK/params/punct.honorific.xml create mode 100755 DOCBOOK/params/qanda.defaultlabel.xml create mode 100755 DOCBOOK/params/qanda.in.toc.xml create mode 100755 DOCBOOK/params/qanda.inherit.numeration.xml create mode 100755 DOCBOOK/params/qanda.nested.in.toc.xml create mode 100755 DOCBOOK/params/qanda.title.level1.properties.xml create mode 100755 DOCBOOK/params/qanda.title.level2.properties.xml create mode 100755 DOCBOOK/params/qanda.title.level3.properties.xml create mode 100755 DOCBOOK/params/qanda.title.level4.properties.xml create mode 100755 DOCBOOK/params/qanda.title.level5.properties.xml create mode 100755 DOCBOOK/params/qanda.title.level6.properties.xml create mode 100755 DOCBOOK/params/qanda.title.properties.xml create mode 100755 DOCBOOK/params/qandadiv.autolabel.xml create mode 100755 DOCBOOK/params/rebuild-all.xml create mode 100755 DOCBOOK/params/refclass.suppress.xml create mode 100755 DOCBOOK/params/refentry.date.profile.enabled.xml create mode 100755 DOCBOOK/params/refentry.date.profile.xml create mode 100755 DOCBOOK/params/refentry.generate.name.xml create mode 100755 DOCBOOK/params/refentry.generate.title.xml create mode 100755 DOCBOOK/params/refentry.manual.fallback.profile.xml create mode 100755 DOCBOOK/params/refentry.manual.profile.enabled.xml create mode 100755 DOCBOOK/params/refentry.manual.profile.xml create mode 100755 DOCBOOK/params/refentry.meta.get.quietly.xml create mode 100755 DOCBOOK/params/refentry.pagebreak.xml create mode 100755 DOCBOOK/params/refentry.separator.xml create mode 100755 DOCBOOK/params/refentry.source.fallback.profile.xml create mode 100755 DOCBOOK/params/refentry.source.name.profile.enabled.xml create mode 100755 DOCBOOK/params/refentry.source.name.profile.xml create mode 100755 DOCBOOK/params/refentry.source.name.suppress.xml create mode 100755 DOCBOOK/params/refentry.title.properties.xml create mode 100755 DOCBOOK/params/refentry.version.profile.enabled.xml create mode 100755 DOCBOOK/params/refentry.version.profile.xml create mode 100755 DOCBOOK/params/refentry.version.suppress.xml create mode 100755 DOCBOOK/params/refentry.xref.manvolnum.xml create mode 100755 DOCBOOK/params/reference.autolabel.xml create mode 100755 DOCBOOK/params/region.after.extent.xml create mode 100755 DOCBOOK/params/region.before.extent.xml create mode 100755 DOCBOOK/params/region.inner.extent.xml create mode 100755 DOCBOOK/params/region.inner.properties.xml create mode 100755 DOCBOOK/params/region.outer.extent.xml create mode 100755 DOCBOOK/params/region.outer.properties.xml create mode 100755 DOCBOOK/params/revhistory.table.cell.properties.xml create mode 100755 DOCBOOK/params/revhistory.table.properties.xml create mode 100755 DOCBOOK/params/revhistory.title.properties.xml create mode 100755 DOCBOOK/params/root.filename.xml create mode 100755 DOCBOOK/params/root.properties.xml create mode 100755 DOCBOOK/params/rootid.xml create mode 100755 DOCBOOK/params/runinhead.default.title.end.punct.xml create mode 100755 DOCBOOK/params/runinhead.title.end.punct.xml create mode 100755 DOCBOOK/params/running.foot.properties.xml create mode 100755 DOCBOOK/params/s5.controls.xml create mode 100755 DOCBOOK/params/s5.defaultview.xml create mode 100755 DOCBOOK/params/s5.opera.css.xml create mode 100755 DOCBOOK/params/s5.outline.css.xml create mode 100755 DOCBOOK/params/s5.path.prefix.xml create mode 100755 DOCBOOK/params/s5.print.css.xml create mode 100755 DOCBOOK/params/s5.slides.css.xml create mode 100755 DOCBOOK/params/s5.slides.js.xml create mode 100755 DOCBOOK/params/sans.font.family.xml create mode 100755 DOCBOOK/params/saxon.callouts.xml create mode 100755 DOCBOOK/params/saxon.character.representation.xml create mode 100755 DOCBOOK/params/saxon.linenumbering.xml create mode 100755 DOCBOOK/params/saxon.tablecolumns.xml create mode 100755 DOCBOOK/params/script.dir.xml create mode 100755 DOCBOOK/params/section.autolabel.max.depth.xml create mode 100755 DOCBOOK/params/section.autolabel.xml create mode 100755 DOCBOOK/params/section.container.element.xml create mode 100755 DOCBOOK/params/section.label.includes.component.label.xml create mode 100755 DOCBOOK/params/section.level1.properties.xml create mode 100755 DOCBOOK/params/section.level2.properties.xml create mode 100755 DOCBOOK/params/section.level3.properties.xml create mode 100755 DOCBOOK/params/section.level4.properties.xml create mode 100755 DOCBOOK/params/section.level5.properties.xml create mode 100755 DOCBOOK/params/section.level6.properties.xml create mode 100755 DOCBOOK/params/section.properties.xml create mode 100755 DOCBOOK/params/section.title.level1.properties.xml create mode 100755 DOCBOOK/params/section.title.level2.properties.xml create mode 100755 DOCBOOK/params/section.title.level3.properties.xml create mode 100755 DOCBOOK/params/section.title.level4.properties.xml create mode 100755 DOCBOOK/params/section.title.level5.properties.xml create mode 100755 DOCBOOK/params/section.title.level6.properties.xml create mode 100755 DOCBOOK/params/section.title.properties.xml create mode 100755 DOCBOOK/params/segmentedlist.as.table.xml create mode 100755 DOCBOOK/params/sequential.links.xml create mode 100755 DOCBOOK/params/shade.verbatim.style.xml create mode 100755 DOCBOOK/params/shade.verbatim.xml create mode 100755 DOCBOOK/params/show.comments.xml create mode 100755 DOCBOOK/params/show.foil.number.xml create mode 100755 DOCBOOK/params/show.revisionflag.xml create mode 100755 DOCBOOK/params/showtoc.image.xml create mode 100755 DOCBOOK/params/side.float.properties.xml create mode 100755 DOCBOOK/params/side.region.precedence.xml create mode 100755 DOCBOOK/params/sidebar.float.type.xml create mode 100755 DOCBOOK/params/sidebar.float.width.xml create mode 100755 DOCBOOK/params/sidebar.properties.xml create mode 100755 DOCBOOK/params/sidebar.title.properties.xml create mode 100755 DOCBOOK/params/simplesect.in.toc.xml create mode 100755 DOCBOOK/params/slide.font.family.xml create mode 100755 DOCBOOK/params/slide.title.font.family.xml create mode 100755 DOCBOOK/params/slides.js.xml create mode 100755 DOCBOOK/params/slides.properties.xml create mode 100755 DOCBOOK/params/slides.titlepage.author.properties.xml create mode 100755 DOCBOOK/params/slides.titlepage.authorgroup.properties.xml create mode 100755 DOCBOOK/params/slides.titlepage.corpauthor.properties.xml create mode 100755 DOCBOOK/params/slides.titlepage.master.properties.xml create mode 100755 DOCBOOK/params/slides.titlepage.pubdate.properties.xml create mode 100755 DOCBOOK/params/slides.titlepage.region-body.properties.xml create mode 100755 DOCBOOK/params/slides.titlepage.subtitle.properties.xml create mode 100755 DOCBOOK/params/slides.titlepage.title.properties.xml create mode 100755 DOCBOOK/params/slidy.duration.xml create mode 100755 DOCBOOK/params/slidy.path.prefix.xml create mode 100755 DOCBOOK/params/slidy.slidy.css.xml create mode 100755 DOCBOOK/params/slidy.slidy.js.xml create mode 100755 DOCBOOK/params/slidy.user.css.xml create mode 100755 DOCBOOK/params/spacing.paras.xml create mode 100755 DOCBOOK/params/speakernote.properties.xml create mode 100755 DOCBOOK/params/speakernotes.properties.xml create mode 100755 DOCBOOK/params/subscript.properties.xml create mode 100755 DOCBOOK/params/superscript.properties.xml create mode 100755 DOCBOOK/params/suppress.footer.navigation.xml create mode 100755 DOCBOOK/params/suppress.header.navigation.xml create mode 100755 DOCBOOK/params/suppress.homepage.title.xml create mode 100755 DOCBOOK/params/suppress.navigation.xml create mode 100755 DOCBOOK/params/svg.embedding.mode.fo.xml create mode 100755 DOCBOOK/params/svg.embedding.mode.xml create mode 100755 DOCBOOK/params/symbol.font.family.xml create mode 100755 DOCBOOK/params/table.borders.with.css.xml create mode 100755 DOCBOOK/params/table.caption.properties.xml create mode 100755 DOCBOOK/params/table.cell.border.color.xml create mode 100755 DOCBOOK/params/table.cell.border.style.xml create mode 100755 DOCBOOK/params/table.cell.border.thickness.xml create mode 100755 DOCBOOK/params/table.cell.padding.xml create mode 100755 DOCBOOK/params/table.entry.padding.xml create mode 100755 DOCBOOK/params/table.footnote.number.format.xml create mode 100755 DOCBOOK/params/table.footnote.number.symbols.xml create mode 100755 DOCBOOK/params/table.footnote.properties.xml create mode 100755 DOCBOOK/params/table.frame.border.color.xml create mode 100755 DOCBOOK/params/table.frame.border.style.xml create mode 100755 DOCBOOK/params/table.frame.border.thickness.xml create mode 100755 DOCBOOK/params/table.properties.xml create mode 100755 DOCBOOK/params/table.spacer.image.xml create mode 100755 DOCBOOK/params/table.table.properties.xml create mode 100755 DOCBOOK/params/tablecolumns.extension.xml create mode 100755 DOCBOOK/params/target.database.document.xml create mode 100755 DOCBOOK/params/targets.filename.xml create mode 100755 DOCBOOK/params/task.properties.xml create mode 100755 DOCBOOK/params/template.xml create mode 100755 DOCBOOK/params/tex.math.delims.xml create mode 100755 DOCBOOK/params/tex.math.file.xml create mode 100755 DOCBOOK/params/tex.math.in.alt.xml create mode 100755 DOCBOOK/params/text.home.xml create mode 100755 DOCBOOK/params/text.next.xml create mode 100755 DOCBOOK/params/text.prev.xml create mode 100755 DOCBOOK/params/text.toc.xml create mode 100755 DOCBOOK/params/text.up.xml create mode 100755 DOCBOOK/params/textbgcolor.xml create mode 100755 DOCBOOK/params/textdata.default.encoding.xml create mode 100755 DOCBOOK/params/textinsert.extension.xml create mode 100755 DOCBOOK/params/title.font.family.xml create mode 100755 DOCBOOK/params/title.margin.left.xml create mode 100755 DOCBOOK/params/titlefoil.html.xml create mode 100755 DOCBOOK/params/toc.bg.color.xml create mode 100755 DOCBOOK/params/toc.blank.graphic.xml create mode 100755 DOCBOOK/params/toc.blank.image.xml create mode 100755 DOCBOOK/params/toc.blank.text.xml create mode 100755 DOCBOOK/params/toc.hide.show.xml create mode 100755 DOCBOOK/params/toc.html.xml create mode 100755 DOCBOOK/params/toc.image.xml create mode 100755 DOCBOOK/params/toc.indent.width.xml create mode 100755 DOCBOOK/params/toc.line.properties.xml create mode 100755 DOCBOOK/params/toc.list.type.xml create mode 100755 DOCBOOK/params/toc.margin.properties.xml create mode 100755 DOCBOOK/params/toc.max.depth.xml create mode 100755 DOCBOOK/params/toc.pointer.graphic.xml create mode 100755 DOCBOOK/params/toc.pointer.image.xml create mode 100755 DOCBOOK/params/toc.pointer.text.xml create mode 100755 DOCBOOK/params/toc.row.height.xml create mode 100755 DOCBOOK/params/toc.section.depth.xml create mode 100755 DOCBOOK/params/toc.spacer.graphic.xml create mode 100755 DOCBOOK/params/toc.spacer.image.xml create mode 100755 DOCBOOK/params/toc.spacer.text.xml create mode 100755 DOCBOOK/params/toc.width.xml create mode 100755 DOCBOOK/params/ua.js.xml create mode 100755 DOCBOOK/params/ulink.footnotes.xml create mode 100755 DOCBOOK/params/ulink.hyphenate.chars.xml create mode 100755 DOCBOOK/params/ulink.hyphenate.xml create mode 100755 DOCBOOK/params/ulink.show.xml create mode 100755 DOCBOOK/params/ulink.target.xml create mode 100755 DOCBOOK/params/up.image.xml create mode 100755 DOCBOOK/params/use.embed.for.svg.xml create mode 100755 DOCBOOK/params/use.extensions.xml create mode 100755 DOCBOOK/params/use.id.as.filename.xml create mode 100755 DOCBOOK/params/use.id.function.xml create mode 100755 DOCBOOK/params/use.local.olink.style.xml create mode 100755 DOCBOOK/params/use.role.as.xrefstyle.xml create mode 100755 DOCBOOK/params/use.role.for.mediaobject.xml create mode 100755 DOCBOOK/params/use.svg.xml create mode 100755 DOCBOOK/params/user.css.xml create mode 100755 DOCBOOK/params/variablelist.as.blocks.xml create mode 100755 DOCBOOK/params/variablelist.as.table.xml create mode 100755 DOCBOOK/params/variablelist.max.termlength.xml create mode 100755 DOCBOOK/params/variablelist.term.break.after.xml create mode 100755 DOCBOOK/params/variablelist.term.properties.xml create mode 100755 DOCBOOK/params/variablelist.term.separator.xml create mode 100755 DOCBOOK/params/verbatim.properties.xml create mode 100755 DOCBOOK/params/webhelp.autolabel.xml create mode 100755 DOCBOOK/params/webhelp.base.dir.xml create mode 100755 DOCBOOK/params/webhelp.common.dir.xml create mode 100755 DOCBOOK/params/webhelp.default.topic.xml create mode 100755 DOCBOOK/params/webhelp.include.search.tab.xml create mode 100755 DOCBOOK/params/webhelp.indexer.language.xml create mode 100755 DOCBOOK/params/webhelp.start.filename.xml create mode 100755 DOCBOOK/params/webhelp.tree.cookie.id.xml create mode 100755 DOCBOOK/params/wordml.template.xml create mode 100755 DOCBOOK/params/wrap.slidecontent.xml create mode 100755 DOCBOOK/params/writing.mode.xml create mode 100755 DOCBOOK/params/xbCollapsibleLists.js.xml create mode 100755 DOCBOOK/params/xbDOM.js.xml create mode 100755 DOCBOOK/params/xbLibrary.js.xml create mode 100755 DOCBOOK/params/xbStyle.js.xml create mode 100755 DOCBOOK/params/xep.extensions.xml create mode 100755 DOCBOOK/params/xep.index.item.properties.xml create mode 100755 DOCBOOK/params/xref.label-page.separator.xml create mode 100755 DOCBOOK/params/xref.label-title.separator.xml create mode 100755 DOCBOOK/params/xref.properties.xml create mode 100755 DOCBOOK/params/xref.title-page.separator.xml create mode 100755 DOCBOOK/params/xref.with.number.and.title.xml create mode 100755 DOCBOOK/profiling/profile-mode.xsl create mode 100755 DOCBOOK/profiling/profile.xsl create mode 100755 DOCBOOK/profiling/strip-attributes.xsl create mode 100755 DOCBOOK/profiling/xsl2profile.xsl create mode 100755 DOCBOOK/roundtrip/blocks-spec.xml create mode 100755 DOCBOOK/roundtrip/blocks2dbk.dtd create mode 100755 DOCBOOK/roundtrip/blocks2dbk.xsl create mode 100755 DOCBOOK/roundtrip/dbk2ooo.xsl create mode 100755 DOCBOOK/roundtrip/dbk2pages.xsl create mode 100755 DOCBOOK/roundtrip/dbk2wordml.xsl create mode 100755 DOCBOOK/roundtrip/dbk2wp.xsl create mode 100755 DOCBOOK/roundtrip/normalise-common.xsl create mode 100755 DOCBOOK/roundtrip/normalise2sections.xsl create mode 100755 DOCBOOK/roundtrip/pages2normalise.xsl create mode 100755 DOCBOOK/roundtrip/param.xml create mode 100755 DOCBOOK/roundtrip/param.xsl create mode 100755 DOCBOOK/roundtrip/sections-spec.xml create mode 100755 DOCBOOK/roundtrip/sections2blocks.xsl create mode 100755 DOCBOOK/roundtrip/specifications.xml create mode 100755 DOCBOOK/roundtrip/template-pages.xml create mode 100755 DOCBOOK/roundtrip/template.dot create mode 100755 DOCBOOK/roundtrip/template.xml create mode 100755 DOCBOOK/roundtrip/wordml2normalise.xsl create mode 100755 DOCBOOK/slides/README create mode 100755 DOCBOOK/slides/RELEASE-NOTES.xml create mode 100755 DOCBOOK/slides/common/common.xsl create mode 100755 DOCBOOK/slides/doc/slides.xml create mode 100755 DOCBOOK/slides/doc/user.css create mode 100755 DOCBOOK/slides/fo/param.xml create mode 100755 DOCBOOK/slides/fo/param.xsl create mode 100755 DOCBOOK/slides/fo/plain-titlepage.xml create mode 100755 DOCBOOK/slides/fo/plain-titlepage.xsl create mode 100755 DOCBOOK/slides/fo/plain.xsl create mode 100755 DOCBOOK/slides/images/Thumbs.db create mode 100755 DOCBOOK/slides/images/callouts/1.png create mode 100755 DOCBOOK/slides/images/callouts/1.svg create mode 100755 DOCBOOK/slides/images/callouts/10.png create mode 100755 DOCBOOK/slides/images/callouts/10.svg create mode 100755 DOCBOOK/slides/images/callouts/11.png create mode 100755 DOCBOOK/slides/images/callouts/11.svg create mode 100755 DOCBOOK/slides/images/callouts/12.png create mode 100755 DOCBOOK/slides/images/callouts/12.svg create mode 100755 DOCBOOK/slides/images/callouts/13.png create mode 100755 DOCBOOK/slides/images/callouts/13.svg create mode 100755 DOCBOOK/slides/images/callouts/14.png create mode 100755 DOCBOOK/slides/images/callouts/14.svg create mode 100755 DOCBOOK/slides/images/callouts/15.png create mode 100755 DOCBOOK/slides/images/callouts/15.svg create mode 100755 DOCBOOK/slides/images/callouts/16.png create mode 100755 DOCBOOK/slides/images/callouts/16.svg create mode 100755 DOCBOOK/slides/images/callouts/17.png create mode 100755 DOCBOOK/slides/images/callouts/17.svg create mode 100755 DOCBOOK/slides/images/callouts/18.png create mode 100755 DOCBOOK/slides/images/callouts/18.svg create mode 100755 DOCBOOK/slides/images/callouts/19.png create mode 100755 DOCBOOK/slides/images/callouts/19.svg create mode 100755 DOCBOOK/slides/images/callouts/2.png create mode 100755 DOCBOOK/slides/images/callouts/2.svg create mode 100755 DOCBOOK/slides/images/callouts/20.png create mode 100755 DOCBOOK/slides/images/callouts/20.svg create mode 100755 DOCBOOK/slides/images/callouts/21.png create mode 100755 DOCBOOK/slides/images/callouts/21.svg create mode 100755 DOCBOOK/slides/images/callouts/22.png create mode 100755 DOCBOOK/slides/images/callouts/22.svg create mode 100755 DOCBOOK/slides/images/callouts/23.png create mode 100755 DOCBOOK/slides/images/callouts/23.svg create mode 100755 DOCBOOK/slides/images/callouts/24.png create mode 100755 DOCBOOK/slides/images/callouts/24.svg create mode 100755 DOCBOOK/slides/images/callouts/25.png create mode 100755 DOCBOOK/slides/images/callouts/25.svg create mode 100755 DOCBOOK/slides/images/callouts/26.png create mode 100755 DOCBOOK/slides/images/callouts/26.svg create mode 100755 DOCBOOK/slides/images/callouts/27.png create mode 100755 DOCBOOK/slides/images/callouts/27.svg create mode 100755 DOCBOOK/slides/images/callouts/28.png create mode 100755 DOCBOOK/slides/images/callouts/28.svg create mode 100755 DOCBOOK/slides/images/callouts/29.png create mode 100755 DOCBOOK/slides/images/callouts/29.svg create mode 100755 DOCBOOK/slides/images/callouts/3.png create mode 100755 DOCBOOK/slides/images/callouts/3.svg create mode 100755 DOCBOOK/slides/images/callouts/30.png create mode 100755 DOCBOOK/slides/images/callouts/30.svg create mode 100755 DOCBOOK/slides/images/callouts/4.png create mode 100755 DOCBOOK/slides/images/callouts/4.svg create mode 100755 DOCBOOK/slides/images/callouts/5.png create mode 100755 DOCBOOK/slides/images/callouts/5.svg create mode 100755 DOCBOOK/slides/images/callouts/6.png create mode 100755 DOCBOOK/slides/images/callouts/6.svg create mode 100755 DOCBOOK/slides/images/callouts/7.png create mode 100755 DOCBOOK/slides/images/callouts/7.svg create mode 100755 DOCBOOK/slides/images/callouts/8.png create mode 100755 DOCBOOK/slides/images/callouts/8.svg create mode 100755 DOCBOOK/slides/images/callouts/9.png create mode 100755 DOCBOOK/slides/images/callouts/9.svg create mode 100755 DOCBOOK/slides/images/callouts/gen.sh create mode 100755 DOCBOOK/slides/images/face1.gif create mode 100755 DOCBOOK/slides/images/face2.gif create mode 100755 DOCBOOK/slides/images/face3.gif create mode 100755 DOCBOOK/slides/images/face4.gif create mode 100755 DOCBOOK/slides/locatingrules.xml create mode 100755 DOCBOOK/slides/s5/index-osf.html create mode 100755 DOCBOOK/slides/s5/index-xoxo.html create mode 100755 DOCBOOK/slides/s5/pix/S501.jpg create mode 100755 DOCBOOK/slides/s5/pix/S502.jpg create mode 100755 DOCBOOK/slides/s5/pix/S503.jpg create mode 100755 DOCBOOK/slides/s5/pix/S504.jpg create mode 100755 DOCBOOK/slides/s5/pix/mememe01.png create mode 100755 DOCBOOK/slides/s5/pix/mememe02.png create mode 100755 DOCBOOK/slides/s5/pix/mememe03.png create mode 100755 DOCBOOK/slides/s5/pix/mememe04.png create mode 100755 DOCBOOK/slides/s5/pix/mememe05.png create mode 100755 DOCBOOK/slides/s5/pix/s5filemap.png create mode 100755 DOCBOOK/slides/s5/ui/bg-shade.png create mode 100755 DOCBOOK/slides/s5/ui/default/Thumbs.db create mode 100755 DOCBOOK/slides/s5/ui/default/blank.gif create mode 100755 DOCBOOK/slides/s5/ui/default/bodybg.gif create mode 100755 DOCBOOK/slides/s5/ui/default/framing.css create mode 100755 DOCBOOK/slides/s5/ui/default/iepngfix.htc create mode 100755 DOCBOOK/slides/s5/ui/default/notes.css create mode 100755 DOCBOOK/slides/s5/ui/default/opera.css create mode 100755 DOCBOOK/slides/s5/ui/default/outline.css create mode 100755 DOCBOOK/slides/s5/ui/default/pretty.css create mode 100755 DOCBOOK/slides/s5/ui/default/print.css create mode 100755 DOCBOOK/slides/s5/ui/default/s5-core.css create mode 100755 DOCBOOK/slides/s5/ui/default/slides.css create mode 100755 DOCBOOK/slides/s5/ui/default/slides.js create mode 100755 DOCBOOK/slides/s5/ui/s5-notes.html create mode 100755 DOCBOOK/slides/schema/relaxng/admonitions.rng create mode 100755 DOCBOOK/slides/schema/relaxng/annotations.rng create mode 100755 DOCBOOK/slides/schema/relaxng/bibliography.rng create mode 100755 DOCBOOK/slides/schema/relaxng/callouts.rng create mode 100755 DOCBOOK/slides/schema/relaxng/calstbl.rng create mode 100755 DOCBOOK/slides/schema/relaxng/core.rng create mode 100755 DOCBOOK/slides/schema/relaxng/docbook.rng create mode 100755 DOCBOOK/slides/schema/relaxng/docbook1.rng create mode 100755 DOCBOOK/slides/schema/relaxng/ebnf.rng create mode 100755 DOCBOOK/slides/schema/relaxng/error.rng create mode 100755 DOCBOOK/slides/schema/relaxng/glossary.rng create mode 100755 DOCBOOK/slides/schema/relaxng/gui.rng create mode 100755 DOCBOOK/slides/schema/relaxng/hier.rng create mode 100755 DOCBOOK/slides/schema/relaxng/htmltbl.rng create mode 100755 DOCBOOK/slides/schema/relaxng/index.rng create mode 100755 DOCBOOK/slides/schema/relaxng/keyboard.rng create mode 100755 DOCBOOK/slides/schema/relaxng/markup.rng create mode 100755 DOCBOOK/slides/schema/relaxng/math.rng create mode 100755 DOCBOOK/slides/schema/relaxng/mathml.rng create mode 100755 DOCBOOK/slides/schema/relaxng/msgset.rng create mode 100755 DOCBOOK/slides/schema/relaxng/os.rng create mode 100755 DOCBOOK/slides/schema/relaxng/pool.rng create mode 100755 DOCBOOK/slides/schema/relaxng/product.rng create mode 100755 DOCBOOK/slides/schema/relaxng/programming.rng create mode 100755 DOCBOOK/slides/schema/relaxng/qandaset.rng create mode 100755 DOCBOOK/slides/schema/relaxng/refentry.rng create mode 100755 DOCBOOK/slides/schema/relaxng/refsect1.rng create mode 100755 DOCBOOK/slides/schema/relaxng/sect1.rng create mode 100755 DOCBOOK/slides/schema/relaxng/slides.rnc create mode 100755 DOCBOOK/slides/schema/relaxng/slides.rng create mode 100755 DOCBOOK/slides/schema/relaxng/svg.rng create mode 100755 DOCBOOK/slides/schema/relaxng/tasks.rng create mode 100755 DOCBOOK/slides/schema/relaxng/technical.rng create mode 100755 DOCBOOK/slides/schema/relaxng/toc.rng create mode 100755 DOCBOOK/slides/schema/relaxng/topic.rng create mode 100755 DOCBOOK/slides/schema/relaxng/xlink.rng create mode 100755 DOCBOOK/slides/schema/xsd/admonitions.xsd create mode 100755 DOCBOOK/slides/schema/xsd/annotations.xsd create mode 100755 DOCBOOK/slides/schema/xsd/bibliography.xsd create mode 100755 DOCBOOK/slides/schema/xsd/callouts.xsd create mode 100755 DOCBOOK/slides/schema/xsd/calstbl.xsd create mode 100755 DOCBOOK/slides/schema/xsd/core.xsd create mode 100755 DOCBOOK/slides/schema/xsd/db.xsd create mode 100755 DOCBOOK/slides/schema/xsd/docbook.xsd create mode 100755 DOCBOOK/slides/schema/xsd/docbook1.xsd create mode 100755 DOCBOOK/slides/schema/xsd/ebnf.xsd create mode 100755 DOCBOOK/slides/schema/xsd/error.xsd create mode 100755 DOCBOOK/slides/schema/xsd/glossary.xsd create mode 100755 DOCBOOK/slides/schema/xsd/gui.xsd create mode 100755 DOCBOOK/slides/schema/xsd/hier.xsd create mode 100755 DOCBOOK/slides/schema/xsd/htmltbl.xsd create mode 100755 DOCBOOK/slides/schema/xsd/index.xsd create mode 100755 DOCBOOK/slides/schema/xsd/keyboard.xsd create mode 100755 DOCBOOK/slides/schema/xsd/markup.xsd create mode 100755 DOCBOOK/slides/schema/xsd/math.xsd create mode 100755 DOCBOOK/slides/schema/xsd/mathml.xsd create mode 100755 DOCBOOK/slides/schema/xsd/msgset.xsd create mode 100755 DOCBOOK/slides/schema/xsd/os.xsd create mode 100755 DOCBOOK/slides/schema/xsd/pool.xsd create mode 100755 DOCBOOK/slides/schema/xsd/product.xsd create mode 100755 DOCBOOK/slides/schema/xsd/programming.xsd create mode 100755 DOCBOOK/slides/schema/xsd/qandaset.xsd create mode 100755 DOCBOOK/slides/schema/xsd/refentry.xsd create mode 100755 DOCBOOK/slides/schema/xsd/refsect1.xsd create mode 100755 DOCBOOK/slides/schema/xsd/sect1.xsd create mode 100755 DOCBOOK/slides/schema/xsd/slides.xsd create mode 100755 DOCBOOK/slides/schema/xsd/svg.xsd create mode 100755 DOCBOOK/slides/schema/xsd/tasks.xsd create mode 100755 DOCBOOK/slides/schema/xsd/technical.xsd create mode 100755 DOCBOOK/slides/schema/xsd/toc.xsd create mode 100755 DOCBOOK/slides/schema/xsd/topic.xsd create mode 100755 DOCBOOK/slides/schema/xsd/xlink.xsd create mode 100755 DOCBOOK/slides/schema/xsd/xlink1.xsd create mode 100755 DOCBOOK/slides/schema/xsd/xml.xsd create mode 100755 DOCBOOK/slides/slidy/.htaccess create mode 100755 DOCBOOK/slides/slidy/Overview.html create mode 100755 DOCBOOK/slides/slidy/Overview.xhtml create mode 100755 DOCBOOK/slides/slidy/blank.html create mode 100755 DOCBOOK/slides/slidy/graphics/Thumbs.db create mode 100755 DOCBOOK/slides/slidy/graphics/bullet-fold-dim.gif create mode 100755 DOCBOOK/slides/slidy/graphics/bullet-fold-dim.png create mode 100755 DOCBOOK/slides/slidy/graphics/bullet-fold.gif create mode 100755 DOCBOOK/slides/slidy/graphics/bullet-fold.png create mode 100755 DOCBOOK/slides/slidy/graphics/bullet-nofold-dim.gif create mode 100755 DOCBOOK/slides/slidy/graphics/bullet-nofold-dim.png create mode 100755 DOCBOOK/slides/slidy/graphics/bullet-nofold.gif create mode 100755 DOCBOOK/slides/slidy/graphics/bullet-nofold.png create mode 100755 DOCBOOK/slides/slidy/graphics/bullet-unfold-dim.gif create mode 100755 DOCBOOK/slides/slidy/graphics/bullet-unfold-dim.png create mode 100755 DOCBOOK/slides/slidy/graphics/bullet-unfold.gif create mode 100755 DOCBOOK/slides/slidy/graphics/bullet-unfold.png create mode 100755 DOCBOOK/slides/slidy/graphics/bullet.png create mode 100755 DOCBOOK/slides/slidy/graphics/example.png create mode 100755 DOCBOOK/slides/slidy/graphics/example.svg create mode 100755 DOCBOOK/slides/slidy/graphics/face1.gif create mode 100755 DOCBOOK/slides/slidy/graphics/face2.gif create mode 100755 DOCBOOK/slides/slidy/graphics/face3.gif create mode 100755 DOCBOOK/slides/slidy/graphics/face4.gif create mode 100755 DOCBOOK/slides/slidy/graphics/fold-bright.gif create mode 100755 DOCBOOK/slides/slidy/graphics/fold-dim.bmp create mode 100755 DOCBOOK/slides/slidy/graphics/fold-dim.gif create mode 100755 DOCBOOK/slides/slidy/graphics/fold.bmp create mode 100755 DOCBOOK/slides/slidy/graphics/fold.gif create mode 100755 DOCBOOK/slides/slidy/graphics/icon-blue.png create mode 100755 DOCBOOK/slides/slidy/graphics/keys2.jpg create mode 100755 DOCBOOK/slides/slidy/graphics/nofold-dim.bmp create mode 100755 DOCBOOK/slides/slidy/graphics/nofold-dim.gif create mode 100755 DOCBOOK/slides/slidy/graphics/nofold.bmp create mode 100755 DOCBOOK/slides/slidy/graphics/unfold-bright.gif create mode 100755 DOCBOOK/slides/slidy/graphics/unfold-dim.bmp create mode 100755 DOCBOOK/slides/slidy/graphics/unfold-dim.gif create mode 100755 DOCBOOK/slides/slidy/graphics/unfold.bmp create mode 100755 DOCBOOK/slides/slidy/graphics/unfold.gif create mode 100755 DOCBOOK/slides/slidy/graphics/w3c-logo-blue.gif create mode 100755 DOCBOOK/slides/slidy/graphics/w3c-logo-blue.svg create mode 100755 DOCBOOK/slides/slidy/graphics/w3c-logo-slanted.jpg create mode 100755 DOCBOOK/slides/slidy/graphics/w3c-logo-white.gif create mode 100755 DOCBOOK/slides/slidy/graphics/w3c-logo-white.svg create mode 100755 DOCBOOK/slides/slidy/help/.htaccess create mode 100755 DOCBOOK/slides/slidy/help/help.html create mode 100755 DOCBOOK/slides/slidy/help/help.html.ca create mode 100755 DOCBOOK/slides/slidy/help/help.html.de create mode 100755 DOCBOOK/slides/slidy/help/help.html.en create mode 100755 DOCBOOK/slides/slidy/help/help.html.es create mode 100755 DOCBOOK/slides/slidy/help/help.html.fr create mode 100755 DOCBOOK/slides/slidy/help/help.html.hu create mode 100755 DOCBOOK/slides/slidy/help/help.html.nl create mode 100755 DOCBOOK/slides/slidy/help/help.html.pl create mode 100755 DOCBOOK/slides/slidy/help/help.html.pt-br create mode 100755 DOCBOOK/slides/slidy/help/help.html.pt_br create mode 100755 DOCBOOK/slides/slidy/help/help.html.sv create mode 100755 DOCBOOK/slides/slidy/help/help.pt-br.html create mode 100755 DOCBOOK/slides/slidy/scripts/.htaccess create mode 100755 DOCBOOK/slides/slidy/scripts/slidy.js create mode 100755 DOCBOOK/slides/slidy/scripts/slidy.js.gz create mode 100755 DOCBOOK/slides/slidy/styles/.htaccess create mode 100755 DOCBOOK/slides/slidy/styles/slidy.css create mode 100755 DOCBOOK/slides/slidy/styles/w3c-blue.css create mode 100755 DOCBOOK/slides/tools/dbs3-upgrade.xsl create mode 100755 DOCBOOK/slides/xhtml/param.xml create mode 100755 DOCBOOK/slides/xhtml/param.xsl create mode 100755 DOCBOOK/slides/xhtml/plain-titlepage.xml create mode 100755 DOCBOOK/slides/xhtml/plain-titlepage.xsl create mode 100755 DOCBOOK/slides/xhtml/plain.xsl create mode 100755 DOCBOOK/slides/xhtml/s5.xsl create mode 100755 DOCBOOK/slides/xhtml/slidy.xsl create mode 100755 DOCBOOK/svn-commit.tmp create mode 100755 DOCBOOK/template/titlepage.xml create mode 100755 DOCBOOK/template/titlepage.xsl create mode 100755 DOCBOOK/tests/refentry.007.ns.xml create mode 100755 DOCBOOK/tests/refentry.007.xml create mode 100755 DOCBOOK/tools/bin/docbook-xsl-update create mode 100755 DOCBOOK/tools/make/Makefile.DocBook create mode 100755 DOCBOOK/tools/make/Makefile.combine create mode 100755 DOCBOOK/tools/make/Makefile.docParam create mode 100755 DOCBOOK/webhelp/LICENSE create mode 100755 DOCBOOK/webhelp/Makefile.sample create mode 100755 DOCBOOK/webhelp/build.properties create mode 100755 DOCBOOK/webhelp/build.xml create mode 100755 DOCBOOK/webhelp/build_custom_webhelp.xml create mode 100755 DOCBOOK/webhelp/docs/ch01.html create mode 100755 DOCBOOK/webhelp/docs/ch02.html create mode 100755 DOCBOOK/webhelp/docs/ch02s01.html create mode 100755 DOCBOOK/webhelp/docs/ch02s02.html create mode 100755 DOCBOOK/webhelp/docs/ch02s02s01.html create mode 100755 DOCBOOK/webhelp/docs/ch02s03.html create mode 100755 DOCBOOK/webhelp/docs/ch02s04.html create mode 100755 DOCBOOK/webhelp/docs/ch02s05.html create mode 100755 DOCBOOK/webhelp/docs/ch03.html create mode 100755 DOCBOOK/webhelp/docs/ch03s01.html create mode 100755 DOCBOOK/webhelp/docs/ch03s02.html create mode 100755 DOCBOOK/webhelp/docs/ch03s02s01.html create mode 100755 DOCBOOK/webhelp/docs/ch04.html create mode 100755 DOCBOOK/webhelp/docs/ch05.html create mode 100755 DOCBOOK/webhelp/docs/ch05s01.html create mode 100755 DOCBOOK/webhelp/docs/ch05s02.html create mode 100755 DOCBOOK/webhelp/docs/common/browserDetect.js create mode 100755 DOCBOOK/webhelp/docs/common/css/ie.css create mode 100755 DOCBOOK/webhelp/docs/common/css/positioning.css create mode 100755 DOCBOOK/webhelp/docs/common/images/Thumbs.db create mode 100755 DOCBOOK/webhelp/docs/common/images/admon/caution.png create mode 100755 DOCBOOK/webhelp/docs/common/images/admon/important.png create mode 100755 DOCBOOK/webhelp/docs/common/images/admon/note.png create mode 100755 DOCBOOK/webhelp/docs/common/images/admon/tip.png create mode 100755 DOCBOOK/webhelp/docs/common/images/admon/warning.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/1.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/10.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/11.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/12.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/13.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/14.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/15.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/16.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/17.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/18.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/19.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/2.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/20.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/21.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/22.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/23.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/24.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/25.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/26.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/27.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/28.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/29.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/3.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/30.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/4.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/5.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/6.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/7.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/8.png create mode 100755 DOCBOOK/webhelp/docs/common/images/callouts/9.png create mode 100755 DOCBOOK/webhelp/docs/common/images/header-bg.gif create mode 100755 DOCBOOK/webhelp/docs/common/images/header-bg.png create mode 100755 DOCBOOK/webhelp/docs/common/images/highlight-blue.gif create mode 100755 DOCBOOK/webhelp/docs/common/images/highlight-yellow.gif create mode 100755 DOCBOOK/webhelp/docs/common/images/loading.gif create mode 100755 DOCBOOK/webhelp/docs/common/images/logo.png create mode 100755 DOCBOOK/webhelp/docs/common/images/next-arrow.png create mode 100755 DOCBOOK/webhelp/docs/common/images/previous-arrow.png create mode 100755 DOCBOOK/webhelp/docs/common/images/search-icon.png create mode 100755 DOCBOOK/webhelp/docs/common/images/showHideTreeIcons.png create mode 100755 DOCBOOK/webhelp/docs/common/images/sidebar.png create mode 100755 DOCBOOK/webhelp/docs/common/images/starsSmall.png create mode 100755 DOCBOOK/webhelp/docs/common/images/toc-icon.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/jquery-1.7.2.min.js create mode 100755 DOCBOOK/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js create mode 100755 DOCBOOK/webhelp/docs/common/jquery/jquery.cookie.js create mode 100755 DOCBOOK/webhelp/docs/common/jquery/jquery.ui.all.js create mode 100755 DOCBOOK/webhelp/docs/common/jquery/layout/jquery.layout.js create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/Thumbs.db create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_6da8d5_256x240.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_cd0a0a_256x240.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_d8e7f3_256x240.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css create mode 100755 DOCBOOK/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/Thumbs.db create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/file.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/folder-closed.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/folder-closed2.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/folder.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/folder2.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/minus.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/plus.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-black-line.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-black.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-default-line.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-default.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-famfamfam-line.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-famfamfam.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-gray-line.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-gray.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-red-line.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-red.gif create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/jquery.treeview.css create mode 100755 DOCBOOK/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js create mode 100755 DOCBOOK/webhelp/docs/common/main.js create mode 100755 DOCBOOK/webhelp/docs/common/splitterInit.js create mode 100755 DOCBOOK/webhelp/docs/favicon.ico create mode 100755 DOCBOOK/webhelp/docs/images/sample.jpg create mode 100755 DOCBOOK/webhelp/docs/index.html create mode 100755 DOCBOOK/webhelp/docs/ix01.html create mode 100755 DOCBOOK/webhelp/docs/search/default.props create mode 100755 DOCBOOK/webhelp/docs/search/en-us.props create mode 100755 DOCBOOK/webhelp/docs/search/es-es.props create mode 100755 DOCBOOK/webhelp/docs/search/htmlFileInfoList.js create mode 100755 DOCBOOK/webhelp/docs/search/index-1.js create mode 100755 DOCBOOK/webhelp/docs/search/index-2.js create mode 100755 DOCBOOK/webhelp/docs/search/index-3.js create mode 100755 DOCBOOK/webhelp/docs/search/ja-jp.props create mode 100755 DOCBOOK/webhelp/docs/search/l10n.js create mode 100755 DOCBOOK/webhelp/docs/search/nwSearchFnt.js create mode 100755 DOCBOOK/webhelp/docs/search/punctuation.props create mode 100755 DOCBOOK/webhelp/docs/search/stemmers/de_stemmer.js create mode 100755 DOCBOOK/webhelp/docs/search/stemmers/en_stemmer.js create mode 100755 DOCBOOK/webhelp/docs/search/stemmers/fr_stemmer.js create mode 100755 DOCBOOK/webhelp/docsrc/images/sample.jpg create mode 100755 DOCBOOK/webhelp/docsrc/readme.xml create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/ch01.html create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/ch02.html create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/ch03.html create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/ch04.html create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/browserDetect.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/css/ie.css create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/css/positioning.css create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/Thumbs.db create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/caution.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/important.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/note.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/tip.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/warning.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/1.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/10.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/11.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/12.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/13.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/14.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/15.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/16.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/17.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/18.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/19.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/2.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/20.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/21.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/22.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/23.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/24.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/25.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/26.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/27.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/28.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/29.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/3.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/30.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/4.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/5.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/6.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/7.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/8.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/9.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/header-bg.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/header-bg.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/highlight-blue.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/highlight-yellow.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/loading.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/logo.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/next-arrow.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/previous-arrow.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/search-icon.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/showHideTreeIcons.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/sidebar.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/starsSmall.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/images/toc-icon.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/jquery-1.7.2.min.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/jquery-ui-1.8.2.custom.min.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/jquery.cookie.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/jquery.ui.all.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/layout/jquery.layout.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_6da8d5_256x240.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_cd0a0a_256x240.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_d8e7f3_256x240.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/Thumbs.db create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/file.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/folder-closed.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/folder-closed2.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/folder.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/folder2.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/minus.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/plus.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-black-line.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-black.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-default-line.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-default.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-famfamfam-line.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-famfamfam.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-gray-line.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-gray.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-red-line.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-red.gif create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/jquery.treeview.css create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/jquery.treeview.min.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/main.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/common/splitterInit.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/favicon.ico create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/images/sample.jpg create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/index.html create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/ix01.html create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/search/htmlFileInfoList.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/search/index-1.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/search/index-2.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/search/index-3.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/search/l10n.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/search/nwSearchFnt.js create mode 100755 DOCBOOK/webhelp/docsrc/webhelp-files/search/stemmers/de_stemmer.js create mode 100755 DOCBOOK/webhelp/docsrc/xinclude-test.xml create mode 100755 DOCBOOK/webhelp/template/common/browserDetect.js create mode 100755 DOCBOOK/webhelp/template/common/css/ie.css create mode 100755 DOCBOOK/webhelp/template/common/css/positioning.css create mode 100755 DOCBOOK/webhelp/template/common/images/Thumbs.db create mode 100755 DOCBOOK/webhelp/template/common/images/admon/caution.png create mode 100755 DOCBOOK/webhelp/template/common/images/admon/important.png create mode 100755 DOCBOOK/webhelp/template/common/images/admon/note.png create mode 100755 DOCBOOK/webhelp/template/common/images/admon/tip.png create mode 100755 DOCBOOK/webhelp/template/common/images/admon/warning.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/1.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/10.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/11.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/12.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/13.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/14.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/15.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/16.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/17.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/18.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/19.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/2.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/20.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/21.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/22.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/23.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/24.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/25.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/26.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/27.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/28.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/29.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/3.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/30.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/4.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/5.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/6.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/7.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/8.png create mode 100755 DOCBOOK/webhelp/template/common/images/callouts/9.png create mode 100755 DOCBOOK/webhelp/template/common/images/header-bg.gif create mode 100755 DOCBOOK/webhelp/template/common/images/header-bg.png create mode 100755 DOCBOOK/webhelp/template/common/images/highlight-blue.gif create mode 100755 DOCBOOK/webhelp/template/common/images/highlight-yellow.gif create mode 100755 DOCBOOK/webhelp/template/common/images/loading.gif create mode 100755 DOCBOOK/webhelp/template/common/images/logo.png create mode 100755 DOCBOOK/webhelp/template/common/images/next-arrow.png create mode 100755 DOCBOOK/webhelp/template/common/images/previous-arrow.png create mode 100755 DOCBOOK/webhelp/template/common/images/search-icon.png create mode 100755 DOCBOOK/webhelp/template/common/images/showHideTreeIcons.png create mode 100755 DOCBOOK/webhelp/template/common/images/sidebar.png create mode 100755 DOCBOOK/webhelp/template/common/images/starsSmall.png create mode 100755 DOCBOOK/webhelp/template/common/images/toc-icon.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/jquery-1.7.2.min.js create mode 100755 DOCBOOK/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js create mode 100755 DOCBOOK/webhelp/template/common/jquery/jquery.cookie.js create mode 100755 DOCBOOK/webhelp/template/common/jquery/jquery.ui.all.js create mode 100755 DOCBOOK/webhelp/template/common/jquery/layout/jquery.layout.js create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_6da8d5_256x240.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_cd0a0a_256x240.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_d8e7f3_256x240.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css create mode 100755 DOCBOOK/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/Thumbs.db create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/file.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/folder-closed.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/folder-closed2.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/folder.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/folder2.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/minus.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/plus.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-black-line.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-black.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-default-line.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-default.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-famfamfam-line.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-famfamfam.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-gray-line.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-gray.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-red-line.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-red.gif create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/jquery.treeview.css create mode 100755 DOCBOOK/webhelp/template/common/jquery/treeview/jquery.treeview.min.js create mode 100755 DOCBOOK/webhelp/template/common/main.js create mode 100755 DOCBOOK/webhelp/template/common/splitterInit.js create mode 100755 DOCBOOK/webhelp/template/favicon.ico create mode 100755 DOCBOOK/webhelp/template/search/default.props create mode 100755 DOCBOOK/webhelp/template/search/en-us.props create mode 100755 DOCBOOK/webhelp/template/search/es-es.props create mode 100755 DOCBOOK/webhelp/template/search/ja-jp.props create mode 100755 DOCBOOK/webhelp/template/search/nwSearchFnt.js create mode 100755 DOCBOOK/webhelp/template/search/punctuation.props create mode 100755 DOCBOOK/webhelp/template/search/stemmers/de_stemmer.js create mode 100755 DOCBOOK/webhelp/template/search/stemmers/en_stemmer.js create mode 100755 DOCBOOK/webhelp/template/search/stemmers/fr_stemmer.js create mode 100755 DOCBOOK/webhelp/xsl/titlepage.templates.xml create mode 100755 DOCBOOK/webhelp/xsl/titlepage.templates.xsl create mode 100755 DOCBOOK/webhelp/xsl/webhelp-common.xsl create mode 100755 DOCBOOK/webhelp/xsl/webhelp-common_custom.xsl create mode 100755 DOCBOOK/webhelp/xsl/webhelp.xsl create mode 100755 DOCBOOK/webhelp/xsl/webhelp_custom.xsl create mode 100755 DOCBOOK/website/autolayout.xsl create mode 100755 DOCBOOK/website/chunk-common.xsl create mode 100755 DOCBOOK/website/chunk-tabular.xsl create mode 100755 DOCBOOK/website/chunk-website.xsl create mode 100755 DOCBOOK/website/head.xsl create mode 100755 DOCBOOK/website/makefile-dep.xsl create mode 100755 DOCBOOK/website/olink.xsl create mode 100755 DOCBOOK/website/param.xml create mode 100755 DOCBOOK/website/param.xsl create mode 100755 DOCBOOK/website/rss.xsl create mode 100755 DOCBOOK/website/tabular.xsl create mode 100755 DOCBOOK/website/toc-tabular.xsl create mode 100755 DOCBOOK/website/toc.xsl create mode 100755 DOCBOOK/website/website-common.xsl create mode 100755 DOCBOOK/website/website-targets.xsl create mode 100755 DOCBOOK/website/website.xsl create mode 100755 DOCBOOK/website/xbel.xsl create mode 100755 DOCBOOK/xhtml-1_1/admon.xsl create mode 100755 DOCBOOK/xhtml-1_1/annotations.xsl create mode 100755 DOCBOOK/xhtml-1_1/autoidx-kimber.xsl create mode 100755 DOCBOOK/xhtml-1_1/autoidx-kosek.xsl create mode 100755 DOCBOOK/xhtml-1_1/autoidx-ng.xsl create mode 100755 DOCBOOK/xhtml-1_1/autoidx.xsl create mode 100755 DOCBOOK/xhtml-1_1/autotoc.xsl create mode 100755 DOCBOOK/xhtml-1_1/biblio-iso690.xsl create mode 100755 DOCBOOK/xhtml-1_1/biblio.xsl create mode 100755 DOCBOOK/xhtml-1_1/block.xsl create mode 100755 DOCBOOK/xhtml-1_1/callout.xsl create mode 100755 DOCBOOK/xhtml-1_1/changebars.xsl create mode 100755 DOCBOOK/xhtml-1_1/chunk-changebars.xsl create mode 100755 DOCBOOK/xhtml-1_1/chunk-code.xsl create mode 100755 DOCBOOK/xhtml-1_1/chunk-common.xsl create mode 100755 DOCBOOK/xhtml-1_1/chunk.xsl create mode 100755 DOCBOOK/xhtml-1_1/chunker.xsl create mode 100755 DOCBOOK/xhtml-1_1/chunkfast.xsl create mode 100755 DOCBOOK/xhtml-1_1/chunktoc.xsl create mode 100755 DOCBOOK/xhtml-1_1/component.xsl create mode 100755 DOCBOOK/xhtml-1_1/division.xsl create mode 100755 DOCBOOK/xhtml-1_1/docbook.css.xml create mode 100755 DOCBOOK/xhtml-1_1/docbook.xsl create mode 100755 DOCBOOK/xhtml-1_1/ebnf.xsl create mode 100755 DOCBOOK/xhtml-1_1/footnote.xsl create mode 100755 DOCBOOK/xhtml-1_1/formal.xsl create mode 100755 DOCBOOK/xhtml-1_1/glossary.xsl create mode 100755 DOCBOOK/xhtml-1_1/graphics.xsl create mode 100755 DOCBOOK/xhtml-1_1/highlight.xsl create mode 100755 DOCBOOK/xhtml-1_1/html-rtf.xsl create mode 100755 DOCBOOK/xhtml-1_1/html.xsl create mode 100755 DOCBOOK/xhtml-1_1/htmltbl.xsl create mode 100755 DOCBOOK/xhtml-1_1/index.xsl create mode 100755 DOCBOOK/xhtml-1_1/info.xsl create mode 100755 DOCBOOK/xhtml-1_1/inline.xsl create mode 100755 DOCBOOK/xhtml-1_1/keywords.xsl create mode 100755 DOCBOOK/xhtml-1_1/lists.xsl create mode 100755 DOCBOOK/xhtml-1_1/maketoc.xsl create mode 100755 DOCBOOK/xhtml-1_1/manifest.xsl create mode 100755 DOCBOOK/xhtml-1_1/math.xsl create mode 100755 DOCBOOK/xhtml-1_1/oldchunker.xsl create mode 100755 DOCBOOK/xhtml-1_1/onechunk.xsl create mode 100755 DOCBOOK/xhtml-1_1/param.xsl create mode 100755 DOCBOOK/xhtml-1_1/pi.xsl create mode 100755 DOCBOOK/xhtml-1_1/profile-chunk-code.xsl create mode 100755 DOCBOOK/xhtml-1_1/profile-chunk.xsl create mode 100755 DOCBOOK/xhtml-1_1/profile-docbook.xsl create mode 100755 DOCBOOK/xhtml-1_1/profile-onechunk.xsl create mode 100755 DOCBOOK/xhtml-1_1/qandaset.xsl create mode 100755 DOCBOOK/xhtml-1_1/refentry.xsl create mode 100755 DOCBOOK/xhtml-1_1/sections.xsl create mode 100755 DOCBOOK/xhtml-1_1/synop.xsl create mode 100755 DOCBOOK/xhtml-1_1/table.xsl create mode 100755 DOCBOOK/xhtml-1_1/task.xsl create mode 100755 DOCBOOK/xhtml-1_1/titlepage.templates.xsl create mode 100755 DOCBOOK/xhtml-1_1/titlepage.xsl create mode 100755 DOCBOOK/xhtml-1_1/toc.xsl create mode 100755 DOCBOOK/xhtml-1_1/verbatim.xsl create mode 100755 DOCBOOK/xhtml-1_1/xref.xsl create mode 100755 DOCBOOK/xhtml/admon.xsl create mode 100755 DOCBOOK/xhtml/annotations.xsl create mode 100755 DOCBOOK/xhtml/autoidx-kimber.xsl create mode 100755 DOCBOOK/xhtml/autoidx-kosek.xsl create mode 100755 DOCBOOK/xhtml/autoidx-ng.xsl create mode 100755 DOCBOOK/xhtml/autoidx.xsl create mode 100755 DOCBOOK/xhtml/autotoc.xsl create mode 100755 DOCBOOK/xhtml/biblio-iso690.xsl create mode 100755 DOCBOOK/xhtml/biblio.xsl create mode 100755 DOCBOOK/xhtml/block.xsl create mode 100755 DOCBOOK/xhtml/callout.xsl create mode 100755 DOCBOOK/xhtml/changebars.xsl create mode 100755 DOCBOOK/xhtml/chunk-changebars.xsl create mode 100755 DOCBOOK/xhtml/chunk-code.xsl create mode 100755 DOCBOOK/xhtml/chunk-common.xsl create mode 100755 DOCBOOK/xhtml/chunk.xsl create mode 100755 DOCBOOK/xhtml/chunker.xsl create mode 100755 DOCBOOK/xhtml/chunkfast.xsl create mode 100755 DOCBOOK/xhtml/chunktoc.xsl create mode 100755 DOCBOOK/xhtml/component.xsl create mode 100755 DOCBOOK/xhtml/division.xsl create mode 100755 DOCBOOK/xhtml/docbook-no-doctype.xsl create mode 100755 DOCBOOK/xhtml/docbook.css.xml create mode 100755 DOCBOOK/xhtml/docbook.xsl create mode 100755 DOCBOOK/xhtml/ebnf.xsl create mode 100755 DOCBOOK/xhtml/footnote.xsl create mode 100755 DOCBOOK/xhtml/formal.xsl create mode 100755 DOCBOOK/xhtml/glossary.xsl create mode 100755 DOCBOOK/xhtml/graphics.xsl create mode 100755 DOCBOOK/xhtml/highlight.xsl create mode 100755 DOCBOOK/xhtml/html-rtf.xsl create mode 100755 DOCBOOK/xhtml/html.xsl create mode 100755 DOCBOOK/xhtml/htmltbl.xsl create mode 100755 DOCBOOK/xhtml/index.xsl create mode 100755 DOCBOOK/xhtml/info.xsl create mode 100755 DOCBOOK/xhtml/inline.xsl create mode 100755 DOCBOOK/xhtml/keywords.xsl create mode 100755 DOCBOOK/xhtml/lists.xsl create mode 100755 DOCBOOK/xhtml/maketoc.xsl create mode 100755 DOCBOOK/xhtml/manifest.xsl create mode 100755 DOCBOOK/xhtml/math.xsl create mode 100755 DOCBOOK/xhtml/oldchunker.xsl create mode 100755 DOCBOOK/xhtml/onechunk.xsl create mode 100755 DOCBOOK/xhtml/param.xsl create mode 100755 DOCBOOK/xhtml/pi.xsl create mode 100755 DOCBOOK/xhtml/profile-chunk-code.xsl create mode 100755 DOCBOOK/xhtml/profile-chunk.xsl create mode 100755 DOCBOOK/xhtml/profile-docbook.xsl create mode 100755 DOCBOOK/xhtml/profile-onechunk.xsl create mode 100755 DOCBOOK/xhtml/qandaset.xsl create mode 100755 DOCBOOK/xhtml/refentry.xsl create mode 100755 DOCBOOK/xhtml/sections.xsl create mode 100755 DOCBOOK/xhtml/synop.xsl create mode 100755 DOCBOOK/xhtml/table.xsl create mode 100755 DOCBOOK/xhtml/task.xsl create mode 100755 DOCBOOK/xhtml/titlepage.templates.xml create mode 100755 DOCBOOK/xhtml/titlepage.templates.xsl create mode 100755 DOCBOOK/xhtml/titlepage.xsl create mode 100755 DOCBOOK/xhtml/toc.xsl create mode 100755 DOCBOOK/xhtml/verbatim.xsl create mode 100755 DOCBOOK/xhtml/xref.xsl create mode 100755 DOCBOOK/xhtml5/README create mode 100755 DOCBOOK/xhtml5/chunk.xsl create mode 100755 DOCBOOK/xhtml5/chunkfast.xsl create mode 100755 DOCBOOK/xhtml5/docbook.css.xml create mode 100755 DOCBOOK/xhtml5/docbook.xsl create mode 100755 DOCBOOK/xhtml5/html5-chunk-mods.xsl create mode 100755 DOCBOOK/xhtml5/html5-element-mods.xsl create mode 100755 DOCBOOK/xhtml5/onechunk.xsl create mode 100755 DOCBOOK/xhtml5/profile-chunk.xsl create mode 100755 DOCBOOK/xhtml5/profile-docbook.xsl create mode 100755 DOCBOOK/xhtml5/xhtml-docbook.xsl create mode 100755 DOCBOOK/xhtml5/xhtml-profile-docbook.xsl create mode 100755 DOCBOOK/xhtml5/xhtml2xhtml5.xsl create mode 100755 Vorlagen/DocBookTemplate.stw create mode 100755 Vorlagen/OOO2SBK.STW create mode 100755 Vorlagen/OOO2SDBK.BAU create mode 100755 Vorlagen/Thumbs.db create mode 100755 Vorlagen/epub3/cover/CoverImage.xhtml create mode 100755 Vorlagen/epub3/cover/cover.jpg create mode 100755 Vorlagen/epub3/images/annot-close.png create mode 100755 Vorlagen/epub3/images/annot-open.png create mode 100755 Vorlagen/epub3/images/blank.png create mode 100755 Vorlagen/epub3/images/caution.png create mode 100755 Vorlagen/epub3/images/draft.png create mode 100755 Vorlagen/epub3/images/home.png create mode 100755 Vorlagen/epub3/images/important.png create mode 100755 Vorlagen/epub3/images/next.png create mode 100755 Vorlagen/epub3/images/note.png create mode 100755 Vorlagen/epub3/images/prev.png create mode 100755 Vorlagen/epub3/images/tip.png create mode 100755 Vorlagen/epub3/images/toc-blank.png create mode 100755 Vorlagen/epub3/images/toc-minus.png create mode 100755 Vorlagen/epub3/images/toc-plus.png create mode 100755 Vorlagen/epub3/images/up.png create mode 100755 Vorlagen/epub3/images/warning.png create mode 100755 Vorlagen/ooo2sbk.ott create mode 100755 Webhelp/CreateWebHelp.bat create mode 100755 Webhelp/build.xml create mode 100755 Webhelp/template/common/browserDetect.js create mode 100755 Webhelp/template/common/css/ie.css create mode 100755 Webhelp/template/common/css/positioning.css create mode 100755 Webhelp/template/common/images/Thumbs.db create mode 100755 Webhelp/template/common/images/admon/caution.png create mode 100755 Webhelp/template/common/images/admon/important.png create mode 100755 Webhelp/template/common/images/admon/note.png create mode 100755 Webhelp/template/common/images/admon/tip.png create mode 100755 Webhelp/template/common/images/admon/warning.png create mode 100755 Webhelp/template/common/images/callouts/1.png create mode 100755 Webhelp/template/common/images/callouts/10.png create mode 100755 Webhelp/template/common/images/callouts/11.png create mode 100755 Webhelp/template/common/images/callouts/12.png create mode 100755 Webhelp/template/common/images/callouts/13.png create mode 100755 Webhelp/template/common/images/callouts/14.png create mode 100755 Webhelp/template/common/images/callouts/15.png create mode 100755 Webhelp/template/common/images/callouts/16.png create mode 100755 Webhelp/template/common/images/callouts/17.png create mode 100755 Webhelp/template/common/images/callouts/18.png create mode 100755 Webhelp/template/common/images/callouts/19.png create mode 100755 Webhelp/template/common/images/callouts/2.png create mode 100755 Webhelp/template/common/images/callouts/20.png create mode 100755 Webhelp/template/common/images/callouts/21.png create mode 100755 Webhelp/template/common/images/callouts/22.png create mode 100755 Webhelp/template/common/images/callouts/23.png create mode 100755 Webhelp/template/common/images/callouts/24.png create mode 100755 Webhelp/template/common/images/callouts/25.png create mode 100755 Webhelp/template/common/images/callouts/26.png create mode 100755 Webhelp/template/common/images/callouts/27.png create mode 100755 Webhelp/template/common/images/callouts/28.png create mode 100755 Webhelp/template/common/images/callouts/29.png create mode 100755 Webhelp/template/common/images/callouts/3.png create mode 100755 Webhelp/template/common/images/callouts/30.png create mode 100755 Webhelp/template/common/images/callouts/4.png create mode 100755 Webhelp/template/common/images/callouts/5.png create mode 100755 Webhelp/template/common/images/callouts/6.png create mode 100755 Webhelp/template/common/images/callouts/7.png create mode 100755 Webhelp/template/common/images/callouts/8.png create mode 100755 Webhelp/template/common/images/callouts/9.png create mode 100755 Webhelp/template/common/images/header-bg.gif create mode 100755 Webhelp/template/common/images/header-bg.png create mode 100755 Webhelp/template/common/images/highlight-blue.gif create mode 100755 Webhelp/template/common/images/highlight-yellow.gif create mode 100755 Webhelp/template/common/images/loading.gif create mode 100755 Webhelp/template/common/images/logo.png create mode 100755 Webhelp/template/common/images/next-arrow.png create mode 100755 Webhelp/template/common/images/previous-arrow.png create mode 100755 Webhelp/template/common/images/search-icon.png create mode 100755 Webhelp/template/common/images/showHideTreeIcons.png create mode 100755 Webhelp/template/common/images/sidebar.png create mode 100755 Webhelp/template/common/images/starsSmall.png create mode 100755 Webhelp/template/common/images/toc-icon.png create mode 100755 Webhelp/template/common/jquery/jquery-1.7.2.min.js create mode 100755 Webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js create mode 100755 Webhelp/template/common/jquery/jquery.cookie.js create mode 100755 Webhelp/template/common/jquery/jquery.ui.all.js create mode 100755 Webhelp/template/common/jquery/layout/jquery.layout.js create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-icons_6da8d5_256x240.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-icons_cd0a0a_256x240.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-icons_d8e7f3_256x240.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png create mode 100755 Webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css create mode 100755 Webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css create mode 100755 Webhelp/template/common/jquery/treeview/images/Thumbs.db create mode 100755 Webhelp/template/common/jquery/treeview/images/file.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/folder-closed.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/folder-closed2.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/folder.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/folder2.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/minus.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/plus.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/treeview-black-line.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/treeview-black.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/treeview-default-line.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/treeview-default.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/treeview-famfamfam-line.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/treeview-famfamfam.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/treeview-gray-line.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/treeview-gray.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/treeview-red-line.gif create mode 100755 Webhelp/template/common/jquery/treeview/images/treeview-red.gif create mode 100755 Webhelp/template/common/jquery/treeview/jquery.treeview.css create mode 100755 Webhelp/template/common/jquery/treeview/jquery.treeview.min.js create mode 100755 Webhelp/template/common/main.js create mode 100755 Webhelp/template/common/splitterInit.js create mode 100755 Webhelp/template/favicon.ico create mode 100755 Webhelp/template/search/default.props create mode 100755 Webhelp/template/search/en-us.props create mode 100755 Webhelp/template/search/es-es.props create mode 100755 Webhelp/template/search/ja-jp.props create mode 100755 Webhelp/template/search/nwSearchFnt.js create mode 100755 Webhelp/template/search/punctuation.props create mode 100755 Webhelp/template/search/stemmers/de_stemmer.js create mode 100755 Webhelp/template/search/stemmers/en_stemmer.js create mode 100755 Webhelp/template/search/stemmers/fr_stemmer.js mode change 100644 => 100755 config/fop-conf.xml mode change 100644 => 100755 config/profiles.cfg create mode 100644 lib/Makros/LibreOfficeMakro.txt mode change 100644 => 100755 lib/webhelpindexer.jar create mode 100644 ooo2dbk/HISTORY create mode 100644 ooo2dbk/README.txt create mode 100644 ooo2dbk/VERSION create mode 100644 ooo2dbk/doc/ABOUT.txt create mode 100644 ooo2dbk/doc/TODO.txt create mode 100644 ooo2dbk/doc/howto-use_psmi.txt create mode 100644 ooo2dbk/doc/ooo2dbk.1 create mode 100644 ooo2dbk/docbook-psmi.xsl create mode 100644 ooo2dbk/images/img001.png create mode 100644 ooo2dbk/images/img002.png create mode 100644 ooo2dbk/images/img003.png create mode 100644 ooo2dbk/images/img004.png create mode 100644 ooo2dbk/ole2img.py create mode 100644 ooo2dbk/ooo2dbk-fo.xsl create mode 100755 ooo2dbk/ooo2dbk.odf.xsl create mode 100755 ooo2dbk/ooo2dbk.py create mode 100644 ooo2dbk/ooo2dbk.pyc create mode 100644 ooo2dbk/ooo2dbk.xml create mode 100644 ooo2dbk/ooo2dbk.xsl create mode 100644 ooo2dbk/options.py create mode 100644 ooo2dbk/options.pyc create mode 100644 ooo2dbk/text.xml create mode 100644 xsl/common/gentext.xsl create mode 100644 xsl/common/inline.xsl create mode 100644 xsl/common/l10n.xml create mode 100644 xsl/common/l10n.xsl create mode 100644 xsl/common/param-refdocs.xsl create mode 100644 xsl/common/param.xsl create mode 100644 xsl/common/special-hyph.xsl create mode 100644 xsl/common/titles.xsl create mode 100644 xsl/custom_fo.xsl create mode 100644 xsl/fo.xsl create mode 100644 xsl/fo/admon.xsl create mode 100644 xsl/fo/autotoc.xsl create mode 100644 xsl/fo/block.xsl create mode 100644 xsl/fo/component.xsl create mode 100644 xsl/fo/fo-fix.xsl create mode 100644 xsl/fo/fop.xsl create mode 100644 xsl/fo/fop1.xsl create mode 100644 xsl/fo/formal.xsl create mode 100644 xsl/fo/htmltbl.xsl create mode 100644 xsl/fo/index.xsl create mode 100644 xsl/fo/inline.xsl create mode 100644 xsl/fo/lists.xsl create mode 100644 xsl/fo/pagesetup.xsl create mode 100644 xsl/fo/param-refdocs.xsl create mode 100644 xsl/fo/param-rlsnotes.xsl create mode 100644 xsl/fo/param.xsl create mode 100644 xsl/fo/sections.xsl create mode 100644 xsl/fo/table.xsl create mode 100644 xsl/fo/titlepage.templates.xml create mode 100644 xsl/fo/titlepage.templates.xsl create mode 100644 xsl/fo/titlepage.xsl create mode 100644 xsl/fo/verbatim.xsl create mode 100644 xsl/fo/xref.xsl diff --git a/Ausgabe/common/dbk.css b/Ausgabe/common/dbk.css new file mode 100755 index 0000000..0e92acc --- /dev/null +++ b/Ausgabe/common/dbk.css @@ -0,0 +1,263 @@ + + +body { + color: black; + background: white; + margin-left: 10%; + margin-right: 10%; + font-family: arial, helvetica, sans-serif; + line-height : 120%; +} + +/*Titre du document*/ +h1.title { + font-family: Arial, Helvetica, sans-serif; + font-size: 1.7em; + color: navy; + background: white; + text-align: left; +} + +h2.subtitle { +line-height: 1.2em; +} + + /*Sous-titre du document*/ +h3.subtitle { + font-family: Arial, Helvetica, sans-serif; + font-size: 1.1em; + color: navy; + background: white; + text-align: left; + } + +h3.author { +font-size:1em; +} +div.affiliation, div.bibliomisc{ + font-size: 90%; +} +/* Header definitions */ +h1, h2, h3, h4, h5, h6 { + font-family: arial, helvetica, sans-serif; + color: navy; + background: white; + font-weight: normal; + } + +div.section h1 { + font-size: 1.5em ; + } + +div.section h2 { + font-size: 1.4em ; + padding : 0.5em 0 0; + margin: 1.7em 0 0.8em 0 + } + +div.section h3 { + font-size: 1.1em ; + margin: 1.4em 0 0.7em 0 + } + +div.section h4 { + font-size: 1em ; + margin: 1.1em 0 0.5em 0 + } + +div.section h5 { + font-size: 1em ; + margin: 1em 0 0.5em 0 + } + +div.section h6 { + font-size: 1em ; + } + +hr { + margin : 0; +} + + +/* Tables*/ +table { + background: white; + } + +th { + font-family: arial, helvetica, sans-serif; + background: white; + text-align : left; + + } + +td { + font-family: arial, helvetica, sans-serif; + background: white; + } + +/*Links*/ +a.plain { + text-decoration: none; + } + +a:link { + color: navy; + } + +a:visited { + color: Purple; + } + +a:active { + color: red; + background-color: Yellow; + } +a:hover { + color: navy; + background-color: yellow; + text-decoration : none; + } + +/* Lists*/ + +li { + margin: 1em 0 1em 0; +} +li p { + margin: 0 0 0.3em 0; +} + + +/* Footnotes */ +div.footnotes p { + background: white; + color: black; + font-size: 85%; + margin-left: 0%; + } + + +div.affiliation { } + + +div.abstract p { + margin: 0.5em 2em 0 0; +} + +/*div.toc dl dt, div.list-of-tables dl dt, div.list-of-figures dl dt{ + text-align: left; + font-size: small; + font-weight : normal; + }*/ + +/* Revision History */ +div.REVHISTORY th { /* Used to center the title of the table that */ + /* contains the revision history */ + text-align: center; + } + +/* Sections */ +div.sections p { + text-align: left; + } + +/* Acronyms */ +span.acronym { + font-weight: bold; + } + +/* Foreignphrase */ +i.foreignphrase { + font-weight: normal; + } + +div.legalnotice { + margin: 2em 0 2em 0 +} +div.legalnotice p { + margin: 0; +} +div.abstract { + margin: 2em 0 2em 0 +} +p.copyright{ + margin: 1em 0 1em 0; +} + +/* ProgramListings */ +pre { + font-family: "courier new", courier, monospace; + color: Blue; + background-color : #EAEAEA; + margin: 0.5em 0 0.5em 0; + padding:0.2em; + text-align:left; + font-size: 90%; + } + +tt{ + color: Maroon; + font-family: "courier new", courier, monospace; + font-size: 100%; +} +tt.filename{ + color:blue; + } +tt.replaceable{ + color:green; + } +tt.command{ + font-weight:bold; + } +span.lineannotation { + font-family: arial, helvetica, sans-serif; + color:green; + } +.caption { + font-style : italic; +} +div.note h3 { + color:black; +} +div.note{ + margin:1em 0 0.5em 0; +} +div.toc dl,div.list-of-tables dl, div.list-of-figures dl { + margin: 0.5em 0 0.5em 0; + font-size : small; + font-weight : normal; +} +div.toc, div.list-of-tables, div.list-of-figures { + margin: 2em 0 0.5em 0; + line-height: 100%; + +} +dt { + margin : 0.5em 0 0.5em 0; +} +p { + margin:0.3em 0 0 0; + line-height: 130%; + text-align : left; + font-size: 90%; +} +.blockquote { + line-height: 120%; + font-size : small; + margin: 1em 0 1em 0; +} +li{ + margin:0.2em 0 0.2em 0; +} +div.footpage { + text-align : center; + font-size : small; +} + +/* Misc (te) */ + +.strong { + font-weight:bold; + +} \ No newline at end of file diff --git a/Ausgabe/common/dbk_html_2.css b/Ausgabe/common/dbk_html_2.css new file mode 100755 index 0000000..85a889f --- /dev/null +++ b/Ausgabe/common/dbk_html_2.css @@ -0,0 +1,277 @@ + + +body { + color: black; + background: white; + margin-left: 10%; + margin-right: 10%; + /* font-family: arial, helvetica, sans-serif; */ + font-family: 'Roboto', sans-serif; + line-height : 120%; +} + +/*Titre du document*/ +h1.title { + font-family: 'Roboto', sans-serif; + font-weight: 600; + font-size: 1.7em; + color: navy; + background: white; + text-align: left; +} + +h2.subtitle { +line-height: 1.2em; +} + + /*Sous-titre du document*/ +h3.subtitle { + font-family: 'Roboto', sans-serif; + font-size: 1.1em; + color: navy; + background: white; + text-align: left; + } + +h3.author { +font-size:1em; +} +div.affiliation, div.bibliomisc{ + font-size: 90%; +} +/* Header definitions */ +h1, h2, h3, h4, h5, h6 { + font-family: 'Roboto', sans-serif; + color: navy; + background: white; + font-weight: normal; + } + +div.section h1 { + font-size: 1.5em ; + + } + +div.section h2 { + font-size: 1.4em ; + font-weight: 400; + padding : 0.5em 0 0; + margin: 1.7em 0 0.8em 0 + } + +div.section h3 { + font-size: 1.1em ; + margin: 1.4em 0 0.7em 0 + } + +div.section h4 { + font-size: 1em ; + margin: 1.1em 0 0.5em 0 + } + +div.section h5 { + font-size: 1em ; + margin: 1em 0 0.5em 0 + } + +div.section h6 { + font-size: 1em ; + } + +hr { + margin : 0; +} + + +/* Tables*/ +table { + background: white; + } + +th { + font-family: 'Roboto', sans-serif; + background: white; + text-align : left; + + } + +td { + font-family: 'Roboto', sans-serif; + background: white; + } + +/*Links*/ +a.plain { + text-decoration: none; + } + +a:link { + color: navy; + } + +a:visited { + color: #4285F4; + } + +a:active { + color: red; + background-color: Yellow; + } +a:hover { + color: navy; + background-color: yellow; + text-decoration : none; + } + +div.toc a { +color: #4285F4; +text-decoration : none; +} + +div.list-of-figures a { +color: #4285F4; +text-decoration : none; +} + +/* Lists*/ + +li { + margin: 1em 0 1em 0; +} +li p { + margin: 0 0 0.3em 0; +} + + +/* Footnotes */ +div.footnotes p { + background: white; + color: black; + font-size: 85%; + margin-left: 0%; + } + + +div.affiliation { } + + +div.abstract p { + margin: 0.5em 2em 0 0; +} + +/*div.toc dl dt, div.list-of-tables dl dt, div.list-of-figures dl dt{ + text-align: left; + font-size: small; + font-weight : normal; + }*/ + +/* Revision History */ +div.REVHISTORY th { /* Used to center the title of the table that */ + /* contains the revision history */ + text-align: center; + } + +/* Sections */ +div.sections p { + text-align: left; + } + +/* Acronyms */ +span.acronym { + font-weight: bold; + } + +/* Foreignphrase */ +i.foreignphrase { + font-weight: normal; + } + +div.legalnotice { + margin: 2em 0 2em 0 +} +div.legalnotice p { + margin: 0; +} +div.abstract { + margin: 2em 0 2em 0 +} +p.copyright{ + margin: 1em 0 1em 0; +} + +/* ProgramListings */ +pre { + font-family: "courier new", courier, monospace; + color: Blue; + background-color : #EAEAEA; + margin: 0.5em 0 0.5em 0; + padding:0.2em; + text-align:left; + font-size: 90%; + } + +tt{ + color: Maroon; + font-family: "courier new", courier, monospace; + font-size: 100%; +} +tt.filename{ + color:blue; + } +tt.replaceable{ + color:green; + } +tt.command{ + font-weight:bold; + } +span.lineannotation { + font-family: 'Roboto', sans-serif; + color:green; + } +.caption { + font-style : italic; +} +div.note h3 { + color:black; +} +div.note{ + margin:1em 0 0.5em 0; +} +div.toc dl,div.list-of-tables dl, div.list-of-figures dl { + margin: 0.5em 0 0.5em 0; + font-size : small; + font-weight : normal; +} +div.toc, div.list-of-tables, div.list-of-figures { + margin: 2em 0 0.5em 0; + line-height: 100%; + +} +dt { + margin : 0.5em 0 0.5em 0; +} +p { + margin:0.3em 0 0 0; + line-height: 130%; + text-align : left; + font-size: 90%; +} +.blockquote { + line-height: 120%; + font-size : small; + margin: 1em 0 1em 0; +} +li{ + margin:0.2em 0 0.2em 0; +} +div.footpage { + text-align : center; + font-size : small; +} + +/* Misc (te) */ + +.strong { + font-weight:800; + +} \ No newline at end of file diff --git a/Ausgabe/common/dbk_html_3.css b/Ausgabe/common/dbk_html_3.css new file mode 100755 index 0000000..2fb2ebf --- /dev/null +++ b/Ausgabe/common/dbk_html_3.css @@ -0,0 +1,337 @@ + + +body { + color: black; + background: white; + margin-left: 10%; + margin-right: 30%; + font-family: arial, helvetica, sans-serif; + line-height : 130%; +} + +/*Titre du document*/ +h1.title { + font-family: Arial, Helvetica, sans-serif; + font-size: 1.7em; + color: navy; + background: white; + text-align: left; +} + +h2.subtitle { +line-height: 1.2em; +} + + /*Sous-titre du document*/ +h3.subtitle { + font-family: Arial, Helvetica, sans-serif; + font-size: 1.1em; + color: navy; + background: white; + text-align: left; + } + +h3.author { +font-size:1em; +} +div.affiliation, div.bibliomisc{ + font-size: 90%; +} +/* Header definitions */ +h1, h2, h3, h4, h5, h6 { + font-family: arial, helvetica, sans-serif; + color: navy; + background: white; + font-weight: normal; + } + +div.section h1 { + font-size: 1.5em ; + } + +div.section h2 { + font-size: 1.4em ; + padding : 0.5em 0 0; + margin: 1.7em 0 0.8em 0 + } + +div.section h3 { + font-size: 1.1em ; + margin: 1.4em 0 0.7em 0 + } + +div.section h4 { + font-size: 1em ; + margin: 1.1em 0 0.5em 0 + } + +div.section h5 { + font-size: 1em ; + margin: 1em 0 0.5em 0 + } + +div.section h6 { + font-size: 1em ; + } + +hr { + margin : 0; +} + + +/* Tables*/ + +.informaltable table { +background: white; + border-collapse: collapse; + width: 80%; +} + +.informaltable td, .informaltable th { + border: 1px solid #ddd; + padding: 8px; +} + +.informaltable tr:nth-child(even){background-color: #f2f2f2;} + +.informaltable tr:hover {background-color: #ddd;} + +.informaltable th { + padding-top: 12px; + padding-bottom: 12px; + text-align: left; + background-color: #4CAF50; + color: white; +} +.table-contents table { +background: white; +border-collapse: collapse; +width: 80%; +} +.table-contents td, .table-contents th { + border: 1px solid #ddd; + padding: 8px; +} + + +table { + background: white; + } + +th{ + font-family: arial, helvetica, sans-serif; + background: white; + text-align : left; + + } + +td { + font-family: arial, helvetica, sans-serif; + background: white; + } + +#dltable { + font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; + border-collapse: collapse; + width: 100%; +} + +#dltable td, #dltable th { + border: 1px solid #ddd; + padding: 8px; +} + + +#dltable tr:nth-child(even){background-color: #f2f2f2;} + +#dltable tr:hover {background-color: #ddd;} + +#dltable th { + padding-top: 12px; + padding-bottom: 12px; + text-align: left; + background-color: #4CAF50; + color: white; +} + +/*Links*/ +a.plain { + text-decoration: none; + } + +a:link { + color: navy; + } + +a:visited { + color: Purple; + } + +a:active { + color: red; + background-color: Yellow; + } +a:hover { + color: navy; + background-color: yellow; + text-decoration : none; + } + +/* Lists*/ + +li { + margin: 1em 0 1em 0; +} +li p { + margin: 0 0 0.3em 0; +} + + +/* Footnotes */ +div.footnotes p { + background: white; + color: black; + font-size: 85%; + margin-left: 0%; + } + + +div.affiliation { } + + +div.abstract p { + margin: 0.5em 2em 0 0; +} + +/*div.toc dl dt, div.list-of-tables dl dt, div.list-of-figures dl dt{ + text-align: left; + font-size: small; + font-weight : normal; + }*/ + +/* Revision History */ +div.REVHISTORY th { /* Used to center the title of the table that */ + /* contains the revision history */ + text-align: center; + } + +/* Sections */ +div.sections p { + text-align: left; + } + +/* Acronyms */ +span.acronym { + font-weight: bold; + } + +/* Foreignphrase */ +i.foreignphrase { + font-weight: normal; + } + +div.legalnotice { + margin: 2em 0 2em 0 +} +div.legalnotice p { + margin: 0; +} +div.abstract { + margin: 2em 0 2em 0 +} +p.copyright{ + margin: 1em 0 1em 0; +} + +/* ProgramListings */ +pre { + font-family: "courier new", courier, monospace; + color: Blue; + background-color : #EAEAEA; + margin: 0.5em 0 0.5em 0; + padding:0.2em; + text-align:left; + font-size: 90%; + } +pre.programlisting { + font-size: 120%; +} + +tt{ + color: Maroon; + font-family: "courier new", courier, monospace; + font-size: 100%; +} +tt.filename{ + color:blue; + } +tt.replaceable{ + color:green; + } +tt.command{ + font-weight:bold; + } +span.lineannotation { + font-family: arial, helvetica, sans-serif; + color:green; + } +.caption { + font-style : italic; +} +div.note h3 { + color:black; +} +div.note{ + margin:1em 0 0.5em 0; +} +div.toc dl,div.list-of-tables dl, div.list-of-figures dl { + margin: 0.5em 0 0.5em 0; + font-size : small; + font-weight : normal; +} +div.toc, div.list-of-tables, div.list-of-figures { + margin: 2em 0 0.5em 0; + line-height: 100%; + +} +dt { + margin : 0.5em 0 0.5em 0; +} +p { + margin:0.6em 0 0 0; + line-height: 150%; + text-align : left; + font-size: 100%; +} +.blockquote { + line-height: 120%; + font-size : small; + margin: 1em 0 1em 0; +} +li{ + margin:0.2em 0 0.2em 0; +} +div.footpage { + text-align : center; + font-size : small; +} + +/* Misc (te) */ + +.strong { + font-weight:bold; + +} + +.computeroutput { +color: blue; +font-size: 120%; +font-family: "Courier 10 Pitch", Courier, monospace; + +} + +.filename { +color: blue; +font-size: 120%; +font-family: "Courier 10 Pitch", Courier, monospace; +} \ No newline at end of file diff --git a/Ausgabe/common/epub.css.xml b/Ausgabe/common/epub.css.xml new file mode 100644 index 0000000..f8bde6b --- /dev/null +++ b/Ausgabe/common/epub.css.xml @@ -0,0 +1,12 @@ + + diff --git a/Ausgabe/common/fancybox/blank.gif b/Ausgabe/common/fancybox/blank.gif new file mode 100755 index 0000000000000000000000000000000000000000..35d42e808f0a8017b8d52a06be2f8fec0b466a66 GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ literal 0 HcmV?d00001 diff --git a/Ausgabe/common/fancybox/fancybox_loading.gif b/Ausgabe/common/fancybox/fancybox_loading.gif new file mode 100755 index 0000000000000000000000000000000000000000..a03a40c097ee728709f65d4ea7397903a389d484 GIT binary patch literal 6567 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 literal 0 HcmV?d00001 diff --git a/Ausgabe/common/fancybox/fancybox_loading@2x.gif b/Ausgabe/common/fancybox/fancybox_loading@2x.gif new file mode 100755 index 0000000000000000000000000000000000000000..9205aeb09fffa6b571b4c6beee30b18400829c03 GIT binary patch literal 13984 zcmdtpX;f2(+Ar{(ot=4L0|COk2@%3*z%UvmBmq&;1`CRoVn8Z`pb=0JsqPHSQ$#>O zlpu(Ls8JA6P{W{NYc1kXYOM{3ii(OuTWdX>n;y^c^`4${?|t8U*In!0e1XN{3&Z}c z|NnWOELa%o9}vd{xWEAbfIvv4P>F@&!Tv!ui=7ak(7eBSVtj&O!iZcJ$@AuAre}7Z z=&Y=+yfJd)^~={(GPR_rBz#f$m9MV2ySk^Qq_(%U+gRDetcu|W@^i9tde8K}d;4zc z*;M_$`a5^;KzK-%rxJ&X2QLn?o!AL$6PjC^Cmu{N%o&l(BYD2O%*~mdU7huH^*3(a zc>T+3DxF$VRuaB6{L0lU?w;r>m0w%gd*#Kgw%=ks&6=k%WIeK+$C_{YoPuau=B zk)Mi!B_ZCPTr9@$b%);|5($_Gxc~7zfBcvLenz)X7Uph+@%iqcoEz9Md`R*#z-GR2 zt8dXVpW?ZVIZ+-Gx=Ycb(>>SzCy`;_Wwyar_cK7Wh&O zrlIseae92AkZ50;y?W<7KWti>V~)@`f6qLxhBEd3d4LHAEHdDkiYOs-Y)E{V> zW6~D2Vh>eoeqwMQvwM#Fl3qfgiFP)WjF1Bwg^0QQ6y5A-#_f4rQ>{ZN!bL)0FKcTj zmtREz>uarK!Iv6s=Pl9&3g{3SgfGt;U2si=UkR|9DQrcaG60u7isr@<0SI=eK&Fo^ zD5be?9#mQCKQjUyhnGl(MIkd-Q|7a?DLlO$K=fO7R5j{NxbUU>FJ2r>(*il^6xhiY z>VYN#BOC1&Nbi>(V6PW1W^Qu2@}*POh)!lqE&*prUJD90A6Ur~1Cn9C3_=KY-6?@2 z+kBkHC|pv+ec`({{OnGtI;_W%MbkT22*IID5#$9S zXvQ)C7@*nAY@T$WGDj4Gs1X2WF#xqhL=24KkO8B4T{q2%dO;l3^!ANQqQmk-HIRco zYYlba_0G!GuXnx?`&;QJn|JA-4k2QTD;$VyMqM~oZ3Y1Sv_
bMxRL(pijsY@019xTxeF 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 literal 0 HcmV?d00001 diff --git a/Ausgabe/common/fancybox/fancybox_overlay.png b/Ausgabe/common/fancybox/fancybox_overlay.png new file mode 100755 index 0000000000000000000000000000000000000000..a4391396a9d6b6d7ff3b781f16904732fea40bdd GIT binary patch literal 1003 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 S1P^~LSQ@H2DwWEJcmD(3qHSjY literal 0 HcmV?d00001 diff --git a/Ausgabe/common/fancybox/helpers/fancybox_buttons.png b/Ausgabe/common/fancybox/helpers/fancybox_buttons.png new file mode 100755 index 0000000000000000000000000000000000000000..07872072704114b91681e2e6f9697ce1521b64d2 GIT binary patch literal 1080 zcmeAS@N?(olHy`uVBq!ia0vp^Q6S903?%u>HW~n_y#YQUu0R?WSg~RSP%1Go5lD7* zbwQLpe*757ICA6&kW5WYZD?o!GK`Ilf#ib+545$lfs7|lo|Kf7golSGBqXd|yY}6? zcgK$(2by;H@Zldne!PGGe#3?hK*r6RH}~(~f9%+?@87@w1cMhZUi|v?>-O#24<9~! z_3G8{-@iY6_yAP-?b|mX`_G?0|Ns97D*W>0%coDDfKr0iiH$(}%u0g%f*BZ@S=qVy z1VzPVE?Tl=<;G1rjvPIE`Ra{3j~;*c^fm05 z&}0S%rZ1i@jv*CsZ>PnU&vFoGYh)GcNLbUk(XcbqE{E69EG*srz@Pu~uR3~FiyV{r zKBIe^jd`)*o5yoLKHYF_zn{1F51Du38}jGBJ=VP0ecMa>bF+9K`W*ijXIeka_uU8A z*POd= z37@}bnmsYU%ylPY9@}5u*!t|)yNM@Xh;kTr{CTM%UpgJrq;^z1sCv#Ff{JcXH0QycQ=j-SpqK)3sqC&x%d{>uv#p4L4W% zmLHbjTwSCP^ID(pX0NGG_)`a^m0!6nD|Dt#Dvad0vf#zR8xqRnG{y^pfbH6Kc3;s;HW4p`heoW(jKH<7AtsEly z$M&AE{dQl2(Z%x9#dt|gSIbWy<4Xjtobc#5EmRoE7k>Wa#EFw7ELWat{GexP^oT7` zWJjo_z_Z6E{wwPO!J9zw9U;?iErx;1Arv+D^&N20C4AEY>{Ek`B=i66zn9m4$^{AUqIL)kd`}_|Y zirXZ4+!kL{DD1t`cieXN&YnLTl;^yVdNTEd730M4<~70>Dwl5dOP&;N_1dH)?&X@x qGoDO6XT>`g#8(4K<@tG^_7CJ-u|B8Hp&OWk7(8A5T-G@yGywqna}dM; literal 0 HcmV?d00001 diff --git a/Ausgabe/common/fancybox/helpers/jquery.fancybox-buttons.css b/Ausgabe/common/fancybox/helpers/jquery.fancybox-buttons.css new file mode 100755 index 0000000..a26273a --- /dev/null +++ b/Ausgabe/common/fancybox/helpers/jquery.fancybox-buttons.css @@ -0,0 +1,97 @@ +#fancybox-buttons { + position: fixed; + left: 0; + width: 100%; + z-index: 8050; +} + +#fancybox-buttons.top { + top: 10px; +} + +#fancybox-buttons.bottom { + bottom: 10px; +} + +#fancybox-buttons ul { + display: block; + width: 166px; + height: 30px; + margin: 0 auto; + padding: 0; + list-style: none; + border: 1px solid #111; + border-radius: 3px; + -webkit-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); + -moz-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); + box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); + background: rgb(50,50,50); + background: -moz-linear-gradient(top, rgb(68,68,68) 0%, rgb(52,52,52) 50%, rgb(41,41,41) 50%, rgb(51,51,51) 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(68,68,68)), color-stop(50%,rgb(52,52,52)), color-stop(50%,rgb(41,41,41)), color-stop(100%,rgb(51,51,51))); + background: -webkit-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); + background: -o-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); + background: -ms-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); + background: linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 ); +} + +#fancybox-buttons ul li { + float: left; + margin: 0; + padding: 0; +} + +#fancybox-buttons a { + display: block; + width: 30px; + height: 30px; + text-indent: -9999px; + background-color: transparent; + background-image: url('fancybox_buttons.png'); + background-repeat: no-repeat; + outline: none; + opacity: 0.8; +} + +#fancybox-buttons a:hover { + opacity: 1; +} + +#fancybox-buttons a.btnPrev { + background-position: 5px 0; +} + +#fancybox-buttons a.btnNext { + background-position: -33px 0; + border-right: 1px solid #3e3e3e; +} + +#fancybox-buttons a.btnPlay { + background-position: 0 -30px; +} + +#fancybox-buttons a.btnPlayOn { + background-position: -30px -30px; +} + +#fancybox-buttons a.btnToggle { + background-position: 3px -60px; + border-left: 1px solid #111; + border-right: 1px solid #3e3e3e; + width: 35px +} + +#fancybox-buttons a.btnToggleOn { + background-position: -27px -60px; +} + +#fancybox-buttons a.btnClose { + border-left: 1px solid #111; + width: 35px; + background-position: -56px 0px; +} + +#fancybox-buttons a.btnDisabled { + opacity : 0.4; + cursor: default; +} \ No newline at end of file diff --git a/Ausgabe/common/fancybox/helpers/jquery.fancybox-buttons.js b/Ausgabe/common/fancybox/helpers/jquery.fancybox-buttons.js new file mode 100755 index 0000000..fd8b955 --- /dev/null +++ b/Ausgabe/common/fancybox/helpers/jquery.fancybox-buttons.js @@ -0,0 +1,122 @@ + /*! + * Buttons helper for fancyBox + * version: 1.0.5 (Mon, 15 Oct 2012) + * @requires fancyBox v2.0 or later + * + * Usage: + * $(".fancybox").fancybox({ + * helpers : { + * buttons: { + * position : 'top' + * } + * } + * }); + * + */ +(function ($) { + //Shortcut for fancyBox object + var F = $.fancybox; + + //Add helper object + F.helpers.buttons = { + defaults : { + skipSingle : false, // disables if gallery contains single image + position : 'top', // 'top' or 'bottom' + tpl : '

' + }, + + list : null, + buttons: null, + + beforeLoad: function (opts, obj) { + //Remove self if gallery do not have at least two items + + if (opts.skipSingle && obj.group.length < 2) { + obj.helpers.buttons = false; + obj.closeBtn = true; + + return; + } + + //Increase top margin to give space for buttons + obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30; + }, + + onPlayStart: function () { + if (this.buttons) { + this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn'); + } + }, + + onPlayEnd: function () { + if (this.buttons) { + this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn'); + } + }, + + afterShow: function (opts, obj) { + var buttons = this.buttons; + + if (!buttons) { + this.list = $(opts.tpl).addClass(opts.position).appendTo('body'); + + buttons = { + prev : this.list.find('.btnPrev').click( F.prev ), + next : this.list.find('.btnNext').click( F.next ), + play : this.list.find('.btnPlay').click( F.play ), + toggle : this.list.find('.btnToggle').click( F.toggle ), + close : this.list.find('.btnClose').click( F.close ) + } + } + + //Prev + if (obj.index > 0 || obj.loop) { + buttons.prev.removeClass('btnDisabled'); + } else { + buttons.prev.addClass('btnDisabled'); + } + + //Next / Play + if (obj.loop || obj.index < obj.group.length - 1) { + buttons.next.removeClass('btnDisabled'); + buttons.play.removeClass('btnDisabled'); + + } else { + buttons.next.addClass('btnDisabled'); + buttons.play.addClass('btnDisabled'); + } + + this.buttons = buttons; + + this.onUpdate(opts, obj); + }, + + onUpdate: function (opts, obj) { + var toggle; + + if (!this.buttons) { + return; + } + + toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn'); + + //Size toggle button + if (obj.canShrink) { + toggle.addClass('btnToggleOn'); + + } else if (!obj.canExpand) { + toggle.addClass('btnDisabled'); + } + }, + + beforeClose: function () { + if (this.list) { + this.list.remove(); + } + + this.list = null; + this.buttons = null; + } + }; + +}(jQuery)); diff --git a/Ausgabe/common/fancybox/helpers/jquery.fancybox-media.js b/Ausgabe/common/fancybox/helpers/jquery.fancybox-media.js new file mode 100755 index 0000000..3584c8a --- /dev/null +++ b/Ausgabe/common/fancybox/helpers/jquery.fancybox-media.js @@ -0,0 +1,199 @@ +/*! + * Media helper for fancyBox + * version: 1.0.6 (Fri, 14 Jun 2013) + * @requires fancyBox v2.0 or later + * + * Usage: + * $(".fancybox").fancybox({ + * helpers : { + * media: true + * } + * }); + * + * Set custom URL parameters: + * $(".fancybox").fancybox({ + * helpers : { + * media: { + * youtube : { + * params : { + * autoplay : 0 + * } + * } + * } + * } + * }); + * + * Or: + * $(".fancybox").fancybox({, + * helpers : { + * media: true + * }, + * youtube : { + * autoplay: 0 + * } + * }); + * + * Supports: + * + * Youtube + * http://www.youtube.com/watch?v=opj24KnzrWo + * http://www.youtube.com/embed/opj24KnzrWo + * http://youtu.be/opj24KnzrWo + * http://www.youtube-nocookie.com/embed/opj24KnzrWo + * Vimeo + * http://vimeo.com/40648169 + * http://vimeo.com/channels/staffpicks/38843628 + * http://vimeo.com/groups/surrealism/videos/36516384 + * http://player.vimeo.com/video/45074303 + * Metacafe + * http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/ + * http://www.metacafe.com/watch/7635964/ + * Dailymotion + * http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people + * Twitvid + * http://twitvid.com/QY7MD + * Twitpic + * http://twitpic.com/7p93st + * Instagram + * http://instagr.am/p/IejkuUGxQn/ + * http://instagram.com/p/IejkuUGxQn/ + * Google maps + * http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17 + * http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 + * http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56 + */ +(function ($) { + "use strict"; + + //Shortcut for fancyBox object + var F = $.fancybox, + format = function( url, rez, params ) { + params = params || ''; + + if ( $.type( params ) === "object" ) { + params = $.param(params, true); + } + + $.each(rez, function(key, value) { + url = url.replace( '$' + key, value || '' ); + }); + + if (params.length) { + url += ( url.indexOf('?') > 0 ? '&' : '?' ) + params; + } + + return url; + }; + + //Add helper object + F.helpers.media = { + defaults : { + youtube : { + matcher : /(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i, + params : { + autoplay : 1, + autohide : 1, + fs : 1, + rel : 0, + hd : 1, + wmode : 'opaque', + enablejsapi : 1 + }, + type : 'iframe', + url : '//www.youtube.com/embed/$3' + }, + vimeo : { + matcher : /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/, + params : { + autoplay : 1, + hd : 1, + show_title : 1, + show_byline : 1, + show_portrait : 0, + fullscreen : 1 + }, + type : 'iframe', + url : '//player.vimeo.com/video/$1' + }, + metacafe : { + matcher : /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/, + params : { + autoPlay : 'yes' + }, + type : 'swf', + url : function( rez, params, obj ) { + obj.swf.flashVars = 'playerVars=' + $.param( params, true ); + + return '//www.metacafe.com/fplayer/' + rez[1] + '/.swf'; + } + }, + dailymotion : { + matcher : /dailymotion.com\/video\/(.*)\/?(.*)/, + params : { + additionalInfos : 0, + autoStart : 1 + }, + type : 'swf', + url : '//www.dailymotion.com/swf/video/$1' + }, + twitvid : { + matcher : /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i, + params : { + autoplay : 0 + }, + type : 'iframe', + url : '//www.twitvid.com/embed.php?guid=$1' + }, + twitpic : { + matcher : /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i, + type : 'image', + url : '//twitpic.com/show/full/$1/' + }, + instagram : { + matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, + type : 'image', + url : '//$1/p/$2/media/?size=l' + }, + google_maps : { + matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i, + type : 'iframe', + url : function( rez ) { + return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed'); + } + } + }, + + beforeLoad : function(opts, obj) { + var url = obj.href || '', + type = false, + what, + item, + rez, + params; + + for (what in opts) { + if (opts.hasOwnProperty(what)) { + item = opts[ what ]; + rez = url.match( item.matcher ); + + if (rez) { + type = item.type; + params = $.extend(true, {}, item.params, obj[ what ] || ($.isPlainObject(opts[ what ]) ? opts[ what ].params : null)); + + url = $.type( item.url ) === "function" ? item.url.call( this, rez, params, obj ) : format( item.url, rez, params ); + + break; + } + } + } + + if (type) { + obj.href = url; + obj.type = type; + + obj.autoHeight = false; + } + } + }; + +}(jQuery)); \ No newline at end of file diff --git a/Ausgabe/common/fancybox/helpers/jquery.fancybox-thumbs.css b/Ausgabe/common/fancybox/helpers/jquery.fancybox-thumbs.css new file mode 100755 index 0000000..63d2943 --- /dev/null +++ b/Ausgabe/common/fancybox/helpers/jquery.fancybox-thumbs.css @@ -0,0 +1,55 @@ +#fancybox-thumbs { + position: fixed; + left: 0; + width: 100%; + overflow: hidden; + z-index: 8050; +} + +#fancybox-thumbs.bottom { + bottom: 2px; +} + +#fancybox-thumbs.top { + top: 2px; +} + +#fancybox-thumbs ul { + position: relative; + list-style: none; + margin: 0; + padding: 0; +} + +#fancybox-thumbs ul li { + float: left; + padding: 1px; + opacity: 0.5; +} + +#fancybox-thumbs ul li.active { + opacity: 0.75; + padding: 0; + border: 1px solid #fff; +} + +#fancybox-thumbs ul li:hover { + opacity: 1; +} + +#fancybox-thumbs ul li a { + display: block; + position: relative; + overflow: hidden; + border: 1px solid #222; + background: #111; + outline: none; +} + +#fancybox-thumbs ul li img { + display: block; + position: relative; + border: 0; + padding: 0; + max-width: none; +} \ No newline at end of file diff --git a/Ausgabe/common/fancybox/helpers/jquery.fancybox-thumbs.js b/Ausgabe/common/fancybox/helpers/jquery.fancybox-thumbs.js new file mode 100755 index 0000000..5db3d4a --- /dev/null +++ b/Ausgabe/common/fancybox/helpers/jquery.fancybox-thumbs.js @@ -0,0 +1,162 @@ + /*! + * Thumbnail helper for fancyBox + * version: 1.0.7 (Mon, 01 Oct 2012) + * @requires fancyBox v2.0 or later + * + * Usage: + * $(".fancybox").fancybox({ + * helpers : { + * thumbs: { + * width : 50, + * height : 50 + * } + * } + * }); + * + */ +(function ($) { + //Shortcut for fancyBox object + var F = $.fancybox; + + //Add helper object + F.helpers.thumbs = { + defaults : { + width : 50, // thumbnail width + height : 50, // thumbnail height + position : 'bottom', // 'top' or 'bottom' + source : function ( item ) { // function to obtain the URL of the thumbnail image + var href; + + if (item.element) { + href = $(item.element).find('img').attr('src'); + } + + if (!href && item.type === 'image' && item.href) { + href = item.href; + } + + return href; + } + }, + + wrap : null, + list : null, + width : 0, + + init: function (opts, obj) { + var that = this, + list, + thumbWidth = opts.width, + thumbHeight = opts.height, + thumbSource = opts.source; + + //Build list structure + list = ''; + + for (var n = 0; n < obj.group.length; n++) { + list += '
  • '; + } + + this.wrap = $('
    ').addClass(opts.position).appendTo('body'); + this.list = $('
      ' + list + '
    ').appendTo(this.wrap); + + //Load each thumbnail + $.each(obj.group, function (i) { + var href = thumbSource( obj.group[ i ] ); + + if (!href) { + return; + } + + $("").load(function () { + var width = this.width, + height = this.height, + widthRatio, heightRatio, parent; + + if (!that.list || !width || !height) { + return; + } + + //Calculate thumbnail width/height and center it + widthRatio = width / thumbWidth; + heightRatio = height / thumbHeight; + + parent = that.list.children().eq(i).find('a'); + + if (widthRatio >= 1 && heightRatio >= 1) { + if (widthRatio > heightRatio) { + width = Math.floor(width / heightRatio); + height = thumbHeight; + + } else { + width = thumbWidth; + height = Math.floor(height / widthRatio); + } + } + + $(this).css({ + width : width, + height : height, + top : Math.floor(thumbHeight / 2 - height / 2), + left : Math.floor(thumbWidth / 2 - width / 2) + }); + + parent.width(thumbWidth).height(thumbHeight); + + $(this).hide().appendTo(parent).fadeIn(300); + + }).attr('src', href); + }); + + //Set initial width + this.width = this.list.children().eq(0).outerWidth(true); + + this.list.width(this.width * (obj.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5))); + }, + + beforeLoad: function (opts, obj) { + //Remove self if gallery do not have at least two items + if (obj.group.length < 2) { + obj.helpers.thumbs = false; + + return; + } + + //Increase bottom margin to give space for thumbs + obj.margin[ opts.position === 'top' ? 0 : 2 ] += ((opts.height) + 15); + }, + + afterShow: function (opts, obj) { + //Check if exists and create or update list + if (this.list) { + this.onUpdate(opts, obj); + + } else { + this.init(opts, obj); + } + + //Set active element + this.list.children().removeClass('active').eq(obj.index).addClass('active'); + }, + + //Center list + onUpdate: function (opts, obj) { + if (this.list) { + this.list.stop(true).animate({ + 'left': Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5)) + }, 150); + } + }, + + beforeClose: function () { + if (this.wrap) { + this.wrap.remove(); + } + + this.wrap = null; + this.list = null; + this.width = 0; + } + } + +}(jQuery)); \ No newline at end of file diff --git a/Ausgabe/common/fancybox/jquery.fancybox.css b/Ausgabe/common/fancybox/jquery.fancybox.css new file mode 100755 index 0000000..9bfe936 --- /dev/null +++ b/Ausgabe/common/fancybox/jquery.fancybox.css @@ -0,0 +1,895 @@ +body.compensate-for-scrollbar { + overflow: hidden; +} + +.fancybox-active { + height: auto; +} + +.fancybox-is-hidden { + left: -9999px; + margin: 0; + position: absolute !important; + top: -9999px; + visibility: hidden; +} + +.fancybox-container { + -webkit-backface-visibility: hidden; + height: 100%; + left: 0; + outline: none; + position: fixed; + -webkit-tap-highlight-color: transparent; + top: 0; + -ms-touch-action: manipulation; + touch-action: manipulation; + transform: translateZ(0); + width: 100%; + z-index: 99992; +} + +.fancybox-container * { + box-sizing: border-box; +} + +.fancybox-outer, +.fancybox-inner, +.fancybox-bg, +.fancybox-stage { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; +} + +.fancybox-outer { + -webkit-overflow-scrolling: touch; + overflow-y: auto; +} + +.fancybox-bg { + background: rgb(30, 30, 30); + opacity: 0; + transition-duration: inherit; + transition-property: opacity; + transition-timing-function: cubic-bezier(.47, 0, .74, .71); +} + +.fancybox-is-open .fancybox-bg { + opacity: .9; + transition-timing-function: cubic-bezier(.22, .61, .36, 1); +} + +.fancybox-infobar, +.fancybox-toolbar, +.fancybox-caption, +.fancybox-navigation .fancybox-button { + direction: ltr; + opacity: 0; + position: absolute; + transition: opacity .25s ease, visibility 0s ease .25s; + visibility: hidden; + z-index: 99997; +} + +.fancybox-show-infobar .fancybox-infobar, +.fancybox-show-toolbar .fancybox-toolbar, +.fancybox-show-caption .fancybox-caption, +.fancybox-show-nav .fancybox-navigation .fancybox-button { + opacity: 1; + transition: opacity .25s ease 0s, visibility 0s ease 0s; + visibility: visible; +} + +.fancybox-infobar { + color: #ccc; + font-size: 13px; + -webkit-font-smoothing: subpixel-antialiased; + height: 44px; + left: 0; + line-height: 44px; + min-width: 44px; + mix-blend-mode: difference; + padding: 0 10px; + pointer-events: none; + top: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.fancybox-toolbar { + right: 0; + top: 0; +} + +.fancybox-stage { + direction: ltr; + overflow: visible; + transform: translateZ(0); + z-index: 99994; +} + +.fancybox-is-open .fancybox-stage { + overflow: hidden; +} + +.fancybox-slide { + -webkit-backface-visibility: hidden; /* Using without prefix would break IE11 */ + display: none; + height: 100%; + left: 0; + outline: none; + overflow: auto; + -webkit-overflow-scrolling: touch; + padding: 44px; + position: absolute; + text-align: center; + top: 0; + transition-property: transform, opacity; + white-space: normal; + width: 100%; + z-index: 99994; +} + +.fancybox-slide::before { + content: ''; + display: inline-block; + font-size: 0; + height: 100%; + vertical-align: middle; + width: 0; +} + +.fancybox-is-sliding .fancybox-slide, +.fancybox-slide--previous, +.fancybox-slide--current, +.fancybox-slide--next { + display: block; +} + +.fancybox-slide--image { + overflow: hidden; + padding: 44px 0; +} + +.fancybox-slide--image::before { + display: none; +} + +.fancybox-slide--html { + padding: 6px; +} + +.fancybox-content { + background: #fff; + display: inline-block; + margin: 0; + max-width: 100%; + overflow: auto; + -webkit-overflow-scrolling: touch; + padding: 44px; + position: relative; + text-align: left; + vertical-align: middle; +} + +.fancybox-slide--image .fancybox-content { + animation-timing-function: cubic-bezier(.5, 0, .14, 1); + -webkit-backface-visibility: hidden; + background: transparent; + background-repeat: no-repeat; + background-size: 100% 100%; + left: 0; + max-width: none; + overflow: visible; + padding: 0; + position: absolute; + top: 0; + -ms-transform-origin: top left; + transform-origin: top left; + transition-property: transform, opacity; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + z-index: 99995; +} + +.fancybox-can-zoomOut .fancybox-content { + cursor: zoom-out; +} + +.fancybox-can-zoomIn .fancybox-content { + cursor: zoom-in; +} + +.fancybox-can-swipe .fancybox-content, +.fancybox-can-pan .fancybox-content { + cursor: -webkit-grab; + cursor: grab; +} + +.fancybox-is-grabbing .fancybox-content { + cursor: -webkit-grabbing; + cursor: grabbing; +} + +.fancybox-container [data-selectable='true'] { + cursor: text; +} + +.fancybox-image, +.fancybox-spaceball { + background: transparent; + border: 0; + height: 100%; + left: 0; + margin: 0; + max-height: none; + max-width: none; + padding: 0; + position: absolute; + top: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 100%; +} + +.fancybox-spaceball { + z-index: 1; +} + +.fancybox-slide--video .fancybox-content, +.fancybox-slide--map .fancybox-content, +.fancybox-slide--pdf .fancybox-content, +.fancybox-slide--iframe .fancybox-content { + height: 100%; + overflow: visible; + padding: 0; + width: 100%; +} + +.fancybox-slide--video .fancybox-content { + background: #000; +} + +.fancybox-slide--map .fancybox-content { + background: #e5e3df; +} + +.fancybox-slide--iframe .fancybox-content { + background: #fff; +} + +.fancybox-video, +.fancybox-iframe { + background: transparent; + border: 0; + display: block; + height: 100%; + margin: 0; + overflow: hidden; + padding: 0; + width: 100%; +} + +/* Fix iOS */ +.fancybox-iframe { + left: 0; + position: absolute; + top: 0; +} + +.fancybox-error { + background: #fff; + cursor: default; + max-width: 400px; + padding: 40px; + width: 100%; +} + +.fancybox-error p { + color: #444; + font-size: 16px; + line-height: 20px; + margin: 0; + padding: 0; +} + +/* Buttons */ + +.fancybox-button { + background: rgba(30, 30, 30, .6); + border: 0; + border-radius: 0; + box-shadow: none; + cursor: pointer; + display: inline-block; + height: 44px; + margin: 0; + padding: 10px; + position: relative; + transition: color .2s; + vertical-align: top; + visibility: inherit; + width: 44px; +} + +.fancybox-button, +.fancybox-button:visited, +.fancybox-button:link { + color: #ccc; +} + +.fancybox-button:hover { + color: #fff; +} + +.fancybox-button:focus { + outline: none; +} + +.fancybox-button.fancybox-focus { + outline: 1px dotted; +} + +.fancybox-button[disabled], +.fancybox-button[disabled]:hover { + color: #888; + cursor: default; + outline: none; +} + +/* Fix IE11 */ +.fancybox-button div { + height: 100%; +} + +.fancybox-button svg { + display: block; + height: 100%; + overflow: visible; + position: relative; + width: 100%; +} + +.fancybox-button svg path { + fill: currentColor; + stroke-width: 0; +} + +.fancybox-button--play svg:nth-child(2), +.fancybox-button--fsenter svg:nth-child(2) { + display: none; +} + +.fancybox-button--pause svg:nth-child(1), +.fancybox-button--fsexit svg:nth-child(1) { + display: none; +} + +.fancybox-progress { + background: #ff5268; + height: 2px; + left: 0; + position: absolute; + right: 0; + top: 0; + -ms-transform: scaleX(0); + transform: scaleX(0); + -ms-transform-origin: 0; + transform-origin: 0; + transition-property: transform; + transition-timing-function: linear; + z-index: 99998; +} +/* Close button on the top right corner of html content */ + +.fancybox-close-small { + background: transparent; + border: 0; + border-radius: 0; + color: #ccc; + cursor: pointer; + opacity: .8; + padding: 8px; + position: absolute; + right: -12px; + top: -44px; + z-index: 401; +} + +.fancybox-close-small:hover { + color: #fff; + opacity: 1; +} + +.fancybox-slide--html .fancybox-close-small { + color: currentColor; + padding: 10px; + right: 0; + top: 0; +} + +.fancybox-slide--image.fancybox-is-scaling .fancybox-content { + overflow: hidden; +} + +.fancybox-is-scaling .fancybox-close-small, +.fancybox-is-zoomable.fancybox-can-pan .fancybox-close-small { + display: none; +} + +/* Navigation arrows */ + +.fancybox-navigation .fancybox-button { + background-clip: content-box; + height: 100px; + opacity: 0; + position: absolute; + top: calc(50% - 50px); + width: 70px; +} + +.fancybox-navigation .fancybox-button div { + padding: 7px; +} + +.fancybox-navigation .fancybox-button--arrow_left { + left: 0; + left: env(safe-area-inset-left); + padding: 31px 26px 31px 6px; +} + +.fancybox-navigation .fancybox-button--arrow_right { + padding: 31px 6px 31px 26px; + right: 0; + right: env(safe-area-inset-right); +} + +/* Caption */ + +.fancybox-caption { + background: linear-gradient( + to top, + rgba(0, 0, 0, .85) 0%, + rgba(0, 0, 0, .3) 50%, + rgba(0, 0, 0, .15) 65%, + rgba(0, 0, 0, .075) 75.5%, + rgba(0, 0, 0, .037) 82.85%, + rgba(0, 0, 0, .019) 88%, + rgba(0, 0, 0, 0) 100% + ); + bottom: 0; + color: #eee; + font-size: 14px; + font-weight: 400; + left: 0; + line-height: 1.5; + padding: 75px 44px 25px 44px; + pointer-events: none; + right: 0; + text-align: center; + z-index: 99996; +} + +@supports (padding: max(0px)) { + .fancybox-caption { + padding: 75px max(44px, env(safe-area-inset-right)) max(25px, env(safe-area-inset-bottom)) max(44px, env(safe-area-inset-left)); + } +} + +.fancybox-caption--separate { + margin-top: -50px; +} + +.fancybox-caption__body { + max-height: 50vh; + overflow: auto; + pointer-events: all; +} + +.fancybox-caption a, +.fancybox-caption a:link, +.fancybox-caption a:visited { + color: #ccc; + text-decoration: none; +} + +.fancybox-caption a:hover { + color: #fff; + text-decoration: underline; +} + +/* Loading indicator */ + +.fancybox-loading { + animation: fancybox-rotate 1s linear infinite; + background: transparent; + border: 4px solid #888; + border-bottom-color: #fff; + border-radius: 50%; + height: 50px; + left: 50%; + margin: -25px 0 0 -25px; + opacity: .7; + padding: 0; + position: absolute; + top: 50%; + width: 50px; + z-index: 99999; +} + +@keyframes fancybox-rotate { + 100% { + transform: rotate(360deg); + } +} + +/* Transition effects */ + +.fancybox-animated { + transition-timing-function: cubic-bezier(0, 0, .25, 1); +} + +/* transitionEffect: slide */ + +.fancybox-fx-slide.fancybox-slide--previous { + opacity: 0; + transform: translate3d(-100%, 0, 0); +} + +.fancybox-fx-slide.fancybox-slide--next { + opacity: 0; + transform: translate3d(100%, 0, 0); +} + +.fancybox-fx-slide.fancybox-slide--current { + opacity: 1; + transform: translate3d(0, 0, 0); +} + +/* transitionEffect: fade */ + +.fancybox-fx-fade.fancybox-slide--previous, +.fancybox-fx-fade.fancybox-slide--next { + opacity: 0; + transition-timing-function: cubic-bezier(.19, 1, .22, 1); +} + +.fancybox-fx-fade.fancybox-slide--current { + opacity: 1; +} + +/* transitionEffect: zoom-in-out */ + +.fancybox-fx-zoom-in-out.fancybox-slide--previous { + opacity: 0; + transform: scale3d(1.5, 1.5, 1.5); +} + +.fancybox-fx-zoom-in-out.fancybox-slide--next { + opacity: 0; + transform: scale3d(.5, .5, .5); +} + +.fancybox-fx-zoom-in-out.fancybox-slide--current { + opacity: 1; + transform: scale3d(1, 1, 1); +} + +/* transitionEffect: rotate */ + +.fancybox-fx-rotate.fancybox-slide--previous { + opacity: 0; + -ms-transform: rotate(-360deg); + transform: rotate(-360deg); +} + +.fancybox-fx-rotate.fancybox-slide--next { + opacity: 0; + -ms-transform: rotate(360deg); + transform: rotate(360deg); +} + +.fancybox-fx-rotate.fancybox-slide--current { + opacity: 1; + -ms-transform: rotate(0deg); + transform: rotate(0deg); +} + +/* transitionEffect: circular */ + +.fancybox-fx-circular.fancybox-slide--previous { + opacity: 0; + transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0); +} + +.fancybox-fx-circular.fancybox-slide--next { + opacity: 0; + transform: scale3d(0, 0, 0) translate3d(100%, 0, 0); +} + +.fancybox-fx-circular.fancybox-slide--current { + opacity: 1; + transform: scale3d(1, 1, 1) translate3d(0, 0, 0); +} + +/* transitionEffect: tube */ + +.fancybox-fx-tube.fancybox-slide--previous { + transform: translate3d(-100%, 0, 0) scale(.1) skew(-10deg); +} + +.fancybox-fx-tube.fancybox-slide--next { + transform: translate3d(100%, 0, 0) scale(.1) skew(10deg); +} + +.fancybox-fx-tube.fancybox-slide--current { + transform: translate3d(0, 0, 0) scale(1); +} + +/* Styling for Small-Screen Devices */ +@media all and (max-height: 576px) { + .fancybox-slide { + padding-left: 6px; + padding-right: 6px; + } + + .fancybox-slide--image { + padding: 6px 0; + } + + .fancybox-close-small { + right: -6px; + } + + .fancybox-slide--image .fancybox-close-small { + background: #4e4e4e; + color: #f2f4f6; + height: 36px; + opacity: 1; + padding: 6px; + right: 0; + top: 0; + width: 36px; + } + + .fancybox-caption { + padding-left: 12px; + padding-right: 12px; + } + + @supports (padding: max(0px)) { + .fancybox-caption { + padding-left: max(12px, env(safe-area-inset-left)); + padding-right: max(12px, env(safe-area-inset-right)); + } + } +} + +/* Share */ + +.fancybox-share { + background: #f4f4f4; + border-radius: 3px; + max-width: 90%; + padding: 30px; + text-align: center; +} + +.fancybox-share h1 { + color: #222; + font-size: 35px; + font-weight: 700; + margin: 0 0 20px 0; +} + +.fancybox-share p { + margin: 0; + padding: 0; +} + +.fancybox-share__button { + border: 0; + border-radius: 3px; + display: inline-block; + font-size: 14px; + font-weight: 700; + line-height: 40px; + margin: 0 5px 10px 5px; + min-width: 130px; + padding: 0 15px; + text-decoration: none; + transition: all .2s; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + white-space: nowrap; +} + +.fancybox-share__button:visited, +.fancybox-share__button:link { + color: #fff; +} + +.fancybox-share__button:hover { + text-decoration: none; +} + +.fancybox-share__button--fb { + background: #3b5998; +} + +.fancybox-share__button--fb:hover { + background: #344e86; +} + +.fancybox-share__button--pt { + background: #bd081d; +} + +.fancybox-share__button--pt:hover { + background: #aa0719; +} + +.fancybox-share__button--tw { + background: #1da1f2; +} + +.fancybox-share__button--tw:hover { + background: #0d95e8; +} + +.fancybox-share__button svg { + height: 25px; + margin-right: 7px; + position: relative; + top: -1px; + vertical-align: middle; + width: 25px; +} + +.fancybox-share__button svg path { + fill: #fff; +} + +.fancybox-share__input { + background: transparent; + border: 0; + border-bottom: 1px solid #d7d7d7; + border-radius: 0; + color: #5d5b5b; + font-size: 14px; + margin: 10px 0 0 0; + outline: none; + padding: 10px 15px; + width: 100%; +} + +/* Thumbs */ + +.fancybox-thumbs { + background: #ddd; + bottom: 0; + display: none; + margin: 0; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + padding: 2px 2px 4px 2px; + position: absolute; + right: 0; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + top: 0; + width: 212px; + z-index: 99995; +} + +.fancybox-thumbs-x { + overflow-x: auto; + overflow-y: hidden; +} + +.fancybox-show-thumbs .fancybox-thumbs { + display: block; +} + +.fancybox-show-thumbs .fancybox-inner { + right: 212px; +} + +.fancybox-thumbs__list { + font-size: 0; + height: 100%; + list-style: none; + margin: 0; + overflow-x: hidden; + overflow-y: auto; + padding: 0; + position: absolute; + position: relative; + white-space: nowrap; + width: 100%; +} + +.fancybox-thumbs-x .fancybox-thumbs__list { + overflow: hidden; +} + +.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar { + width: 7px; +} + +.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-track { + background: #fff; + border-radius: 10px; + box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); +} + +.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-thumb { + background: #2a2a2a; + border-radius: 10px; +} + +.fancybox-thumbs__list a { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + background-color: rgba(0, 0, 0, .1); + background-position: center center; + background-repeat: no-repeat; + background-size: cover; + cursor: pointer; + float: left; + height: 75px; + margin: 2px; + max-height: calc(100% - 8px); + max-width: calc(50% - 4px); + outline: none; + overflow: hidden; + padding: 0; + position: relative; + -webkit-tap-highlight-color: transparent; + width: 100px; +} + +.fancybox-thumbs__list a::before { + border: 6px solid #ff5268; + bottom: 0; + content: ''; + left: 0; + opacity: 0; + position: absolute; + right: 0; + top: 0; + transition: all .2s cubic-bezier(.25, .46, .45, .94); + z-index: 99991; +} + +.fancybox-thumbs__list a:focus::before { + opacity: .5; +} + +.fancybox-thumbs__list a.fancybox-thumbs-active::before { + opacity: 1; +} + +/* Styling for Small-Screen Devices */ +@media all and (max-width: 576px) { + .fancybox-thumbs { + width: 110px; + } + .fancybox-show-thumbs .fancybox-inner { + right: 110px; + } + .fancybox-thumbs__list a { + max-width: calc(100% - 10px); + } +} diff --git a/Ausgabe/common/fancybox/jquery.fancybox.js b/Ausgabe/common/fancybox/jquery.fancybox.js new file mode 100755 index 0000000..7c00ef8 --- /dev/null +++ b/Ausgabe/common/fancybox/jquery.fancybox.js @@ -0,0 +1,5640 @@ +// ================================================== +// fancyBox v3.5.6 +// +// Licensed GPLv3 for open source use +// or fancyBox Commercial License for commercial use +// +// http://fancyapps.com/fancybox/ +// Copyright 2018 fancyApps +// +// ================================================== +(function(window, document, $, undefined) { + "use strict"; + + window.console = window.console || { + info: function(stuff) {} + }; + + // If there's no jQuery, fancyBox can't work + // ========================================= + + if (!$) { + return; + } + + // Check if fancyBox is already initialized + // ======================================== + + if ($.fn.fancybox) { + console.info("fancyBox already initialized"); + + return; + } + + // Private default settings + // ======================== + + var defaults = { + // Close existing modals + // Set this to false if you do not need to stack multiple instances + closeExisting: false, + + // Enable infinite gallery navigation + loop: false, + + // Horizontal space between slides + gutter: 50, + + // Enable keyboard navigation + keyboard: true, + + // Should allow caption to overlap the content + preventCaptionOverlap: true, + + // Should display navigation arrows at the screen edges + arrows: true, + + // Should display counter at the top left corner + infobar: true, + + // Should display close button (using `btnTpl.smallBtn` template) over the content + // Can be true, false, "auto" + // If "auto" - will be automatically enabled for "html", "inline" or "ajax" items + smallBtn: "auto", + + // Should display toolbar (buttons at the top) + // Can be true, false, "auto" + // If "auto" - will be automatically hidden if "smallBtn" is enabled + toolbar: "auto", + + // What buttons should appear in the top right corner. + // Buttons will be created using templates from `btnTpl` option + // and they will be placed into toolbar (class="fancybox-toolbar"` element) + buttons: [ + "zoom", + //"share", + "slideShow", + //"fullScreen", + //"download", + "thumbs", + "close" + ], + + // Detect "idle" time in seconds + idleTime: 3, + + // Disable right-click and use simple image protection for images + protect: false, + + // Shortcut to make content "modal" - disable keyboard navigtion, hide buttons, etc + modal: false, + + image: { + // Wait for images to load before displaying + // true - wait for image to load and then display; + // false - display thumbnail and load the full-sized image over top, + // requires predefined image dimensions (`data-width` and `data-height` attributes) + preload: false + }, + + ajax: { + // Object containing settings for ajax request + settings: { + // This helps to indicate that request comes from the modal + // Feel free to change naming + data: { + fancybox: true + } + } + }, + + iframe: { + // Iframe template + tpl: + '', + + // Preload iframe before displaying it + // This allows to calculate iframe content width and height + // (note: Due to "Same Origin Policy", you can't get cross domain data). + preload: true, + + // Custom CSS styling for iframe wrapping element + // You can use this to set custom iframe dimensions + css: {}, + + // Iframe tag attributes + attr: { + scrolling: "auto" + } + }, + + // For HTML5 video only + video: { + tpl: + '", + format: "", // custom video format + autoStart: true + }, + + // Default content type if cannot be detected automatically + defaultType: "image", + + // Open/close animation type + // Possible values: + // false - disable + // "zoom" - zoom images from/to thumbnail + // "fade" + // "zoom-in-out" + // + animationEffect: "zoom", + + // Duration in ms for open/close animation + animationDuration: 366, + + // Should image change opacity while zooming + // If opacity is "auto", then opacity will be changed if image and thumbnail have different aspect ratios + zoomOpacity: "auto", + + // Transition effect between slides + // + // Possible values: + // false - disable + // "fade' + // "slide' + // "circular' + // "tube' + // "zoom-in-out' + // "rotate' + // + transitionEffect: "fade", + + // Duration in ms for transition animation + transitionDuration: 366, + + // Custom CSS class for slide element + slideClass: "", + + // Custom CSS class for layout + baseClass: "", + + // Base template for layout + baseTpl: + '", + + // Loading indicator template + spinnerTpl: '
    ', + + // Error message template + errorTpl: '

    {{ERROR}}

    ', + + btnTpl: { + download: + '' + + '' + + "", + + zoom: + '", + + close: + '", + + // Arrows + arrowLeft: + '", + + arrowRight: + '", + + // This small close button will be appended to your html/inline/ajax content by default, + // if "smallBtn" option is not set to false + smallBtn: + '" + }, + + // Container is injected into this element + parentEl: "body", + + // Hide browser vertical scrollbars; use at your own risk + hideScrollbar: true, + + // Focus handling + // ============== + + // Try to focus on the first focusable element after opening + autoFocus: true, + + // Put focus back to active element after closing + backFocus: true, + + // Do not let user to focus on element outside modal content + trapFocus: true, + + // Module specific options + // ======================= + + fullScreen: { + autoStart: false + }, + + // Set `touch: false` to disable panning/swiping + touch: { + vertical: true, // Allow to drag content vertically + momentum: true // Continue movement after releasing mouse/touch when panning + }, + + // Hash value when initializing manually, + // set `false` to disable hash change + hash: null, + + // Customize or add new media types + // Example: + /* + media : { + youtube : { + params : { + autoplay : 0 + } + } + } + */ + media: {}, + + slideShow: { + autoStart: false, + speed: 3000 + }, + + thumbs: { + autoStart: false, // Display thumbnails on opening + hideOnClose: true, // Hide thumbnail grid when closing animation starts + parentEl: ".fancybox-container", // Container is injected into this element + axis: "y" // Vertical (y) or horizontal (x) scrolling + }, + + // Use mousewheel to navigate gallery + // If 'auto' - enabled for images only + wheel: "auto", + + // Callbacks + //========== + + // See Documentation/API/Events for more information + // Example: + /* + afterShow: function( instance, current ) { + console.info( 'Clicked element:' ); + console.info( current.opts.$orig ); + } + */ + + onInit: $.noop, // When instance has been initialized + + beforeLoad: $.noop, // Before the content of a slide is being loaded + afterLoad: $.noop, // When the content of a slide is done loading + + beforeShow: $.noop, // Before open animation starts + afterShow: $.noop, // When content is done loading and animating + + beforeClose: $.noop, // Before the instance attempts to close. Return false to cancel the close. + afterClose: $.noop, // After instance has been closed + + onActivate: $.noop, // When instance is brought to front + onDeactivate: $.noop, // When other instance has been activated + + // Interaction + // =========== + + // Use options below to customize taken action when user clicks or double clicks on the fancyBox area, + // each option can be string or method that returns value. + // + // Possible values: + // "close" - close instance + // "next" - move to next gallery item + // "nextOrClose" - move to next gallery item or close if gallery has only one item + // "toggleControls" - show/hide controls + // "zoom" - zoom image (if loaded) + // false - do nothing + + // Clicked on the content + clickContent: function(current, event) { + return current.type === "image" ? "zoom" : false; + }, + + // Clicked on the slide + clickSlide: "close", + + // Clicked on the background (backdrop) element; + // if you have not changed the layout, then most likely you need to use `clickSlide` option + clickOutside: "close", + + // Same as previous two, but for double click + dblclickContent: false, + dblclickSlide: false, + dblclickOutside: false, + + // Custom options when mobile device is detected + // ============================================= + + mobile: { + preventCaptionOverlap: false, + idleTime: false, + clickContent: function(current, event) { + return current.type === "image" ? "toggleControls" : false; + }, + clickSlide: function(current, event) { + return current.type === "image" ? "toggleControls" : "close"; + }, + dblclickContent: function(current, event) { + return current.type === "image" ? "zoom" : false; + }, + dblclickSlide: function(current, event) { + return current.type === "image" ? "zoom" : false; + } + }, + + // Internationalization + // ==================== + + lang: "en", + i18n: { + en: { + CLOSE: "Close", + NEXT: "Next", + PREV: "Previous", + ERROR: "The requested content cannot be loaded.
    Please try again later.", + PLAY_START: "Start slideshow", + PLAY_STOP: "Pause slideshow", + FULL_SCREEN: "Full screen", + THUMBS: "Thumbnails", + DOWNLOAD: "Download", + SHARE: "Share", + ZOOM: "Zoom" + }, + de: { + CLOSE: "Schließen", + NEXT: "Weiter", + PREV: "Zurück", + ERROR: "Die angeforderten Daten konnten nicht geladen werden.
    Bitte versuchen Sie es später nochmal.", + PLAY_START: "Diaschau starten", + PLAY_STOP: "Diaschau beenden", + FULL_SCREEN: "Vollbild", + THUMBS: "Vorschaubilder", + DOWNLOAD: "Herunterladen", + SHARE: "Teilen", + ZOOM: "Vergrößern" + } + } + }; + + // Few useful variables and methods + // ================================ + + var $W = $(window); + var $D = $(document); + + var called = 0; + + // Check if an object is a jQuery object and not a native JavaScript object + // ======================================================================== + var isQuery = function(obj) { + return obj && obj.hasOwnProperty && obj instanceof $; + }; + + // Handle multiple browsers for "requestAnimationFrame" and "cancelAnimationFrame" + // =============================================================================== + var requestAFrame = (function() { + return ( + window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + // if all else fails, use setTimeout + function(callback) { + return window.setTimeout(callback, 1000 / 60); + } + ); + })(); + + var cancelAFrame = (function() { + return ( + window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + function(id) { + window.clearTimeout(id); + } + ); + })(); + + // Detect the supported transition-end event property name + // ======================================================= + var transitionEnd = (function() { + var el = document.createElement("fakeelement"), + t; + + var transitions = { + transition: "transitionend", + OTransition: "oTransitionEnd", + MozTransition: "transitionend", + WebkitTransition: "webkitTransitionEnd" + }; + + for (t in transitions) { + if (el.style[t] !== undefined) { + return transitions[t]; + } + } + + return "transitionend"; + })(); + + // Force redraw on an element. + // This helps in cases where the browser doesn't redraw an updated element properly + // ================================================================================ + var forceRedraw = function($el) { + return $el && $el.length && $el[0].offsetHeight; + }; + + // Exclude array (`buttons`) options from deep merging + // =================================================== + var mergeOpts = function(opts1, opts2) { + var rez = $.extend(true, {}, opts1, opts2); + + $.each(opts2, function(key, value) { + if ($.isArray(value)) { + rez[key] = value; + } + }); + + return rez; + }; + + // How much of an element is visible in viewport + // ============================================= + + var inViewport = function(elem) { + var elemCenter, rez; + + if (!elem || elem.ownerDocument !== document) { + return false; + } + + $(".fancybox-container").css("pointer-events", "none"); + + elemCenter = { + x: elem.getBoundingClientRect().left + elem.offsetWidth / 2, + y: elem.getBoundingClientRect().top + elem.offsetHeight / 2 + }; + + rez = document.elementFromPoint(elemCenter.x, elemCenter.y) === elem; + + $(".fancybox-container").css("pointer-events", ""); + + return rez; + }; + + // Class definition + // ================ + + var FancyBox = function(content, opts, index) { + var self = this; + + self.opts = mergeOpts({index: index}, $.fancybox.defaults); + + if ($.isPlainObject(opts)) { + self.opts = mergeOpts(self.opts, opts); + } + + if ($.fancybox.isMobile) { + self.opts = mergeOpts(self.opts, self.opts.mobile); + } + + self.id = self.opts.id || ++called; + + self.currIndex = parseInt(self.opts.index, 10) || 0; + self.prevIndex = null; + + self.prevPos = null; + self.currPos = 0; + + self.firstRun = true; + + // All group items + self.group = []; + + // Existing slides (for current, next and previous gallery items) + self.slides = {}; + + // Create group elements + self.addContent(content); + + if (!self.group.length) { + return; + } + + self.init(); + }; + + $.extend(FancyBox.prototype, { + // Create DOM structure + // ==================== + + init: function() { + var self = this, + firstItem = self.group[self.currIndex], + firstItemOpts = firstItem.opts, + $container, + buttonStr; + + if (firstItemOpts.closeExisting) { + $.fancybox.close(true); + } + + // Hide scrollbars + // =============== + + $("body").addClass("fancybox-active"); + + if ( + !$.fancybox.getInstance() && + firstItemOpts.hideScrollbar !== false && + !$.fancybox.isMobile && + document.body.scrollHeight > window.innerHeight + ) { + $("head").append( + '" + ); + + $("body").addClass("compensate-for-scrollbar"); + } + + // Build html markup and set references + // ==================================== + + // Build html code for buttons and insert into main template + buttonStr = ""; + + $.each(firstItemOpts.buttons, function(index, value) { + buttonStr += firstItemOpts.btnTpl[value] || ""; + }); + + // Create markup from base template, it will be initially hidden to + // avoid unnecessary work like painting while initializing is not complete + $container = $( + self.translate( + self, + firstItemOpts.baseTpl + .replace("{{buttons}}", buttonStr) + .replace("{{arrows}}", firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight) + ) + ) + .attr("id", "fancybox-container-" + self.id) + .addClass(firstItemOpts.baseClass) + .data("FancyBox", self) + .appendTo(firstItemOpts.parentEl); + + // Create object holding references to jQuery wrapped nodes + self.$refs = { + container: $container + }; + + ["bg", "inner", "infobar", "toolbar", "stage", "caption", "navigation"].forEach(function(item) { + self.$refs[item] = $container.find(".fancybox-" + item); + }); + + self.trigger("onInit"); + + // Enable events, deactive previous instances + self.activate(); + + // Build slides, load and reveal content + self.jumpTo(self.currIndex); + }, + + // Simple i18n support - replaces object keys found in template + // with corresponding values + // ============================================================ + + translate: function(obj, str) { + var arr = obj.opts.i18n[obj.opts.lang] || obj.opts.i18n.en; + + return str.replace(/\{\{(\w+)\}\}/g, function(match, n) { + return arr[n] === undefined ? match : arr[n]; + }); + }, + + // Populate current group with fresh content + // Check if each object has valid type and content + // =============================================== + + addContent: function(content) { + var self = this, + items = $.makeArray(content), + thumbs; + + $.each(items, function(i, item) { + var obj = {}, + opts = {}, + $item, + type, + found, + src, + srcParts; + + // Step 1 - Make sure we have an object + // ==================================== + + if ($.isPlainObject(item)) { + // We probably have manual usage here, something like + // $.fancybox.open( [ { src : "image.jpg", type : "image" } ] ) + + obj = item; + opts = item.opts || item; + } else if ($.type(item) === "object" && $(item).length) { + // Here we probably have jQuery collection returned by some selector + $item = $(item); + + // Support attributes like `data-options='{"touch" : false}'` and `data-touch='false'` + opts = $item.data() || {}; + opts = $.extend(true, {}, opts, opts.options); + + // Here we store clicked element + opts.$orig = $item; + + obj.src = self.opts.src || opts.src || $item.attr("href"); + + // Assume that simple syntax is used, for example: + // `$.fancybox.open( $("#test"), {} );` + if (!obj.type && !obj.src) { + obj.type = "inline"; + obj.src = item; + } + } else { + // Assume we have a simple html code, for example: + // $.fancybox.open( '

    Hi!

    ' ); + obj = { + type: "html", + src: item + "" + }; + } + + // Each gallery object has full collection of options + obj.opts = $.extend(true, {}, self.opts, opts); + + // Do not merge buttons array + if ($.isArray(opts.buttons)) { + obj.opts.buttons = opts.buttons; + } + + if ($.fancybox.isMobile && obj.opts.mobile) { + obj.opts = mergeOpts(obj.opts, obj.opts.mobile); + } + + // Step 2 - Make sure we have content type, if not - try to guess + // ============================================================== + + type = obj.type || obj.opts.type; + src = obj.src || ""; + + if (!type && src) { + if ((found = src.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i))) { + type = "video"; + + if (!obj.opts.video.format) { + obj.opts.video.format = "video/" + (found[1] === "ogv" ? "ogg" : found[1]); + } + } else if (src.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)) { + type = "image"; + } else if (src.match(/\.(pdf)((\?|#).*)?$/i)) { + type = "iframe"; + obj = $.extend(true, obj, {contentType: "pdf", opts: {iframe: {preload: false}}}); + } else if (src.charAt(0) === "#") { + type = "inline"; + } + } + + if (type) { + obj.type = type; + } else { + self.trigger("objectNeedsType", obj); + } + + if (!obj.contentType) { + obj.contentType = $.inArray(obj.type, ["html", "inline", "ajax"]) > -1 ? "html" : obj.type; + } + + // Step 3 - Some adjustments + // ========================= + + obj.index = self.group.length; + + if (obj.opts.smallBtn == "auto") { + obj.opts.smallBtn = $.inArray(obj.type, ["html", "inline", "ajax"]) > -1; + } + + if (obj.opts.toolbar === "auto") { + obj.opts.toolbar = !obj.opts.smallBtn; + } + + // Find thumbnail image, check if exists and if is in the viewport + obj.$thumb = obj.opts.$thumb || null; + + if (obj.opts.$trigger && obj.index === self.opts.index) { + obj.$thumb = obj.opts.$trigger.find("img:first"); + + if (obj.$thumb.length) { + obj.opts.$orig = obj.opts.$trigger; + } + } + + if (!(obj.$thumb && obj.$thumb.length) && obj.opts.$orig) { + obj.$thumb = obj.opts.$orig.find("img:first"); + } + + if (obj.$thumb && !obj.$thumb.length) { + obj.$thumb = null; + } + + obj.thumb = obj.opts.thumb || (obj.$thumb ? obj.$thumb[0].src : null); + + // "caption" is a "special" option, it can be used to customize caption per gallery item + if ($.type(obj.opts.caption) === "function") { + obj.opts.caption = obj.opts.caption.apply(item, [self, obj]); + } + + if ($.type(self.opts.caption) === "function") { + obj.opts.caption = self.opts.caption.apply(item, [self, obj]); + } + + // Make sure we have caption as a string or jQuery object + if (!(obj.opts.caption instanceof $)) { + obj.opts.caption = obj.opts.caption === undefined ? "" : obj.opts.caption + ""; + } + + // Check if url contains "filter" used to filter the content + // Example: "ajax.html #something" + if (obj.type === "ajax") { + srcParts = src.split(/\s+/, 2); + + if (srcParts.length > 1) { + obj.src = srcParts.shift(); + + obj.opts.filter = srcParts.shift(); + } + } + + // Hide all buttons and disable interactivity for modal items + if (obj.opts.modal) { + obj.opts = $.extend(true, obj.opts, { + trapFocus: true, + // Remove buttons + infobar: 0, + toolbar: 0, + + smallBtn: 0, + + // Disable keyboard navigation + keyboard: 0, + + // Disable some modules + slideShow: 0, + fullScreen: 0, + thumbs: 0, + touch: 0, + + // Disable click event handlers + clickContent: false, + clickSlide: false, + clickOutside: false, + dblclickContent: false, + dblclickSlide: false, + dblclickOutside: false + }); + } + + // Step 4 - Add processed object to group + // ====================================== + + self.group.push(obj); + }); + + // Update controls if gallery is already opened + if (Object.keys(self.slides).length) { + self.updateControls(); + + // Update thumbnails, if needed + thumbs = self.Thumbs; + + if (thumbs && thumbs.isActive) { + thumbs.create(); + + thumbs.focus(); + } + } + }, + + // Attach an event handler functions for: + // - navigation buttons + // - browser scrolling, resizing; + // - focusing + // - keyboard + // - detecting inactivity + // ====================================== + + addEvents: function() { + var self = this; + + self.removeEvents(); + + // Make navigation elements clickable + // ================================== + + self.$refs.container + .on("click.fb-close", "[data-fancybox-close]", function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.close(e); + }) + .on("touchstart.fb-prev click.fb-prev", "[data-fancybox-prev]", function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.previous(); + }) + .on("touchstart.fb-next click.fb-next", "[data-fancybox-next]", function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.next(); + }) + .on("click.fb", "[data-fancybox-zoom]", function(e) { + // Click handler for zoom button + self[self.isScaledDown() ? "scaleToActual" : "scaleToFit"](); + }); + + // Handle page scrolling and browser resizing + // ========================================== + + $W.on("orientationchange.fb resize.fb", function(e) { + if (e && e.originalEvent && e.originalEvent.type === "resize") { + if (self.requestId) { + cancelAFrame(self.requestId); + } + + self.requestId = requestAFrame(function() { + self.update(e); + }); + } else { + if (self.current && self.current.type === "iframe") { + self.$refs.stage.hide(); + } + + setTimeout( + function() { + self.$refs.stage.show(); + + self.update(e); + }, + $.fancybox.isMobile ? 600 : 250 + ); + } + }); + + $D.on("keydown.fb", function(e) { + var instance = $.fancybox ? $.fancybox.getInstance() : null, + current = instance.current, + keycode = e.keyCode || e.which; + + // Trap keyboard focus inside of the modal + // ======================================= + + if (keycode == 9) { + if (current.opts.trapFocus) { + self.focus(e); + } + + return; + } + + // Enable keyboard navigation + // ========================== + + if (!current.opts.keyboard || e.ctrlKey || e.altKey || e.shiftKey || $(e.target).is("input,textarea,video,audio")) { + return; + } + + // Backspace and Esc keys + if (keycode === 8 || keycode === 27) { + e.preventDefault(); + + self.close(e); + + return; + } + + // Left arrow and Up arrow + if (keycode === 37 || keycode === 38) { + e.preventDefault(); + + self.previous(); + + return; + } + + // Righ arrow and Down arrow + if (keycode === 39 || keycode === 40) { + e.preventDefault(); + + self.next(); + + return; + } + + self.trigger("afterKeydown", e, keycode); + }); + + // Hide controls after some inactivity period + if (self.group[self.currIndex].opts.idleTime) { + self.idleSecondsCounter = 0; + + $D.on( + "mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle", + function(e) { + self.idleSecondsCounter = 0; + + if (self.isIdle) { + self.showControls(); + } + + self.isIdle = false; + } + ); + + self.idleInterval = window.setInterval(function() { + self.idleSecondsCounter++; + + if (self.idleSecondsCounter >= self.group[self.currIndex].opts.idleTime && !self.isDragging) { + self.isIdle = true; + self.idleSecondsCounter = 0; + + self.hideControls(); + } + }, 1000); + } + }, + + // Remove events added by the core + // =============================== + + removeEvents: function() { + var self = this; + + $W.off("orientationchange.fb resize.fb"); + $D.off("keydown.fb .fb-idle"); + + this.$refs.container.off(".fb-close .fb-prev .fb-next"); + + if (self.idleInterval) { + window.clearInterval(self.idleInterval); + + self.idleInterval = null; + } + }, + + // Change to previous gallery item + // =============================== + + previous: function(duration) { + return this.jumpTo(this.currPos - 1, duration); + }, + + // Change to next gallery item + // =========================== + + next: function(duration) { + return this.jumpTo(this.currPos + 1, duration); + }, + + // Switch to selected gallery item + // =============================== + + jumpTo: function(pos, duration) { + var self = this, + groupLen = self.group.length, + firstRun, + isMoved, + loop, + current, + previous, + slidePos, + stagePos, + prop, + diff; + + if (self.isDragging || self.isClosing || (self.isAnimating && self.firstRun)) { + return; + } + + // Should loop? + pos = parseInt(pos, 10); + loop = self.current ? self.current.opts.loop : self.opts.loop; + + if (!loop && (pos < 0 || pos >= groupLen)) { + return false; + } + + // Check if opening for the first time; this helps to speed things up + firstRun = self.firstRun = !Object.keys(self.slides).length; + + // Create slides + previous = self.current; + + self.prevIndex = self.currIndex; + self.prevPos = self.currPos; + + current = self.createSlide(pos); + + if (groupLen > 1) { + if (loop || current.index < groupLen - 1) { + self.createSlide(pos + 1); + } + + if (loop || current.index > 0) { + self.createSlide(pos - 1); + } + } + + self.current = current; + self.currIndex = current.index; + self.currPos = current.pos; + + self.trigger("beforeShow", firstRun); + + self.updateControls(); + + // Validate duration length + current.forcedDuration = undefined; + + if ($.isNumeric(duration)) { + current.forcedDuration = duration; + } else { + duration = current.opts[firstRun ? "animationDuration" : "transitionDuration"]; + } + + duration = parseInt(duration, 10); + + // Check if user has swiped the slides or if still animating + isMoved = self.isMoved(current); + + // Make sure current slide is visible + current.$slide.addClass("fancybox-slide--current"); + + // Fresh start - reveal container, current slide and start loading content + if (firstRun) { + if (current.opts.animationEffect && duration) { + self.$refs.container.css("transition-duration", duration + "ms"); + } + + self.$refs.container.addClass("fancybox-is-open").trigger("focus"); + + // Attempt to load content into slide + // This will later call `afterLoad` -> `revealContent` + self.loadSlide(current); + + self.preload("image"); + + return; + } + + // Get actual slide/stage positions (before cleaning up) + slidePos = $.fancybox.getTranslate(previous.$slide); + stagePos = $.fancybox.getTranslate(self.$refs.stage); + + // Clean up all slides + $.each(self.slides, function(index, slide) { + $.fancybox.stop(slide.$slide, true); + }); + + if (previous.pos !== current.pos) { + previous.isComplete = false; + } + + previous.$slide.removeClass("fancybox-slide--complete fancybox-slide--current"); + + // If slides are out of place, then animate them to correct position + if (isMoved) { + // Calculate horizontal swipe distance + diff = slidePos.left - (previous.pos * slidePos.width + previous.pos * previous.opts.gutter); + + $.each(self.slides, function(index, slide) { + slide.$slide.removeClass("fancybox-animated").removeClass(function(index, className) { + return (className.match(/(^|\s)fancybox-fx-\S+/g) || []).join(" "); + }); + + // Make sure that each slide is in equal distance + // This is mostly needed for freshly added slides, because they are not yet positioned + var leftPos = slide.pos * slidePos.width + slide.pos * slide.opts.gutter; + + $.fancybox.setTranslate(slide.$slide, {top: 0, left: leftPos - stagePos.left + diff}); + + if (slide.pos !== current.pos) { + slide.$slide.addClass("fancybox-slide--" + (slide.pos > current.pos ? "next" : "previous")); + } + + // Redraw to make sure that transition will start + forceRedraw(slide.$slide); + + // Animate the slide + $.fancybox.animate( + slide.$slide, + { + top: 0, + left: (slide.pos - current.pos) * slidePos.width + (slide.pos - current.pos) * slide.opts.gutter + }, + duration, + function() { + slide.$slide + .css({ + transform: "", + opacity: "" + }) + .removeClass("fancybox-slide--next fancybox-slide--previous"); + + if (slide.pos === self.currPos) { + self.complete(); + } + } + ); + }); + } else if (duration && current.opts.transitionEffect) { + // Set transition effect for previously active slide + prop = "fancybox-animated fancybox-fx-" + current.opts.transitionEffect; + + previous.$slide.addClass("fancybox-slide--" + (previous.pos > current.pos ? "next" : "previous")); + + $.fancybox.animate( + previous.$slide, + prop, + duration, + function() { + previous.$slide.removeClass(prop).removeClass("fancybox-slide--next fancybox-slide--previous"); + }, + false + ); + } + + if (current.isLoaded) { + self.revealContent(current); + } else { + self.loadSlide(current); + } + + self.preload("image"); + }, + + // Create new "slide" element + // These are gallery items that are actually added to DOM + // ======================================================= + + createSlide: function(pos) { + var self = this, + $slide, + index; + + index = pos % self.group.length; + index = index < 0 ? self.group.length + index : index; + + if (!self.slides[pos] && self.group[index]) { + $slide = $('
    ').appendTo(self.$refs.stage); + + self.slides[pos] = $.extend(true, {}, self.group[index], { + pos: pos, + $slide: $slide, + isLoaded: false + }); + + self.updateSlide(self.slides[pos]); + } + + return self.slides[pos]; + }, + + // Scale image to the actual size of the image; + // x and y values should be relative to the slide + // ============================================== + + scaleToActual: function(x, y, duration) { + var self = this, + current = self.current, + $content = current.$content, + canvasWidth = $.fancybox.getTranslate(current.$slide).width, + canvasHeight = $.fancybox.getTranslate(current.$slide).height, + newImgWidth = current.width, + newImgHeight = current.height, + imgPos, + posX, + posY, + scaleX, + scaleY; + + if (self.isAnimating || self.isMoved() || !$content || !(current.type == "image" && current.isLoaded && !current.hasError)) { + return; + } + + self.isAnimating = true; + + $.fancybox.stop($content); + + x = x === undefined ? canvasWidth * 0.5 : x; + y = y === undefined ? canvasHeight * 0.5 : y; + + imgPos = $.fancybox.getTranslate($content); + + imgPos.top -= $.fancybox.getTranslate(current.$slide).top; + imgPos.left -= $.fancybox.getTranslate(current.$slide).left; + + scaleX = newImgWidth / imgPos.width; + scaleY = newImgHeight / imgPos.height; + + // Get center position for original image + posX = canvasWidth * 0.5 - newImgWidth * 0.5; + posY = canvasHeight * 0.5 - newImgHeight * 0.5; + + // Make sure image does not move away from edges + if (newImgWidth > canvasWidth) { + posX = imgPos.left * scaleX - (x * scaleX - x); + + if (posX > 0) { + posX = 0; + } + + if (posX < canvasWidth - newImgWidth) { + posX = canvasWidth - newImgWidth; + } + } + + if (newImgHeight > canvasHeight) { + posY = imgPos.top * scaleY - (y * scaleY - y); + + if (posY > 0) { + posY = 0; + } + + if (posY < canvasHeight - newImgHeight) { + posY = canvasHeight - newImgHeight; + } + } + + self.updateCursor(newImgWidth, newImgHeight); + + $.fancybox.animate( + $content, + { + top: posY, + left: posX, + scaleX: scaleX, + scaleY: scaleY + }, + duration || 366, + function() { + self.isAnimating = false; + } + ); + + // Stop slideshow + if (self.SlideShow && self.SlideShow.isActive) { + self.SlideShow.stop(); + } + }, + + // Scale image to fit inside parent element + // ======================================== + + scaleToFit: function(duration) { + var self = this, + current = self.current, + $content = current.$content, + end; + + if (self.isAnimating || self.isMoved() || !$content || !(current.type == "image" && current.isLoaded && !current.hasError)) { + return; + } + + self.isAnimating = true; + + $.fancybox.stop($content); + + end = self.getFitPos(current); + + self.updateCursor(end.width, end.height); + + $.fancybox.animate( + $content, + { + top: end.top, + left: end.left, + scaleX: end.width / $content.width(), + scaleY: end.height / $content.height() + }, + duration || 366, + function() { + self.isAnimating = false; + } + ); + }, + + // Calculate image size to fit inside viewport + // =========================================== + + getFitPos: function(slide) { + var self = this, + $content = slide.$content, + $slide = slide.$slide, + width = slide.width || slide.opts.width, + height = slide.height || slide.opts.height, + maxWidth, + maxHeight, + minRatio, + aspectRatio, + rez = {}; + + if (!slide.isLoaded || !$content || !$content.length) { + return false; + } + + maxWidth = $.fancybox.getTranslate(self.$refs.stage).width; + maxHeight = $.fancybox.getTranslate(self.$refs.stage).height; + + maxWidth -= + parseFloat($slide.css("paddingLeft")) + + parseFloat($slide.css("paddingRight")) + + parseFloat($content.css("marginLeft")) + + parseFloat($content.css("marginRight")); + + maxHeight -= + parseFloat($slide.css("paddingTop")) + + parseFloat($slide.css("paddingBottom")) + + parseFloat($content.css("marginTop")) + + parseFloat($content.css("marginBottom")); + + if (!width || !height) { + width = maxWidth; + height = maxHeight; + } + + minRatio = Math.min(1, maxWidth / width, maxHeight / height); + + width = minRatio * width; + height = minRatio * height; + + // Adjust width/height to precisely fit into container + if (width > maxWidth - 0.5) { + width = maxWidth; + } + + if (height > maxHeight - 0.5) { + height = maxHeight; + } + + if (slide.type === "image") { + rez.top = Math.floor((maxHeight - height) * 0.5) + parseFloat($slide.css("paddingTop")); + rez.left = Math.floor((maxWidth - width) * 0.5) + parseFloat($slide.css("paddingLeft")); + } else if (slide.contentType === "video") { + // Force aspect ratio for the video + // "I say the whole world must learn of our peaceful ways… by force!" + aspectRatio = slide.opts.width && slide.opts.height ? width / height : slide.opts.ratio || 16 / 9; + + if (height > width / aspectRatio) { + height = width / aspectRatio; + } else if (width > height * aspectRatio) { + width = height * aspectRatio; + } + } + + rez.width = width; + rez.height = height; + + return rez; + }, + + // Update content size and position for all slides + // ============================================== + + update: function(e) { + var self = this; + + $.each(self.slides, function(key, slide) { + self.updateSlide(slide, e); + }); + }, + + // Update slide content position and size + // ====================================== + + updateSlide: function(slide, e) { + var self = this, + $content = slide && slide.$content, + width = slide.width || slide.opts.width, + height = slide.height || slide.opts.height, + $slide = slide.$slide; + + // First, prevent caption overlap, if needed + self.adjustCaption(slide); + + // Then resize content to fit inside the slide + if ($content && (width || height || slide.contentType === "video") && !slide.hasError) { + $.fancybox.stop($content); + + $.fancybox.setTranslate($content, self.getFitPos(slide)); + + if (slide.pos === self.currPos) { + self.isAnimating = false; + + self.updateCursor(); + } + } + + // Then some adjustments + self.adjustLayout(slide); + + if ($slide.length) { + $slide.trigger("refresh"); + + if (slide.pos === self.currPos) { + self.$refs.toolbar + .add(self.$refs.navigation.find(".fancybox-button--arrow_right")) + .toggleClass("compensate-for-scrollbar", $slide.get(0).scrollHeight > $slide.get(0).clientHeight); + } + } + + self.trigger("onUpdate", slide, e); + }, + + // Horizontally center slide + // ========================= + + centerSlide: function(duration) { + var self = this, + current = self.current, + $slide = current.$slide; + + if (self.isClosing || !current) { + return; + } + + $slide.siblings().css({ + transform: "", + opacity: "" + }); + + $slide + .parent() + .children() + .removeClass("fancybox-slide--previous fancybox-slide--next"); + + $.fancybox.animate( + $slide, + { + top: 0, + left: 0, + opacity: 1 + }, + duration === undefined ? 0 : duration, + function() { + // Clean up + $slide.css({ + transform: "", + opacity: "" + }); + + if (!current.isComplete) { + self.complete(); + } + }, + false + ); + }, + + // Check if current slide is moved (swiped) + // ======================================== + + isMoved: function(slide) { + var current = slide || this.current, + slidePos, + stagePos; + + if (!current) { + return false; + } + + stagePos = $.fancybox.getTranslate(this.$refs.stage); + slidePos = $.fancybox.getTranslate(current.$slide); + + return ( + !current.$slide.hasClass("fancybox-animated") && + (Math.abs(slidePos.top - stagePos.top) > 0.5 || Math.abs(slidePos.left - stagePos.left) > 0.5) + ); + }, + + // Update cursor style depending if content can be zoomed + // ====================================================== + + updateCursor: function(nextWidth, nextHeight) { + var self = this, + current = self.current, + $container = self.$refs.container, + canPan, + isZoomable; + + if (!current || self.isClosing || !self.Guestures) { + return; + } + + $container.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan"); + + canPan = self.canPan(nextWidth, nextHeight); + + isZoomable = canPan ? true : self.isZoomable(); + + $container.toggleClass("fancybox-is-zoomable", isZoomable); + + $("[data-fancybox-zoom]").prop("disabled", !isZoomable); + + if (canPan) { + $container.addClass("fancybox-can-pan"); + } else if ( + isZoomable && + (current.opts.clickContent === "zoom" || ($.isFunction(current.opts.clickContent) && current.opts.clickContent(current) == "zoom")) + ) { + $container.addClass("fancybox-can-zoomIn"); + } else if (current.opts.touch && (current.opts.touch.vertical || self.group.length > 1) && current.contentType !== "video") { + $container.addClass("fancybox-can-swipe"); + } + }, + + // Check if current slide is zoomable + // ================================== + + isZoomable: function() { + var self = this, + current = self.current, + fitPos; + + // Assume that slide is zoomable if: + // - image is still loading + // - actual size of the image is smaller than available area + if (current && !self.isClosing && current.type === "image" && !current.hasError) { + if (!current.isLoaded) { + return true; + } + + fitPos = self.getFitPos(current); + + if (fitPos && (current.width > fitPos.width || current.height > fitPos.height)) { + return true; + } + } + + return false; + }, + + // Check if current image dimensions are smaller than actual + // ========================================================= + + isScaledDown: function(nextWidth, nextHeight) { + var self = this, + rez = false, + current = self.current, + $content = current.$content; + + if (nextWidth !== undefined && nextHeight !== undefined) { + rez = nextWidth < current.width && nextHeight < current.height; + } else if ($content) { + rez = $.fancybox.getTranslate($content); + rez = rez.width < current.width && rez.height < current.height; + } + + return rez; + }, + + // Check if image dimensions exceed parent element + // =============================================== + + canPan: function(nextWidth, nextHeight) { + var self = this, + current = self.current, + pos = null, + rez = false; + + if (current.type === "image" && (current.isComplete || (nextWidth && nextHeight)) && !current.hasError) { + rez = self.getFitPos(current); + + if (nextWidth !== undefined && nextHeight !== undefined) { + pos = {width: nextWidth, height: nextHeight}; + } else if (current.isComplete) { + pos = $.fancybox.getTranslate(current.$content); + } + + if (pos && rez) { + rez = Math.abs(pos.width - rez.width) > 1.5 || Math.abs(pos.height - rez.height) > 1.5; + } + } + + return rez; + }, + + // Load content into the slide + // =========================== + + loadSlide: function(slide) { + var self = this, + type, + $slide, + ajaxLoad; + + if (slide.isLoading || slide.isLoaded) { + return; + } + + slide.isLoading = true; + + if (self.trigger("beforeLoad", slide) === false) { + slide.isLoading = false; + + return false; + } + + type = slide.type; + $slide = slide.$slide; + + $slide + .off("refresh") + .trigger("onReset") + .addClass(slide.opts.slideClass); + + // Create content depending on the type + switch (type) { + case "image": + self.setImage(slide); + + break; + + case "iframe": + self.setIframe(slide); + + break; + + case "html": + self.setContent(slide, slide.src || slide.content); + + break; + + case "video": + self.setContent( + slide, + slide.opts.video.tpl + .replace(/\{\{src\}\}/gi, slide.src) + .replace("{{format}}", slide.opts.videoFormat || slide.opts.video.format || "") + .replace("{{poster}}", slide.thumb || "") + ); + + break; + + case "inline": + if ($(slide.src).length) { + self.setContent(slide, $(slide.src)); + } else { + self.setError(slide); + } + + break; + + case "ajax": + self.showLoading(slide); + + ajaxLoad = $.ajax( + $.extend({}, slide.opts.ajax.settings, { + url: slide.src, + success: function(data, textStatus) { + if (textStatus === "success") { + self.setContent(slide, data); + } + }, + error: function(jqXHR, textStatus) { + if (jqXHR && textStatus !== "abort") { + self.setError(slide); + } + } + }) + ); + + $slide.one("onReset", function() { + ajaxLoad.abort(); + }); + + break; + + default: + self.setError(slide); + + break; + } + + return true; + }, + + // Use thumbnail image, if possible + // ================================ + + setImage: function(slide) { + var self = this, + ghost; + + // Check if need to show loading icon + setTimeout(function() { + var $img = slide.$image; + + if (!self.isClosing && slide.isLoading && (!$img || !$img.length || !$img[0].complete) && !slide.hasError) { + self.showLoading(slide); + } + }, 50); + + //Check if image has srcset + self.checkSrcset(slide); + + // This will be wrapper containing both ghost and actual image + slide.$content = $('
    ') + .addClass("fancybox-is-hidden") + .appendTo(slide.$slide.addClass("fancybox-slide--image")); + + // If we have a thumbnail, we can display it while actual image is loading + // Users will not stare at black screen and actual image will appear gradually + if (slide.opts.preload !== false && slide.opts.width && slide.opts.height && slide.thumb) { + slide.width = slide.opts.width; + slide.height = slide.opts.height; + + ghost = document.createElement("img"); + + ghost.onerror = function() { + $(this).remove(); + + slide.$ghost = null; + }; + + ghost.onload = function() { + self.afterLoad(slide); + }; + + slide.$ghost = $(ghost) + .addClass("fancybox-image") + .appendTo(slide.$content) + .attr("src", slide.thumb); + } + + // Start loading actual image + self.setBigImage(slide); + }, + + // Check if image has srcset and get the source + // ============================================ + checkSrcset: function(slide) { + var srcset = slide.opts.srcset || slide.opts.image.srcset, + found, + temp, + pxRatio, + windowWidth; + + // If we have "srcset", then we need to find first matching "src" value. + // This is necessary, because when you set an src attribute, the browser will preload the image + // before any javascript or even CSS is applied. + if (srcset) { + pxRatio = window.devicePixelRatio || 1; + windowWidth = window.innerWidth * pxRatio; + + temp = srcset.split(",").map(function(el) { + var ret = {}; + + el.trim() + .split(/\s+/) + .forEach(function(el, i) { + var value = parseInt(el.substring(0, el.length - 1), 10); + + if (i === 0) { + return (ret.url = el); + } + + if (value) { + ret.value = value; + ret.postfix = el[el.length - 1]; + } + }); + + return ret; + }); + + // Sort by value + temp.sort(function(a, b) { + return a.value - b.value; + }); + + // Ok, now we have an array of all srcset values + for (var j = 0; j < temp.length; j++) { + var el = temp[j]; + + if ((el.postfix === "w" && el.value >= windowWidth) || (el.postfix === "x" && el.value >= pxRatio)) { + found = el; + break; + } + } + + // If not found, take the last one + if (!found && temp.length) { + found = temp[temp.length - 1]; + } + + if (found) { + slide.src = found.url; + + // If we have default width/height values, we can calculate height for matching source + if (slide.width && slide.height && found.postfix == "w") { + slide.height = (slide.width / slide.height) * found.value; + slide.width = found.value; + } + + slide.opts.srcset = srcset; + } + } + }, + + // Create full-size image + // ====================== + + setBigImage: function(slide) { + var self = this, + img = document.createElement("img"), + $img = $(img); + + slide.$image = $img + .one("error", function() { + self.setError(slide); + }) + .one("load", function() { + var sizes; + + if (!slide.$ghost) { + self.resolveImageSlideSize(slide, this.naturalWidth, this.naturalHeight); + + self.afterLoad(slide); + } + + if (self.isClosing) { + return; + } + + if (slide.opts.srcset) { + sizes = slide.opts.sizes; + + if (!sizes || sizes === "auto") { + sizes = + (slide.width / slide.height > 1 && $W.width() / $W.height() > 1 ? "100" : Math.round((slide.width / slide.height) * 100)) + + "vw"; + } + + $img.attr("sizes", sizes).attr("srcset", slide.opts.srcset); + } + + // Hide temporary image after some delay + if (slide.$ghost) { + setTimeout(function() { + if (slide.$ghost && !self.isClosing) { + slide.$ghost.hide(); + } + }, Math.min(300, Math.max(1000, slide.height / 1600))); + } + + self.hideLoading(slide); + }) + .addClass("fancybox-image") + .attr("src", slide.src) + .appendTo(slide.$content); + + if ((img.complete || img.readyState == "complete") && $img.naturalWidth && $img.naturalHeight) { + $img.trigger("load"); + } else if (img.error) { + $img.trigger("error"); + } + }, + + // Computes the slide size from image size and maxWidth/maxHeight + // ============================================================== + + resolveImageSlideSize: function(slide, imgWidth, imgHeight) { + var maxWidth = parseInt(slide.opts.width, 10), + maxHeight = parseInt(slide.opts.height, 10); + + // Sets the default values from the image + slide.width = imgWidth; + slide.height = imgHeight; + + if (maxWidth > 0) { + slide.width = maxWidth; + slide.height = Math.floor((maxWidth * imgHeight) / imgWidth); + } + + if (maxHeight > 0) { + slide.width = Math.floor((maxHeight * imgWidth) / imgHeight); + slide.height = maxHeight; + } + }, + + // Create iframe wrapper, iframe and bindings + // ========================================== + + setIframe: function(slide) { + var self = this, + opts = slide.opts.iframe, + $slide = slide.$slide, + $iframe; + + slide.$content = $('
    ') + .css(opts.css) + .appendTo($slide); + + $slide.addClass("fancybox-slide--" + slide.contentType); + + slide.$iframe = $iframe = $(opts.tpl.replace(/\{rnd\}/g, new Date().getTime())) + .attr(opts.attr) + .appendTo(slide.$content); + + if (opts.preload) { + self.showLoading(slide); + + // Unfortunately, it is not always possible to determine if iframe is successfully loaded + // (due to browser security policy) + + $iframe.on("load.fb error.fb", function(e) { + this.isReady = 1; + + slide.$slide.trigger("refresh"); + + self.afterLoad(slide); + }); + + // Recalculate iframe content size + // =============================== + + $slide.on("refresh.fb", function() { + var $content = slide.$content, + frameWidth = opts.css.width, + frameHeight = opts.css.height, + $contents, + $body; + + if ($iframe[0].isReady !== 1) { + return; + } + + try { + $contents = $iframe.contents(); + $body = $contents.find("body"); + } catch (ignore) {} + + // Calculate content dimensions, if it is accessible + if ($body && $body.length && $body.children().length) { + // Avoid scrolling to top (if multiple instances) + $slide.css("overflow", "visible"); + + $content.css({ + width: "100%", + "max-width": "100%", + height: "9999px" + }); + + if (frameWidth === undefined) { + frameWidth = Math.ceil(Math.max($body[0].clientWidth, $body.outerWidth(true))); + } + + $content.css("width", frameWidth ? frameWidth : "").css("max-width", ""); + + if (frameHeight === undefined) { + frameHeight = Math.ceil(Math.max($body[0].clientHeight, $body.outerHeight(true))); + } + + $content.css("height", frameHeight ? frameHeight : ""); + + $slide.css("overflow", "auto"); + } + + $content.removeClass("fancybox-is-hidden"); + }); + } else { + self.afterLoad(slide); + } + + $iframe.attr("src", slide.src); + + // Remove iframe if closing or changing gallery item + $slide.one("onReset", function() { + // This helps IE not to throw errors when closing + try { + $(this) + .find("iframe") + .hide() + .unbind() + .attr("src", "//about:blank"); + } catch (ignore) {} + + $(this) + .off("refresh.fb") + .empty(); + + slide.isLoaded = false; + slide.isRevealed = false; + }); + }, + + // Wrap and append content to the slide + // ====================================== + + setContent: function(slide, content) { + var self = this; + + if (self.isClosing) { + return; + } + + self.hideLoading(slide); + + if (slide.$content) { + $.fancybox.stop(slide.$content); + } + + slide.$slide.empty(); + + // If content is a jQuery object, then it will be moved to the slide. + // The placeholder is created so we will know where to put it back. + if (isQuery(content) && content.parent().length) { + // Make sure content is not already moved to fancyBox + if (content.hasClass("fancybox-content") || content.parent().hasClass("fancybox-content")) { + content.parents(".fancybox-slide").trigger("onReset"); + } + + // Create temporary element marking original place of the content + slide.$placeholder = $("
    ") + .hide() + .insertAfter(content); + + // Make sure content is visible + content.css("display", "inline-block"); + } else if (!slide.hasError) { + // If content is just a plain text, try to convert it to html + if ($.type(content) === "string") { + content = $("
    ") + .append($.trim(content)) + .contents(); + } + + // If "filter" option is provided, then filter content + if (slide.opts.filter) { + content = $("
    ") + .html(content) + .find(slide.opts.filter); + } + } + + slide.$slide.one("onReset", function() { + // Pause all html5 video/audio + $(this) + .find("video,audio") + .trigger("pause"); + + // Put content back + if (slide.$placeholder) { + slide.$placeholder.after(content.removeClass("fancybox-content").hide()).remove(); + + slide.$placeholder = null; + } + + // Remove custom close button + if (slide.$smallBtn) { + slide.$smallBtn.remove(); + + slide.$smallBtn = null; + } + + // Remove content and mark slide as not loaded + if (!slide.hasError) { + $(this).empty(); + + slide.isLoaded = false; + slide.isRevealed = false; + } + }); + + $(content).appendTo(slide.$slide); + + if ($(content).is("video,audio")) { + $(content).addClass("fancybox-video"); + + $(content).wrap("
    "); + + slide.contentType = "video"; + + slide.opts.width = slide.opts.width || $(content).attr("width"); + slide.opts.height = slide.opts.height || $(content).attr("height"); + } + + slide.$content = slide.$slide + .children() + .filter("div,form,main,video,audio,article,.fancybox-content") + .first(); + + slide.$content.siblings().hide(); + + // Re-check if there is a valid content + // (in some cases, ajax response can contain various elements or plain text) + if (!slide.$content.length) { + slide.$content = slide.$slide + .wrapInner("
    ") + .children() + .first(); + } + + slide.$content.addClass("fancybox-content"); + + slide.$slide.addClass("fancybox-slide--" + slide.contentType); + + self.afterLoad(slide); + }, + + // Display error message + // ===================== + + setError: function(slide) { + slide.hasError = true; + + slide.$slide + .trigger("onReset") + .removeClass("fancybox-slide--" + slide.contentType) + .addClass("fancybox-slide--error"); + + slide.contentType = "html"; + + this.setContent(slide, this.translate(slide, slide.opts.errorTpl)); + + if (slide.pos === this.currPos) { + this.isAnimating = false; + } + }, + + // Show loading icon inside the slide + // ================================== + + showLoading: function(slide) { + var self = this; + + slide = slide || self.current; + + if (slide && !slide.$spinner) { + slide.$spinner = $(self.translate(self, self.opts.spinnerTpl)) + .appendTo(slide.$slide) + .hide() + .fadeIn("fast"); + } + }, + + // Remove loading icon from the slide + // ================================== + + hideLoading: function(slide) { + var self = this; + + slide = slide || self.current; + + if (slide && slide.$spinner) { + slide.$spinner.stop().remove(); + + delete slide.$spinner; + } + }, + + // Adjustments after slide content has been loaded + // =============================================== + + afterLoad: function(slide) { + var self = this; + + if (self.isClosing) { + return; + } + + slide.isLoading = false; + slide.isLoaded = true; + + self.trigger("afterLoad", slide); + + self.hideLoading(slide); + + // Add small close button + if (slide.opts.smallBtn && (!slide.$smallBtn || !slide.$smallBtn.length)) { + slide.$smallBtn = $(self.translate(slide, slide.opts.btnTpl.smallBtn)).appendTo(slide.$content); + } + + // Disable right click + if (slide.opts.protect && slide.$content && !slide.hasError) { + slide.$content.on("contextmenu.fb", function(e) { + if (e.button == 2) { + e.preventDefault(); + } + + return true; + }); + + // Add fake element on top of the image + // This makes a bit harder for user to select image + if (slide.type === "image") { + $('
    ').appendTo(slide.$content); + } + } + + self.adjustCaption(slide); + + self.adjustLayout(slide); + + if (slide.pos === self.currPos) { + self.updateCursor(); + } + + self.revealContent(slide); + }, + + // Prevent caption overlap, + // fix css inconsistency across browsers + // ===================================== + + adjustCaption: function(slide) { + var self = this, + current = slide || self.current, + caption = current.opts.caption, + preventOverlap = current.opts.preventCaptionOverlap, + $caption = self.$refs.caption, + $clone, + captionH = false; + + $caption.toggleClass("fancybox-caption--separate", preventOverlap); + + if (preventOverlap && caption && caption.length) { + if (current.pos !== self.currPos) { + $clone = $caption.clone().appendTo($caption.parent()); + + $clone + .children() + .eq(0) + .empty() + .html(caption); + + captionH = $clone.outerHeight(true); + + $clone.empty().remove(); + } else if (self.$caption) { + captionH = self.$caption.outerHeight(true); + } + + current.$slide.css("padding-bottom", captionH || ""); + } + }, + + // Simple hack to fix inconsistency across browsers, described here (affects Edge, too): + // https://bugzilla.mozilla.org/show_bug.cgi?id=748518 + // ==================================================================================== + + adjustLayout: function(slide) { + var self = this, + current = slide || self.current, + scrollHeight, + marginBottom, + inlinePadding, + actualPadding; + + if (current.isLoaded && current.opts.disableLayoutFix !== true) { + current.$content.css("margin-bottom", ""); + + // If we would always set margin-bottom for the content, + // then it would potentially break vertical align + if (current.$content.outerHeight() > current.$slide.height() + 0.5) { + inlinePadding = current.$slide[0].style["padding-bottom"]; + actualPadding = current.$slide.css("padding-bottom"); + + if (parseFloat(actualPadding) > 0) { + scrollHeight = current.$slide[0].scrollHeight; + + current.$slide.css("padding-bottom", 0); + + if (Math.abs(scrollHeight - current.$slide[0].scrollHeight) < 1) { + marginBottom = actualPadding; + } + + current.$slide.css("padding-bottom", inlinePadding); + } + } + + current.$content.css("margin-bottom", marginBottom); + } + }, + + // Make content visible + // This method is called right after content has been loaded or + // user navigates gallery and transition should start + // ============================================================ + + revealContent: function(slide) { + var self = this, + $slide = slide.$slide, + end = false, + start = false, + isMoved = self.isMoved(slide), + isRevealed = slide.isRevealed, + effect, + effectClassName, + duration, + opacity; + + slide.isRevealed = true; + + effect = slide.opts[self.firstRun ? "animationEffect" : "transitionEffect"]; + duration = slide.opts[self.firstRun ? "animationDuration" : "transitionDuration"]; + + duration = parseInt(slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10); + + if (isMoved || slide.pos !== self.currPos || !duration) { + effect = false; + } + + // Check if can zoom + if (effect === "zoom") { + if (slide.pos === self.currPos && duration && slide.type === "image" && !slide.hasError && (start = self.getThumbPos(slide))) { + end = self.getFitPos(slide); + } else { + effect = "fade"; + } + } + + // Zoom animation + // ============== + if (effect === "zoom") { + self.isAnimating = true; + + end.scaleX = end.width / start.width; + end.scaleY = end.height / start.height; + + // Check if we need to animate opacity + opacity = slide.opts.zoomOpacity; + + if (opacity == "auto") { + opacity = Math.abs(slide.width / slide.height - start.width / start.height) > 0.1; + } + + if (opacity) { + start.opacity = 0.1; + end.opacity = 1; + } + + // Draw image at start position + $.fancybox.setTranslate(slide.$content.removeClass("fancybox-is-hidden"), start); + + forceRedraw(slide.$content); + + // Start animation + $.fancybox.animate(slide.$content, end, duration, function() { + self.isAnimating = false; + + self.complete(); + }); + + return; + } + + self.updateSlide(slide); + + // Simply show content if no effect + // ================================ + if (!effect) { + slide.$content.removeClass("fancybox-is-hidden"); + + if (!isRevealed && isMoved && slide.type === "image" && !slide.hasError) { + slide.$content.hide().fadeIn("fast"); + } + + if (slide.pos === self.currPos) { + self.complete(); + } + + return; + } + + // Prepare for CSS transiton + // ========================= + $.fancybox.stop($slide); + + //effectClassName = "fancybox-animated fancybox-slide--" + (slide.pos >= self.prevPos ? "next" : "previous") + " fancybox-fx-" + effect; + effectClassName = "fancybox-slide--" + (slide.pos >= self.prevPos ? "next" : "previous") + " fancybox-animated fancybox-fx-" + effect; + + $slide.addClass(effectClassName).removeClass("fancybox-slide--current"); //.addClass(effectClassName); + + slide.$content.removeClass("fancybox-is-hidden"); + + // Force reflow + forceRedraw($slide); + + if (slide.type !== "image") { + slide.$content.hide().show(0); + } + + $.fancybox.animate( + $slide, + "fancybox-slide--current", + duration, + function() { + $slide.removeClass(effectClassName).css({ + transform: "", + opacity: "" + }); + + if (slide.pos === self.currPos) { + self.complete(); + } + }, + true + ); + }, + + // Check if we can and have to zoom from thumbnail + //================================================ + + getThumbPos: function(slide) { + var rez = false, + $thumb = slide.$thumb, + thumbPos, + btw, + brw, + bbw, + blw; + + if (!$thumb || !inViewport($thumb[0])) { + return false; + } + + thumbPos = $.fancybox.getTranslate($thumb); + + btw = parseFloat($thumb.css("border-top-width") || 0); + brw = parseFloat($thumb.css("border-right-width") || 0); + bbw = parseFloat($thumb.css("border-bottom-width") || 0); + blw = parseFloat($thumb.css("border-left-width") || 0); + + rez = { + top: thumbPos.top + btw, + left: thumbPos.left + blw, + width: thumbPos.width - brw - blw, + height: thumbPos.height - btw - bbw, + scaleX: 1, + scaleY: 1 + }; + + return thumbPos.width > 0 && thumbPos.height > 0 ? rez : false; + }, + + // Final adjustments after current gallery item is moved to position + // and it`s content is loaded + // ================================================================== + + complete: function() { + var self = this, + current = self.current, + slides = {}, + $el; + + if (self.isMoved() || !current.isLoaded) { + return; + } + + if (!current.isComplete) { + current.isComplete = true; + + current.$slide.siblings().trigger("onReset"); + + self.preload("inline"); + + // Trigger any CSS transiton inside the slide + forceRedraw(current.$slide); + + current.$slide.addClass("fancybox-slide--complete"); + + // Remove unnecessary slides + $.each(self.slides, function(key, slide) { + if (slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1) { + slides[slide.pos] = slide; + } else if (slide) { + $.fancybox.stop(slide.$slide); + + slide.$slide.off().remove(); + } + }); + + self.slides = slides; + } + + self.isAnimating = false; + + self.updateCursor(); + + self.trigger("afterShow"); + + // Autoplay first html5 video/audio + if (!!current.opts.video.autoStart) { + current.$slide + .find("video,audio") + .filter(":visible:first") + .trigger("play") + .one("ended", function() { + if (this.webkitExitFullscreen) { + this.webkitExitFullscreen(); + } + + self.next(); + }); + } + + // Try to focus on the first focusable element + if (current.opts.autoFocus && current.contentType === "html") { + // Look for the first input with autofocus attribute + $el = current.$content.find("input[autofocus]:enabled:visible:first"); + + if ($el.length) { + $el.trigger("focus"); + } else { + self.focus(null, true); + } + } + + // Avoid jumping + current.$slide.scrollTop(0).scrollLeft(0); + }, + + // Preload next and previous slides + // ================================ + + preload: function(type) { + var self = this, + prev, + next; + + if (self.group.length < 2) { + return; + } + + next = self.slides[self.currPos + 1]; + prev = self.slides[self.currPos - 1]; + + if (prev && prev.type === type) { + self.loadSlide(prev); + } + + if (next && next.type === type) { + self.loadSlide(next); + } + }, + + // Try to find and focus on the first focusable element + // ==================================================== + + focus: function(e, firstRun) { + var self = this, + focusableStr = [ + "a[href]", + "area[href]", + 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', + "select:not([disabled]):not([aria-hidden])", + "textarea:not([disabled]):not([aria-hidden])", + "button:not([disabled]):not([aria-hidden])", + "iframe", + "object", + "embed", + "video", + "audio", + "[contenteditable]", + '[tabindex]:not([tabindex^="-"])' + ].join(","), + focusableItems, + focusedItemIndex; + + if (self.isClosing) { + return; + } + + if (e || !self.current || !self.current.isComplete) { + // Focus on any element inside fancybox + focusableItems = self.$refs.container.find("*:visible"); + } else { + // Focus inside current slide + focusableItems = self.current.$slide.find("*:visible" + (firstRun ? ":not(.fancybox-close-small)" : "")); + } + + focusableItems = focusableItems.filter(focusableStr).filter(function() { + return $(this).css("visibility") !== "hidden" && !$(this).hasClass("disabled"); + }); + + if (focusableItems.length) { + focusedItemIndex = focusableItems.index(document.activeElement); + + if (e && e.shiftKey) { + // Back tab + if (focusedItemIndex < 0 || focusedItemIndex == 0) { + e.preventDefault(); + + focusableItems.eq(focusableItems.length - 1).trigger("focus"); + } + } else { + // Outside or Forward tab + if (focusedItemIndex < 0 || focusedItemIndex == focusableItems.length - 1) { + if (e) { + e.preventDefault(); + } + + focusableItems.eq(0).trigger("focus"); + } + } + } else { + self.$refs.container.trigger("focus"); + } + }, + + // Activates current instance - brings container to the front and enables keyboard, + // notifies other instances about deactivating + // ================================================================================= + + activate: function() { + var self = this; + + // Deactivate all instances + $(".fancybox-container").each(function() { + var instance = $(this).data("FancyBox"); + + // Skip self and closing instances + if (instance && instance.id !== self.id && !instance.isClosing) { + instance.trigger("onDeactivate"); + + instance.removeEvents(); + + instance.isVisible = false; + } + }); + + self.isVisible = true; + + if (self.current || self.isIdle) { + self.update(); + + self.updateControls(); + } + + self.trigger("onActivate"); + + self.addEvents(); + }, + + // Start closing procedure + // This will start "zoom-out" animation if needed and clean everything up afterwards + // ================================================================================= + + close: function(e, d) { + var self = this, + current = self.current, + effect, + duration, + $content, + domRect, + opacity, + start, + end; + + var done = function() { + self.cleanUp(e); + }; + + if (self.isClosing) { + return false; + } + + self.isClosing = true; + + // If beforeClose callback prevents closing, make sure content is centered + if (self.trigger("beforeClose", e) === false) { + self.isClosing = false; + + requestAFrame(function() { + self.update(); + }); + + return false; + } + + // Remove all events + // If there are multiple instances, they will be set again by "activate" method + self.removeEvents(); + + $content = current.$content; + effect = current.opts.animationEffect; + duration = $.isNumeric(d) ? d : effect ? current.opts.animationDuration : 0; + + current.$slide.removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"); + + if (e !== true) { + $.fancybox.stop(current.$slide); + } else { + effect = false; + } + + // Remove other slides + current.$slide + .siblings() + .trigger("onReset") + .remove(); + + // Trigger animations + if (duration) { + self.$refs.container + .removeClass("fancybox-is-open") + .addClass("fancybox-is-closing") + .css("transition-duration", duration + "ms"); + } + + // Clean up + self.hideLoading(current); + + self.hideControls(true); + + self.updateCursor(); + + // Check if possible to zoom-out + if ( + effect === "zoom" && + !($content && duration && current.type === "image" && !self.isMoved() && !current.hasError && (end = self.getThumbPos(current))) + ) { + effect = "fade"; + } + + if (effect === "zoom") { + $.fancybox.stop($content); + + domRect = $.fancybox.getTranslate($content); + + start = { + top: domRect.top, + left: domRect.left, + scaleX: domRect.width / end.width, + scaleY: domRect.height / end.height, + width: end.width, + height: end.height + }; + + // Check if we need to animate opacity + opacity = current.opts.zoomOpacity; + + if (opacity == "auto") { + opacity = Math.abs(current.width / current.height - end.width / end.height) > 0.1; + } + + if (opacity) { + end.opacity = 0; + } + + $.fancybox.setTranslate($content, start); + + forceRedraw($content); + + $.fancybox.animate($content, end, duration, done); + + return true; + } + + if (effect && duration) { + $.fancybox.animate( + current.$slide.addClass("fancybox-slide--previous").removeClass("fancybox-slide--current"), + "fancybox-animated fancybox-fx-" + effect, + duration, + done + ); + } else { + // If skip animation + if (e === true) { + setTimeout(done, duration); + } else { + done(); + } + } + + return true; + }, + + // Final adjustments after removing the instance + // ============================================= + + cleanUp: function(e) { + var self = this, + instance, + $focus = self.current.opts.$orig, + x, + y; + + self.current.$slide.trigger("onReset"); + + self.$refs.container.empty().remove(); + + self.trigger("afterClose", e); + + // Place back focus + if (!!self.current.opts.backFocus) { + if (!$focus || !$focus.length || !$focus.is(":visible")) { + $focus = self.$trigger; + } + + if ($focus && $focus.length) { + x = window.scrollX; + y = window.scrollY; + + $focus.trigger("focus"); + + $("html, body") + .scrollTop(y) + .scrollLeft(x); + } + } + + self.current = null; + + // Check if there are other instances + instance = $.fancybox.getInstance(); + + if (instance) { + instance.activate(); + } else { + $("body").removeClass("fancybox-active compensate-for-scrollbar"); + + $("#fancybox-style-noscroll").remove(); + } + }, + + // Call callback and trigger an event + // ================================== + + trigger: function(name, slide) { + var args = Array.prototype.slice.call(arguments, 1), + self = this, + obj = slide && slide.opts ? slide : self.current, + rez; + + if (obj) { + args.unshift(obj); + } else { + obj = self; + } + + args.unshift(self); + + if ($.isFunction(obj.opts[name])) { + rez = obj.opts[name].apply(obj, args); + } + + if (rez === false) { + return rez; + } + + if (name === "afterClose" || !self.$refs) { + $D.trigger(name + ".fb", args); + } else { + self.$refs.container.trigger(name + ".fb", args); + } + }, + + // Update infobar values, navigation button states and reveal caption + // ================================================================== + + updateControls: function() { + var self = this, + current = self.current, + index = current.index, + $container = self.$refs.container, + $caption = self.$refs.caption, + caption = current.opts.caption; + + // Recalculate content dimensions + current.$slide.trigger("refresh"); + + // Set caption + if (caption && caption.length) { + self.$caption = $caption; + + $caption + .children() + .eq(0) + .html(caption); + } else { + self.$caption = null; + } + + if (!self.hasHiddenControls && !self.isIdle) { + self.showControls(); + } + + // Update info and navigation elements + $container.find("[data-fancybox-count]").html(self.group.length); + $container.find("[data-fancybox-index]").html(index + 1); + + $container.find("[data-fancybox-prev]").prop("disabled", !current.opts.loop && index <= 0); + $container.find("[data-fancybox-next]").prop("disabled", !current.opts.loop && index >= self.group.length - 1); + + if (current.type === "image") { + // Re-enable buttons; update download button source + $container + .find("[data-fancybox-zoom]") + .show() + .end() + .find("[data-fancybox-download]") + .attr("href", current.opts.image.src || current.src) + .show(); + } else if (current.opts.toolbar) { + $container.find("[data-fancybox-download],[data-fancybox-zoom]").hide(); + } + + // Make sure focus is not on disabled button/element + if ($(document.activeElement).is(":hidden,[disabled]")) { + self.$refs.container.trigger("focus"); + } + }, + + // Hide toolbar and caption + // ======================== + + hideControls: function(andCaption) { + var self = this, + arr = ["infobar", "toolbar", "nav"]; + + if (andCaption || !self.current.opts.preventCaptionOverlap) { + arr.push("caption"); + } + + this.$refs.container.removeClass( + arr + .map(function(i) { + return "fancybox-show-" + i; + }) + .join(" ") + ); + + this.hasHiddenControls = true; + }, + + showControls: function() { + var self = this, + opts = self.current ? self.current.opts : self.opts, + $container = self.$refs.container; + + self.hasHiddenControls = false; + self.idleSecondsCounter = 0; + + $container + .toggleClass("fancybox-show-toolbar", !!(opts.toolbar && opts.buttons)) + .toggleClass("fancybox-show-infobar", !!(opts.infobar && self.group.length > 1)) + .toggleClass("fancybox-show-caption", !!self.$caption) + .toggleClass("fancybox-show-nav", !!(opts.arrows && self.group.length > 1)) + .toggleClass("fancybox-is-modal", !!opts.modal); + }, + + // Toggle toolbar and caption + // ========================== + + toggleControls: function() { + if (this.hasHiddenControls) { + this.showControls(); + } else { + this.hideControls(); + } + } + }); + + $.fancybox = { + version: "3.5.6", + defaults: defaults, + + // Get current instance and execute a command. + // + // Examples of usage: + // + // $instance = $.fancybox.getInstance(); + // $.fancybox.getInstance().jumpTo( 1 ); + // $.fancybox.getInstance( 'jumpTo', 1 ); + // $.fancybox.getInstance( function() { + // console.info( this.currIndex ); + // }); + // ====================================================== + + getInstance: function(command) { + var instance = $('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"), + args = Array.prototype.slice.call(arguments, 1); + + if (instance instanceof FancyBox) { + if ($.type(command) === "string") { + instance[command].apply(instance, args); + } else if ($.type(command) === "function") { + command.apply(instance, args); + } + + return instance; + } + + return false; + }, + + // Create new instance + // =================== + + open: function(items, opts, index) { + return new FancyBox(items, opts, index); + }, + + // Close current or all instances + // ============================== + + close: function(all) { + var instance = this.getInstance(); + + if (instance) { + instance.close(); + + // Try to find and close next instance + if (all === true) { + this.close(all); + } + } + }, + + // Close all instances and unbind all events + // ========================================= + + destroy: function() { + this.close(true); + + $D.add("body").off("click.fb-start", "**"); + }, + + // Try to detect mobile devices + // ============================ + + isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), + + // Detect if 'translate3d' support is available + // ============================================ + + use3d: (function() { + var div = document.createElement("div"); + + return ( + window.getComputedStyle && + window.getComputedStyle(div) && + window.getComputedStyle(div).getPropertyValue("transform") && + !(document.documentMode && document.documentMode < 11) + ); + })(), + + // Helper function to get current visual state of an element + // returns array[ top, left, horizontal-scale, vertical-scale, opacity ] + // ===================================================================== + + getTranslate: function($el) { + var domRect; + + if (!$el || !$el.length) { + return false; + } + + domRect = $el[0].getBoundingClientRect(); + + return { + top: domRect.top || 0, + left: domRect.left || 0, + width: domRect.width, + height: domRect.height, + opacity: parseFloat($el.css("opacity")) + }; + }, + + // Shortcut for setting "translate3d" properties for element + // Can set be used to set opacity, too + // ======================================================== + + setTranslate: function($el, props) { + var str = "", + css = {}; + + if (!$el || !props) { + return; + } + + if (props.left !== undefined || props.top !== undefined) { + str = + (props.left === undefined ? $el.position().left : props.left) + + "px, " + + (props.top === undefined ? $el.position().top : props.top) + + "px"; + + if (this.use3d) { + str = "translate3d(" + str + ", 0px)"; + } else { + str = "translate(" + str + ")"; + } + } + + if (props.scaleX !== undefined && props.scaleY !== undefined) { + str += " scale(" + props.scaleX + ", " + props.scaleY + ")"; + } else if (props.scaleX !== undefined) { + str += " scaleX(" + props.scaleX + ")"; + } + + if (str.length) { + css.transform = str; + } + + if (props.opacity !== undefined) { + css.opacity = props.opacity; + } + + if (props.width !== undefined) { + css.width = props.width; + } + + if (props.height !== undefined) { + css.height = props.height; + } + + return $el.css(css); + }, + + // Simple CSS transition handler + // ============================= + + animate: function($el, to, duration, callback, leaveAnimationName) { + var self = this, + from; + + if ($.isFunction(duration)) { + callback = duration; + duration = null; + } + + self.stop($el); + + from = self.getTranslate($el); + + $el.on(transitionEnd, function(e) { + // Skip events from child elements and z-index change + if (e && e.originalEvent && (!$el.is(e.originalEvent.target) || e.originalEvent.propertyName == "z-index")) { + return; + } + + self.stop($el); + + if ($.isNumeric(duration)) { + $el.css("transition-duration", ""); + } + + if ($.isPlainObject(to)) { + if (to.scaleX !== undefined && to.scaleY !== undefined) { + self.setTranslate($el, { + top: to.top, + left: to.left, + width: from.width * to.scaleX, + height: from.height * to.scaleY, + scaleX: 1, + scaleY: 1 + }); + } + } else if (leaveAnimationName !== true) { + $el.removeClass(to); + } + + if ($.isFunction(callback)) { + callback(e); + } + }); + + if ($.isNumeric(duration)) { + $el.css("transition-duration", duration + "ms"); + } + + // Start animation by changing CSS properties or class name + if ($.isPlainObject(to)) { + if (to.scaleX !== undefined && to.scaleY !== undefined) { + delete to.width; + delete to.height; + + if ($el.parent().hasClass("fancybox-slide--image")) { + $el.parent().addClass("fancybox-is-scaling"); + } + } + + $.fancybox.setTranslate($el, to); + } else { + $el.addClass(to); + } + + // Make sure that `transitionend` callback gets fired + $el.data( + "timer", + setTimeout(function() { + $el.trigger(transitionEnd); + }, duration + 33) + ); + }, + + stop: function($el, callCallback) { + if ($el && $el.length) { + clearTimeout($el.data("timer")); + + if (callCallback) { + $el.trigger(transitionEnd); + } + + $el.off(transitionEnd).css("transition-duration", ""); + + $el.parent().removeClass("fancybox-is-scaling"); + } + } + }; + + // Default click handler for "fancyboxed" links + // ============================================ + + function _run(e, opts) { + var items = [], + index = 0, + $target, + value, + instance; + + // Avoid opening multiple times + if (e && e.isDefaultPrevented()) { + return; + } + + e.preventDefault(); + + opts = opts || {}; + + if (e && e.data) { + opts = mergeOpts(e.data.options, opts); + } + + $target = opts.$target || $(e.currentTarget).trigger("blur"); + instance = $.fancybox.getInstance(); + + if (instance && instance.$trigger && instance.$trigger.is($target)) { + return; + } + + if (opts.selector) { + items = $(opts.selector); + } else { + // Get all related items and find index for clicked one + value = $target.attr("data-fancybox") || ""; + + if (value) { + items = e.data ? e.data.items : []; + items = items.length ? items.filter('[data-fancybox="' + value + '"]') : $('[data-fancybox="' + value + '"]'); + } else { + items = [$target]; + } + } + + index = $(items).index($target); + + // Sometimes current item can not be found + if (index < 0) { + index = 0; + } + + instance = $.fancybox.open(items, opts, index); + + // Save last active element + instance.$trigger = $target; + } + + // Create a jQuery plugin + // ====================== + + $.fn.fancybox = function(options) { + var selector; + + options = options || {}; + selector = options.selector || false; + + if (selector) { + // Use body element instead of document so it executes first + $("body") + .off("click.fb-start", selector) + .on("click.fb-start", selector, {options: options}, _run); + } else { + this.off("click.fb-start").on( + "click.fb-start", + { + items: this, + options: options + }, + _run + ); + } + + return this; + }; + + // Self initializing plugin for all elements having `data-fancybox` attribute + // ========================================================================== + + $D.on("click.fb-start", "[data-fancybox]", _run); + + // Enable "trigger elements" + // ========================= + + $D.on("click.fb-start", "[data-fancybox-trigger]", function(e) { + $('[data-fancybox="' + $(this).attr("data-fancybox-trigger") + '"]') + .eq($(this).attr("data-fancybox-index") || 0) + .trigger("click.fb-start", { + $trigger: $(this) + }); + }); + + // Track focus event for better accessibility styling + // ================================================== + (function() { + var buttonStr = ".fancybox-button", + focusStr = "fancybox-focus", + $pressed = null; + + $D.on("mousedown mouseup focus blur", buttonStr, function(e) { + switch (e.type) { + case "mousedown": + $pressed = $(this); + break; + case "mouseup": + $pressed = null; + break; + case "focusin": + $(buttonStr).removeClass(focusStr); + + if (!$(this).is($pressed) && !$(this).is("[disabled]")) { + $(this).addClass(focusStr); + } + break; + case "focusout": + $(buttonStr).removeClass(focusStr); + break; + } + }); + })(); +})(window, document, jQuery); + +// ========================================================================== +// +// Media +// Adds additional media type support +// +// ========================================================================== +(function($) { + "use strict"; + + // Object containing properties for each media type + var defaults = { + youtube: { + matcher: /(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i, + params: { + autoplay: 1, + autohide: 1, + fs: 1, + rel: 0, + hd: 1, + wmode: "transparent", + enablejsapi: 1, + html5: 1 + }, + paramPlace: 8, + type: "iframe", + url: "https://www.youtube-nocookie.com/embed/$4", + thumb: "https://img.youtube.com/vi/$4/hqdefault.jpg" + }, + + vimeo: { + matcher: /^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/, + params: { + autoplay: 1, + hd: 1, + show_title: 1, + show_byline: 1, + show_portrait: 0, + fullscreen: 1 + }, + paramPlace: 3, + type: "iframe", + url: "//player.vimeo.com/video/$2" + }, + + instagram: { + matcher: /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, + type: "image", + url: "//$1/p/$2/media/?size=l" + }, + + // Examples: + // http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 + // https://www.google.com/maps/@37.7852006,-122.4146355,14.65z + // https://www.google.com/maps/@52.2111123,2.9237542,6.61z?hl=en + // https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572 + gmap_place: { + matcher: /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i, + type: "iframe", + url: function(rez) { + return ( + "//maps.google." + + rez[2] + + "/?ll=" + + (rez[9] ? rez[9] + "&z=" + Math.floor(rez[10]) + (rez[12] ? rez[12].replace(/^\//, "&") : "") : rez[12] + "").replace(/\?/, "&") + + "&output=" + + (rez[12] && rez[12].indexOf("layer=c") > 0 ? "svembed" : "embed") + ); + } + }, + + // Examples: + // https://www.google.com/maps/search/Empire+State+Building/ + // https://www.google.com/maps/search/?api=1&query=centurylink+field + // https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393 + gmap_search: { + matcher: /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i, + type: "iframe", + url: function(rez) { + return "//maps.google." + rez[2] + "/maps?q=" + rez[5].replace("query=", "q=").replace("api=1", "") + "&output=embed"; + } + } + }; + + // Formats matching url to final form + var format = function(url, rez, params) { + if (!url) { + return; + } + + params = params || ""; + + if ($.type(params) === "object") { + params = $.param(params, true); + } + + $.each(rez, function(key, value) { + url = url.replace("$" + key, value || ""); + }); + + if (params.length) { + url += (url.indexOf("?") > 0 ? "&" : "?") + params; + } + + return url; + }; + + $(document).on("objectNeedsType.fb", function(e, instance, item) { + var url = item.src || "", + type = false, + media, + thumb, + rez, + params, + urlParams, + paramObj, + provider; + + media = $.extend(true, {}, defaults, item.opts.media); + + // Look for any matching media type + $.each(media, function(providerName, providerOpts) { + rez = url.match(providerOpts.matcher); + + if (!rez) { + return; + } + + type = providerOpts.type; + provider = providerName; + paramObj = {}; + + if (providerOpts.paramPlace && rez[providerOpts.paramPlace]) { + urlParams = rez[providerOpts.paramPlace]; + + if (urlParams[0] == "?") { + urlParams = urlParams.substring(1); + } + + urlParams = urlParams.split("&"); + + for (var m = 0; m < urlParams.length; ++m) { + var p = urlParams[m].split("=", 2); + + if (p.length == 2) { + paramObj[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); + } + } + } + + params = $.extend(true, {}, providerOpts.params, item.opts[providerName], paramObj); + + url = + $.type(providerOpts.url) === "function" ? providerOpts.url.call(this, rez, params, item) : format(providerOpts.url, rez, params); + + thumb = + $.type(providerOpts.thumb) === "function" ? providerOpts.thumb.call(this, rez, params, item) : format(providerOpts.thumb, rez); + + if (providerName === "youtube") { + url = url.replace(/&t=((\d+)m)?(\d+)s/, function(match, p1, m, s) { + return "&start=" + ((m ? parseInt(m, 10) * 60 : 0) + parseInt(s, 10)); + }); + } else if (providerName === "vimeo") { + url = url.replace("&%23", "#"); + } + + return false; + }); + + // If it is found, then change content type and update the url + + if (type) { + if (!item.opts.thumb && !(item.opts.$thumb && item.opts.$thumb.length)) { + item.opts.thumb = thumb; + } + + if (type === "iframe") { + item.opts = $.extend(true, item.opts, { + iframe: { + preload: false, + attr: { + scrolling: "no" + } + } + }); + } + + $.extend(item, { + type: type, + src: url, + origSrc: item.src, + contentSource: provider, + contentType: type === "image" ? "image" : provider == "gmap_place" || provider == "gmap_search" ? "map" : "video" + }); + } else if (url) { + item.type = item.opts.defaultType; + } + }); + + // Load YouTube/Video API on request to detect when video finished playing + var VideoAPILoader = { + youtube: { + src: "https://www.youtube.com/iframe_api", + class: "YT", + loading: false, + loaded: false + }, + + vimeo: { + src: "https://player.vimeo.com/api/player.js", + class: "Vimeo", + loading: false, + loaded: false + }, + + load: function(vendor) { + var _this = this, + script; + + if (this[vendor].loaded) { + setTimeout(function() { + _this.done(vendor); + }); + return; + } + + if (this[vendor].loading) { + return; + } + + this[vendor].loading = true; + + script = document.createElement("script"); + script.type = "text/javascript"; + script.src = this[vendor].src; + + if (vendor === "youtube") { + window.onYouTubeIframeAPIReady = function() { + _this[vendor].loaded = true; + _this.done(vendor); + }; + } else { + script.onload = function() { + _this[vendor].loaded = true; + _this.done(vendor); + }; + } + + document.body.appendChild(script); + }, + done: function(vendor) { + var instance, $el, player; + + if (vendor === "youtube") { + delete window.onYouTubeIframeAPIReady; + } + + instance = $.fancybox.getInstance(); + + if (instance) { + $el = instance.current.$content.find("iframe"); + + if (vendor === "youtube" && YT !== undefined && YT) { + player = new YT.Player($el.attr("id"), { + events: { + onStateChange: function(e) { + if (e.data == 0) { + instance.next(); + } + } + } + }); + } else if (vendor === "vimeo" && Vimeo !== undefined && Vimeo) { + player = new Vimeo.Player($el); + + player.on("ended", function() { + instance.next(); + }); + } + } + } + }; + + $(document).on({ + "afterShow.fb": function(e, instance, current) { + if (instance.group.length > 1 && (current.contentSource === "youtube" || current.contentSource === "vimeo")) { + VideoAPILoader.load(current.contentSource); + } + } + }); +})(jQuery); + +// ========================================================================== +// +// Guestures +// Adds touch guestures, handles click and tap events +// +// ========================================================================== +(function(window, document, $) { + "use strict"; + + var requestAFrame = (function() { + return ( + window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + // if all else fails, use setTimeout + function(callback) { + return window.setTimeout(callback, 1000 / 60); + } + ); + })(); + + var cancelAFrame = (function() { + return ( + window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + function(id) { + window.clearTimeout(id); + } + ); + })(); + + var getPointerXY = function(e) { + var result = []; + + e = e.originalEvent || e || window.e; + e = e.touches && e.touches.length ? e.touches : e.changedTouches && e.changedTouches.length ? e.changedTouches : [e]; + + for (var key in e) { + if (e[key].pageX) { + result.push({ + x: e[key].pageX, + y: e[key].pageY + }); + } else if (e[key].clientX) { + result.push({ + x: e[key].clientX, + y: e[key].clientY + }); + } + } + + return result; + }; + + var distance = function(point2, point1, what) { + if (!point1 || !point2) { + return 0; + } + + if (what === "x") { + return point2.x - point1.x; + } else if (what === "y") { + return point2.y - point1.y; + } + + return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2)); + }; + + var isClickable = function($el) { + if ( + $el.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio,iframe') || + $.isFunction($el.get(0).onclick) || + $el.data("selectable") + ) { + return true; + } + + // Check for attributes like data-fancybox-next or data-fancybox-close + for (var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++) { + if (atts[i].nodeName.substr(0, 14) === "data-fancybox-") { + return true; + } + } + + return false; + }; + + var hasScrollbars = function(el) { + var overflowY = window.getComputedStyle(el)["overflow-y"], + overflowX = window.getComputedStyle(el)["overflow-x"], + vertical = (overflowY === "scroll" || overflowY === "auto") && el.scrollHeight > el.clientHeight, + horizontal = (overflowX === "scroll" || overflowX === "auto") && el.scrollWidth > el.clientWidth; + + return vertical || horizontal; + }; + + var isScrollable = function($el) { + var rez = false; + + while (true) { + rez = hasScrollbars($el.get(0)); + + if (rez) { + break; + } + + $el = $el.parent(); + + if (!$el.length || $el.hasClass("fancybox-stage") || $el.is("body")) { + break; + } + } + + return rez; + }; + + var Guestures = function(instance) { + var self = this; + + self.instance = instance; + + self.$bg = instance.$refs.bg; + self.$stage = instance.$refs.stage; + self.$container = instance.$refs.container; + + self.destroy(); + + self.$container.on("touchstart.fb.touch mousedown.fb.touch", $.proxy(self, "ontouchstart")); + }; + + Guestures.prototype.destroy = function() { + var self = this; + + self.$container.off(".fb.touch"); + + $(document).off(".fb.touch"); + + if (self.requestId) { + cancelAFrame(self.requestId); + self.requestId = null; + } + + if (self.tapped) { + clearTimeout(self.tapped); + self.tapped = null; + } + }; + + Guestures.prototype.ontouchstart = function(e) { + var self = this, + $target = $(e.target), + instance = self.instance, + current = instance.current, + $slide = current.$slide, + $content = current.$content, + isTouchDevice = e.type == "touchstart"; + + // Do not respond to both (touch and mouse) events + if (isTouchDevice) { + self.$container.off("mousedown.fb.touch"); + } + + // Ignore right click + if (e.originalEvent && e.originalEvent.button == 2) { + return; + } + + // Ignore taping on links, buttons, input elements + if (!$slide.length || !$target.length || isClickable($target) || isClickable($target.parent())) { + return; + } + // Ignore clicks on the scrollbar + if (!$target.is("img") && e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left) { + return; + } + + // Ignore clicks while zooming or closing + if (!current || instance.isAnimating || current.$slide.hasClass("fancybox-animated")) { + e.stopPropagation(); + e.preventDefault(); + + return; + } + + self.realPoints = self.startPoints = getPointerXY(e); + + if (!self.startPoints.length) { + return; + } + + // Allow other scripts to catch touch event if "touch" is set to false + if (current.touch) { + e.stopPropagation(); + } + + self.startEvent = e; + + self.canTap = true; + self.$target = $target; + self.$content = $content; + self.opts = current.opts.touch; + + self.isPanning = false; + self.isSwiping = false; + self.isZooming = false; + self.isScrolling = false; + self.canPan = instance.canPan(); + + self.startTime = new Date().getTime(); + self.distanceX = self.distanceY = self.distance = 0; + + self.canvasWidth = Math.round($slide[0].clientWidth); + self.canvasHeight = Math.round($slide[0].clientHeight); + + self.contentLastPos = null; + self.contentStartPos = $.fancybox.getTranslate(self.$content) || {top: 0, left: 0}; + self.sliderStartPos = $.fancybox.getTranslate($slide); + + // Since position will be absolute, but we need to make it relative to the stage + self.stagePos = $.fancybox.getTranslate(instance.$refs.stage); + + self.sliderStartPos.top -= self.stagePos.top; + self.sliderStartPos.left -= self.stagePos.left; + + self.contentStartPos.top -= self.stagePos.top; + self.contentStartPos.left -= self.stagePos.left; + + $(document) + .off(".fb.touch") + .on(isTouchDevice ? "touchend.fb.touch touchcancel.fb.touch" : "mouseup.fb.touch mouseleave.fb.touch", $.proxy(self, "ontouchend")) + .on(isTouchDevice ? "touchmove.fb.touch" : "mousemove.fb.touch", $.proxy(self, "ontouchmove")); + + if ($.fancybox.isMobile) { + document.addEventListener("scroll", self.onscroll, true); + } + + // Skip if clicked outside the sliding area + if (!(self.opts || self.canPan) || !($target.is(self.$stage) || self.$stage.find($target).length)) { + if ($target.is(".fancybox-image")) { + e.preventDefault(); + } + + if (!($.fancybox.isMobile && $target.parents(".fancybox-caption").length)) { + return; + } + } + + self.isScrollable = isScrollable($target) || isScrollable($target.parent()); + + // Check if element is scrollable and try to prevent default behavior (scrolling) + if (!($.fancybox.isMobile && self.isScrollable)) { + e.preventDefault(); + } + + // One finger or mouse click - swipe or pan an image + if (self.startPoints.length === 1 || current.hasError) { + if (self.canPan) { + $.fancybox.stop(self.$content); + + self.isPanning = true; + } else { + self.isSwiping = true; + } + + self.$container.addClass("fancybox-is-grabbing"); + } + + // Two fingers - zoom image + if (self.startPoints.length === 2 && current.type === "image" && (current.isLoaded || current.$ghost)) { + self.canTap = false; + self.isSwiping = false; + self.isPanning = false; + + self.isZooming = true; + + $.fancybox.stop(self.$content); + + self.centerPointStartX = (self.startPoints[0].x + self.startPoints[1].x) * 0.5 - $(window).scrollLeft(); + self.centerPointStartY = (self.startPoints[0].y + self.startPoints[1].y) * 0.5 - $(window).scrollTop(); + + self.percentageOfImageAtPinchPointX = (self.centerPointStartX - self.contentStartPos.left) / self.contentStartPos.width; + self.percentageOfImageAtPinchPointY = (self.centerPointStartY - self.contentStartPos.top) / self.contentStartPos.height; + + self.startDistanceBetweenFingers = distance(self.startPoints[0], self.startPoints[1]); + } + }; + + Guestures.prototype.onscroll = function(e) { + var self = this; + + self.isScrolling = true; + + document.removeEventListener("scroll", self.onscroll, true); + }; + + Guestures.prototype.ontouchmove = function(e) { + var self = this; + + // Make sure user has not released over iframe or disabled element + if (e.originalEvent.buttons !== undefined && e.originalEvent.buttons === 0) { + self.ontouchend(e); + return; + } + + if (self.isScrolling) { + self.canTap = false; + return; + } + + self.newPoints = getPointerXY(e); + + if (!(self.opts || self.canPan) || !self.newPoints.length || !self.newPoints.length) { + return; + } + + if (!(self.isSwiping && self.isSwiping === true)) { + e.preventDefault(); + } + + self.distanceX = distance(self.newPoints[0], self.startPoints[0], "x"); + self.distanceY = distance(self.newPoints[0], self.startPoints[0], "y"); + + self.distance = distance(self.newPoints[0], self.startPoints[0]); + + // Skip false ontouchmove events (Chrome) + if (self.distance > 0) { + if (self.isSwiping) { + self.onSwipe(e); + } else if (self.isPanning) { + self.onPan(); + } else if (self.isZooming) { + self.onZoom(); + } + } + }; + + Guestures.prototype.onSwipe = function(e) { + var self = this, + instance = self.instance, + swiping = self.isSwiping, + left = self.sliderStartPos.left || 0, + angle; + + // If direction is not yet determined + if (swiping === true) { + // We need at least 10px distance to correctly calculate an angle + if (Math.abs(self.distance) > 10) { + self.canTap = false; + + if (instance.group.length < 2 && self.opts.vertical) { + self.isSwiping = "y"; + } else if (instance.isDragging || self.opts.vertical === false || (self.opts.vertical === "auto" && $(window).width() > 800)) { + self.isSwiping = "x"; + } else { + angle = Math.abs((Math.atan2(self.distanceY, self.distanceX) * 180) / Math.PI); + + self.isSwiping = angle > 45 && angle < 135 ? "y" : "x"; + } + + if (self.isSwiping === "y" && $.fancybox.isMobile && self.isScrollable) { + self.isScrolling = true; + + return; + } + + instance.isDragging = self.isSwiping; + + // Reset points to avoid jumping, because we dropped first swipes to calculate the angle + self.startPoints = self.newPoints; + + $.each(instance.slides, function(index, slide) { + var slidePos, stagePos; + + $.fancybox.stop(slide.$slide); + + slidePos = $.fancybox.getTranslate(slide.$slide); + stagePos = $.fancybox.getTranslate(instance.$refs.stage); + + slide.$slide + .css({ + transform: "", + opacity: "", + "transition-duration": "" + }) + .removeClass("fancybox-animated") + .removeClass(function(index, className) { + return (className.match(/(^|\s)fancybox-fx-\S+/g) || []).join(" "); + }); + + if (slide.pos === instance.current.pos) { + self.sliderStartPos.top = slidePos.top - stagePos.top; + self.sliderStartPos.left = slidePos.left - stagePos.left; + } + + $.fancybox.setTranslate(slide.$slide, { + top: slidePos.top - stagePos.top, + left: slidePos.left - stagePos.left + }); + }); + + // Stop slideshow + if (instance.SlideShow && instance.SlideShow.isActive) { + instance.SlideShow.stop(); + } + } + + return; + } + + // Sticky edges + if (swiping == "x") { + if ( + self.distanceX > 0 && + (self.instance.group.length < 2 || (self.instance.current.index === 0 && !self.instance.current.opts.loop)) + ) { + left = left + Math.pow(self.distanceX, 0.8); + } else if ( + self.distanceX < 0 && + (self.instance.group.length < 2 || + (self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop)) + ) { + left = left - Math.pow(-self.distanceX, 0.8); + } else { + left = left + self.distanceX; + } + } + + self.sliderLastPos = { + top: swiping == "x" ? 0 : self.sliderStartPos.top + self.distanceY, + left: left + }; + + if (self.requestId) { + cancelAFrame(self.requestId); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + if (self.sliderLastPos) { + $.each(self.instance.slides, function(index, slide) { + var pos = slide.pos - self.instance.currPos; + + $.fancybox.setTranslate(slide.$slide, { + top: self.sliderLastPos.top, + left: self.sliderLastPos.left + pos * self.canvasWidth + pos * slide.opts.gutter + }); + }); + + self.$container.addClass("fancybox-is-sliding"); + } + }); + }; + + Guestures.prototype.onPan = function() { + var self = this; + + // Prevent accidental movement (sometimes, when tapping casually, finger can move a bit) + if (distance(self.newPoints[0], self.realPoints[0]) < ($.fancybox.isMobile ? 10 : 5)) { + self.startPoints = self.newPoints; + return; + } + + self.canTap = false; + + self.contentLastPos = self.limitMovement(); + + if (self.requestId) { + cancelAFrame(self.requestId); + } + + self.requestId = requestAFrame(function() { + $.fancybox.setTranslate(self.$content, self.contentLastPos); + }); + }; + + // Make panning sticky to the edges + Guestures.prototype.limitMovement = function() { + var self = this; + + var canvasWidth = self.canvasWidth; + var canvasHeight = self.canvasHeight; + + var distanceX = self.distanceX; + var distanceY = self.distanceY; + + var contentStartPos = self.contentStartPos; + + var currentOffsetX = contentStartPos.left; + var currentOffsetY = contentStartPos.top; + + var currentWidth = contentStartPos.width; + var currentHeight = contentStartPos.height; + + var minTranslateX, minTranslateY, maxTranslateX, maxTranslateY, newOffsetX, newOffsetY; + + if (currentWidth > canvasWidth) { + newOffsetX = currentOffsetX + distanceX; + } else { + newOffsetX = currentOffsetX; + } + + newOffsetY = currentOffsetY + distanceY; + + // Slow down proportionally to traveled distance + minTranslateX = Math.max(0, canvasWidth * 0.5 - currentWidth * 0.5); + minTranslateY = Math.max(0, canvasHeight * 0.5 - currentHeight * 0.5); + + maxTranslateX = Math.min(canvasWidth - currentWidth, canvasWidth * 0.5 - currentWidth * 0.5); + maxTranslateY = Math.min(canvasHeight - currentHeight, canvasHeight * 0.5 - currentHeight * 0.5); + + // -> + if (distanceX > 0 && newOffsetX > minTranslateX) { + newOffsetX = minTranslateX - 1 + Math.pow(-minTranslateX + currentOffsetX + distanceX, 0.8) || 0; + } + + // <- + if (distanceX < 0 && newOffsetX < maxTranslateX) { + newOffsetX = maxTranslateX + 1 - Math.pow(maxTranslateX - currentOffsetX - distanceX, 0.8) || 0; + } + + // \/ + if (distanceY > 0 && newOffsetY > minTranslateY) { + newOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8) || 0; + } + + // /\ + if (distanceY < 0 && newOffsetY < maxTranslateY) { + newOffsetY = maxTranslateY + 1 - Math.pow(maxTranslateY - currentOffsetY - distanceY, 0.8) || 0; + } + + return { + top: newOffsetY, + left: newOffsetX + }; + }; + + Guestures.prototype.limitPosition = function(newOffsetX, newOffsetY, newWidth, newHeight) { + var self = this; + + var canvasWidth = self.canvasWidth; + var canvasHeight = self.canvasHeight; + + if (newWidth > canvasWidth) { + newOffsetX = newOffsetX > 0 ? 0 : newOffsetX; + newOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX; + } else { + // Center horizontally + newOffsetX = Math.max(0, canvasWidth / 2 - newWidth / 2); + } + + if (newHeight > canvasHeight) { + newOffsetY = newOffsetY > 0 ? 0 : newOffsetY; + newOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY; + } else { + // Center vertically + newOffsetY = Math.max(0, canvasHeight / 2 - newHeight / 2); + } + + return { + top: newOffsetY, + left: newOffsetX + }; + }; + + Guestures.prototype.onZoom = function() { + var self = this; + + // Calculate current distance between points to get pinch ratio and new width and height + var contentStartPos = self.contentStartPos; + + var currentWidth = contentStartPos.width; + var currentHeight = contentStartPos.height; + + var currentOffsetX = contentStartPos.left; + var currentOffsetY = contentStartPos.top; + + var endDistanceBetweenFingers = distance(self.newPoints[0], self.newPoints[1]); + + var pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers; + + var newWidth = Math.floor(currentWidth * pinchRatio); + var newHeight = Math.floor(currentHeight * pinchRatio); + + // This is the translation due to pinch-zooming + var translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX; + var translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY; + + // Point between the two touches + var centerPointEndX = (self.newPoints[0].x + self.newPoints[1].x) / 2 - $(window).scrollLeft(); + var centerPointEndY = (self.newPoints[0].y + self.newPoints[1].y) / 2 - $(window).scrollTop(); + + // And this is the translation due to translation of the centerpoint + // between the two fingers + var translateFromTranslatingX = centerPointEndX - self.centerPointStartX; + var translateFromTranslatingY = centerPointEndY - self.centerPointStartY; + + // The new offset is the old/current one plus the total translation + var newOffsetX = currentOffsetX + (translateFromZoomingX + translateFromTranslatingX); + var newOffsetY = currentOffsetY + (translateFromZoomingY + translateFromTranslatingY); + + var newPos = { + top: newOffsetY, + left: newOffsetX, + scaleX: pinchRatio, + scaleY: pinchRatio + }; + + self.canTap = false; + + self.newWidth = newWidth; + self.newHeight = newHeight; + + self.contentLastPos = newPos; + + if (self.requestId) { + cancelAFrame(self.requestId); + } + + self.requestId = requestAFrame(function() { + $.fancybox.setTranslate(self.$content, self.contentLastPos); + }); + }; + + Guestures.prototype.ontouchend = function(e) { + var self = this; + + var swiping = self.isSwiping; + var panning = self.isPanning; + var zooming = self.isZooming; + var scrolling = self.isScrolling; + + self.endPoints = getPointerXY(e); + self.dMs = Math.max(new Date().getTime() - self.startTime, 1); + + self.$container.removeClass("fancybox-is-grabbing"); + + $(document).off(".fb.touch"); + + document.removeEventListener("scroll", self.onscroll, true); + + if (self.requestId) { + cancelAFrame(self.requestId); + + self.requestId = null; + } + + self.isSwiping = false; + self.isPanning = false; + self.isZooming = false; + self.isScrolling = false; + + self.instance.isDragging = false; + + if (self.canTap) { + return self.onTap(e); + } + + self.speed = 100; + + // Speed in px/ms + self.velocityX = (self.distanceX / self.dMs) * 0.5; + self.velocityY = (self.distanceY / self.dMs) * 0.5; + + if (panning) { + self.endPanning(); + } else if (zooming) { + self.endZooming(); + } else { + self.endSwiping(swiping, scrolling); + } + + return; + }; + + Guestures.prototype.endSwiping = function(swiping, scrolling) { + var self = this, + ret = false, + len = self.instance.group.length, + distanceX = Math.abs(self.distanceX), + canAdvance = swiping == "x" && len > 1 && ((self.dMs > 130 && distanceX > 10) || distanceX > 50), + speedX = 300; + + self.sliderLastPos = null; + + // Close if swiped vertically / navigate if horizontally + if (swiping == "y" && !scrolling && Math.abs(self.distanceY) > 50) { + // Continue vertical movement + $.fancybox.animate( + self.instance.current.$slide, + { + top: self.sliderStartPos.top + self.distanceY + self.velocityY * 150, + opacity: 0 + }, + 200 + ); + ret = self.instance.close(true, 250); + } else if (canAdvance && self.distanceX > 0) { + ret = self.instance.previous(speedX); + } else if (canAdvance && self.distanceX < 0) { + ret = self.instance.next(speedX); + } + + if (ret === false && (swiping == "x" || swiping == "y")) { + self.instance.centerSlide(200); + } + + self.$container.removeClass("fancybox-is-sliding"); + }; + + // Limit panning from edges + // ======================== + Guestures.prototype.endPanning = function() { + var self = this, + newOffsetX, + newOffsetY, + newPos; + + if (!self.contentLastPos) { + return; + } + + if (self.opts.momentum === false || self.dMs > 350) { + newOffsetX = self.contentLastPos.left; + newOffsetY = self.contentLastPos.top; + } else { + // Continue movement + newOffsetX = self.contentLastPos.left + self.velocityX * 500; + newOffsetY = self.contentLastPos.top + self.velocityY * 500; + } + + newPos = self.limitPosition(newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height); + + newPos.width = self.contentStartPos.width; + newPos.height = self.contentStartPos.height; + + $.fancybox.animate(self.$content, newPos, 366); + }; + + Guestures.prototype.endZooming = function() { + var self = this; + + var current = self.instance.current; + + var newOffsetX, newOffsetY, newPos, reset; + + var newWidth = self.newWidth; + var newHeight = self.newHeight; + + if (!self.contentLastPos) { + return; + } + + newOffsetX = self.contentLastPos.left; + newOffsetY = self.contentLastPos.top; + + reset = { + top: newOffsetY, + left: newOffsetX, + width: newWidth, + height: newHeight, + scaleX: 1, + scaleY: 1 + }; + + // Reset scalex/scaleY values; this helps for perfomance and does not break animation + $.fancybox.setTranslate(self.$content, reset); + + if (newWidth < self.canvasWidth && newHeight < self.canvasHeight) { + self.instance.scaleToFit(150); + } else if (newWidth > current.width || newHeight > current.height) { + self.instance.scaleToActual(self.centerPointStartX, self.centerPointStartY, 150); + } else { + newPos = self.limitPosition(newOffsetX, newOffsetY, newWidth, newHeight); + + $.fancybox.animate(self.$content, newPos, 150); + } + }; + + Guestures.prototype.onTap = function(e) { + var self = this; + var $target = $(e.target); + + var instance = self.instance; + var current = instance.current; + + var endPoints = (e && getPointerXY(e)) || self.startPoints; + + var tapX = endPoints[0] ? endPoints[0].x - $(window).scrollLeft() - self.stagePos.left : 0; + var tapY = endPoints[0] ? endPoints[0].y - $(window).scrollTop() - self.stagePos.top : 0; + + var where; + + var process = function(prefix) { + var action = current.opts[prefix]; + + if ($.isFunction(action)) { + action = action.apply(instance, [current, e]); + } + + if (!action) { + return; + } + + switch (action) { + case "close": + instance.close(self.startEvent); + + break; + + case "toggleControls": + instance.toggleControls(); + + break; + + case "next": + instance.next(); + + break; + + case "nextOrClose": + if (instance.group.length > 1) { + instance.next(); + } else { + instance.close(self.startEvent); + } + + break; + + case "zoom": + if (current.type == "image" && (current.isLoaded || current.$ghost)) { + if (instance.canPan()) { + instance.scaleToFit(); + } else if (instance.isScaledDown()) { + instance.scaleToActual(tapX, tapY); + } else if (instance.group.length < 2) { + instance.close(self.startEvent); + } + } + + break; + } + }; + + // Ignore right click + if (e.originalEvent && e.originalEvent.button == 2) { + return; + } + + // Skip if clicked on the scrollbar + if (!$target.is("img") && tapX > $target[0].clientWidth + $target.offset().left) { + return; + } + + // Check where is clicked + if ($target.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container")) { + where = "Outside"; + } else if ($target.is(".fancybox-slide")) { + where = "Slide"; + } else if ( + instance.current.$content && + instance.current.$content + .find($target) + .addBack() + .filter($target).length + ) { + where = "Content"; + } else { + return; + } + + // Check if this is a double tap + if (self.tapped) { + // Stop previously created single tap + clearTimeout(self.tapped); + self.tapped = null; + + // Skip if distance between taps is too big + if (Math.abs(tapX - self.tapX) > 50 || Math.abs(tapY - self.tapY) > 50) { + return this; + } + + // OK, now we assume that this is a double-tap + process("dblclick" + where); + } else { + // Single tap will be processed if user has not clicked second time within 300ms + // or there is no need to wait for double-tap + self.tapX = tapX; + self.tapY = tapY; + + if (current.opts["dblclick" + where] && current.opts["dblclick" + where] !== current.opts["click" + where]) { + self.tapped = setTimeout(function() { + self.tapped = null; + + if (!instance.isAnimating) { + process("click" + where); + } + }, 500); + } else { + process("click" + where); + } + } + + return this; + }; + + $(document) + .on("onActivate.fb", function(e, instance) { + if (instance && !instance.Guestures) { + instance.Guestures = new Guestures(instance); + } + }) + .on("beforeClose.fb", function(e, instance) { + if (instance && instance.Guestures) { + instance.Guestures.destroy(); + } + }); +})(window, document, jQuery); + +// ========================================================================== +// +// SlideShow +// Enables slideshow functionality +// +// Example of usage: +// $.fancybox.getInstance().SlideShow.start() +// +// ========================================================================== +(function(document, $) { + "use strict"; + + $.extend(true, $.fancybox.defaults, { + btnTpl: { + slideShow: + '" + }, + slideShow: { + autoStart: false, + speed: 3000, + progress: true + } + }); + + var SlideShow = function(instance) { + this.instance = instance; + this.init(); + }; + + $.extend(SlideShow.prototype, { + timer: null, + isActive: false, + $button: null, + + init: function() { + var self = this, + instance = self.instance, + opts = instance.group[instance.currIndex].opts.slideShow; + + self.$button = instance.$refs.toolbar.find("[data-fancybox-play]").on("click", function() { + self.toggle(); + }); + + if (instance.group.length < 2 || !opts) { + self.$button.hide(); + } else if (opts.progress) { + self.$progress = $('
    ').appendTo(instance.$refs.inner); + } + }, + + set: function(force) { + var self = this, + instance = self.instance, + current = instance.current; + + // Check if reached last element + if (current && (force === true || current.opts.loop || instance.currIndex < instance.group.length - 1)) { + if (self.isActive && current.contentType !== "video") { + if (self.$progress) { + $.fancybox.animate(self.$progress.show(), {scaleX: 1}, current.opts.slideShow.speed); + } + + self.timer = setTimeout(function() { + if (!instance.current.opts.loop && instance.current.index == instance.group.length - 1) { + instance.jumpTo(0); + } else { + instance.next(); + } + }, current.opts.slideShow.speed); + } + } else { + self.stop(); + instance.idleSecondsCounter = 0; + instance.showControls(); + } + }, + + clear: function() { + var self = this; + + clearTimeout(self.timer); + + self.timer = null; + + if (self.$progress) { + self.$progress.removeAttr("style").hide(); + } + }, + + start: function() { + var self = this, + current = self.instance.current; + + if (current) { + self.$button + .attr("title", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_STOP) + .removeClass("fancybox-button--play") + .addClass("fancybox-button--pause"); + + self.isActive = true; + + if (current.isComplete) { + self.set(true); + } + + self.instance.trigger("onSlideShowChange", true); + } + }, + + stop: function() { + var self = this, + current = self.instance.current; + + self.clear(); + + self.$button + .attr("title", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_START) + .removeClass("fancybox-button--pause") + .addClass("fancybox-button--play"); + + self.isActive = false; + + self.instance.trigger("onSlideShowChange", false); + + if (self.$progress) { + self.$progress.removeAttr("style").hide(); + } + }, + + toggle: function() { + var self = this; + + if (self.isActive) { + self.stop(); + } else { + self.start(); + } + } + }); + + $(document).on({ + "onInit.fb": function(e, instance) { + if (instance && !instance.SlideShow) { + instance.SlideShow = new SlideShow(instance); + } + }, + + "beforeShow.fb": function(e, instance, current, firstRun) { + var SlideShow = instance && instance.SlideShow; + + if (firstRun) { + if (SlideShow && current.opts.slideShow.autoStart) { + SlideShow.start(); + } + } else if (SlideShow && SlideShow.isActive) { + SlideShow.clear(); + } + }, + + "afterShow.fb": function(e, instance, current) { + var SlideShow = instance && instance.SlideShow; + + if (SlideShow && SlideShow.isActive) { + SlideShow.set(); + } + }, + + "afterKeydown.fb": function(e, instance, current, keypress, keycode) { + var SlideShow = instance && instance.SlideShow; + + // "P" or Spacebar + if (SlideShow && current.opts.slideShow && (keycode === 80 || keycode === 32) && !$(document.activeElement).is("button,a,input")) { + keypress.preventDefault(); + + SlideShow.toggle(); + } + }, + + "beforeClose.fb onDeactivate.fb": function(e, instance) { + var SlideShow = instance && instance.SlideShow; + + if (SlideShow) { + SlideShow.stop(); + } + } + }); + + // Page Visibility API to pause slideshow when window is not active + $(document).on("visibilitychange", function() { + var instance = $.fancybox.getInstance(), + SlideShow = instance && instance.SlideShow; + + if (SlideShow && SlideShow.isActive) { + if (document.hidden) { + SlideShow.clear(); + } else { + SlideShow.set(); + } + } + }); +})(document, jQuery); + +// ========================================================================== +// +// FullScreen +// Adds fullscreen functionality +// +// ========================================================================== +(function(document, $) { + "use strict"; + + // Collection of methods supported by user browser + var fn = (function() { + var fnMap = [ + ["requestFullscreen", "exitFullscreen", "fullscreenElement", "fullscreenEnabled", "fullscreenchange", "fullscreenerror"], + // new WebKit + [ + "webkitRequestFullscreen", + "webkitExitFullscreen", + "webkitFullscreenElement", + "webkitFullscreenEnabled", + "webkitfullscreenchange", + "webkitfullscreenerror" + ], + // old WebKit (Safari 5.1) + [ + "webkitRequestFullScreen", + "webkitCancelFullScreen", + "webkitCurrentFullScreenElement", + "webkitCancelFullScreen", + "webkitfullscreenchange", + "webkitfullscreenerror" + ], + [ + "mozRequestFullScreen", + "mozCancelFullScreen", + "mozFullScreenElement", + "mozFullScreenEnabled", + "mozfullscreenchange", + "mozfullscreenerror" + ], + ["msRequestFullscreen", "msExitFullscreen", "msFullscreenElement", "msFullscreenEnabled", "MSFullscreenChange", "MSFullscreenError"] + ]; + + var ret = {}; + + for (var i = 0; i < fnMap.length; i++) { + var val = fnMap[i]; + + if (val && val[1] in document) { + for (var j = 0; j < val.length; j++) { + ret[fnMap[0][j]] = val[j]; + } + + return ret; + } + } + + return false; + })(); + + if (fn) { + var FullScreen = { + request: function(elem) { + elem = elem || document.documentElement; + + elem[fn.requestFullscreen](elem.ALLOW_KEYBOARD_INPUT); + }, + exit: function() { + document[fn.exitFullscreen](); + }, + toggle: function(elem) { + elem = elem || document.documentElement; + + if (this.isFullscreen()) { + this.exit(); + } else { + this.request(elem); + } + }, + isFullscreen: function() { + return Boolean(document[fn.fullscreenElement]); + }, + enabled: function() { + return Boolean(document[fn.fullscreenEnabled]); + } + }; + + $.extend(true, $.fancybox.defaults, { + btnTpl: { + fullScreen: + '" + }, + fullScreen: { + autoStart: false + } + }); + + $(document).on(fn.fullscreenchange, function() { + var isFullscreen = FullScreen.isFullscreen(), + instance = $.fancybox.getInstance(); + + if (instance) { + // If image is zooming, then force to stop and reposition properly + if (instance.current && instance.current.type === "image" && instance.isAnimating) { + instance.isAnimating = false; + + instance.update(true, true, 0); + + if (!instance.isComplete) { + instance.complete(); + } + } + + instance.trigger("onFullscreenChange", isFullscreen); + + instance.$refs.container.toggleClass("fancybox-is-fullscreen", isFullscreen); + + instance.$refs.toolbar + .find("[data-fancybox-fullscreen]") + .toggleClass("fancybox-button--fsenter", !isFullscreen) + .toggleClass("fancybox-button--fsexit", isFullscreen); + } + }); + } + + $(document).on({ + "onInit.fb": function(e, instance) { + var $container; + + if (!fn) { + instance.$refs.toolbar.find("[data-fancybox-fullscreen]").remove(); + + return; + } + + if (instance && instance.group[instance.currIndex].opts.fullScreen) { + $container = instance.$refs.container; + + $container.on("click.fb-fullscreen", "[data-fancybox-fullscreen]", function(e) { + e.stopPropagation(); + e.preventDefault(); + + FullScreen.toggle(); + }); + + if (instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true) { + FullScreen.request(); + } + + // Expose API + instance.FullScreen = FullScreen; + } else if (instance) { + instance.$refs.toolbar.find("[data-fancybox-fullscreen]").hide(); + } + }, + + "afterKeydown.fb": function(e, instance, current, keypress, keycode) { + // "F" + if (instance && instance.FullScreen && keycode === 70) { + keypress.preventDefault(); + + instance.FullScreen.toggle(); + } + }, + + "beforeClose.fb": function(e, instance) { + if (instance && instance.FullScreen && instance.$refs.container.hasClass("fancybox-is-fullscreen")) { + FullScreen.exit(); + } + } + }); +})(document, jQuery); + +// ========================================================================== +// +// Thumbs +// Displays thumbnails in a grid +// +// ========================================================================== +(function(document, $) { + "use strict"; + + var CLASS = "fancybox-thumbs", + CLASS_ACTIVE = CLASS + "-active"; + + // Make sure there are default values + $.fancybox.defaults = $.extend( + true, + { + btnTpl: { + thumbs: + '" + }, + thumbs: { + autoStart: false, // Display thumbnails on opening + hideOnClose: true, // Hide thumbnail grid when closing animation starts + parentEl: ".fancybox-container", // Container is injected into this element + axis: "y" // Vertical (y) or horizontal (x) scrolling + } + }, + $.fancybox.defaults + ); + + var FancyThumbs = function(instance) { + this.init(instance); + }; + + $.extend(FancyThumbs.prototype, { + $button: null, + $grid: null, + $list: null, + isVisible: false, + isActive: false, + + init: function(instance) { + var self = this, + group = instance.group, + enabled = 0; + + self.instance = instance; + self.opts = group[instance.currIndex].opts.thumbs; + + instance.Thumbs = self; + + self.$button = instance.$refs.toolbar.find("[data-fancybox-thumbs]"); + + // Enable thumbs if at least two group items have thumbnails + for (var i = 0, len = group.length; i < len; i++) { + if (group[i].thumb) { + enabled++; + } + + if (enabled > 1) { + break; + } + } + + if (enabled > 1 && !!self.opts) { + self.$button.removeAttr("style").on("click", function() { + self.toggle(); + }); + + self.isActive = true; + } else { + self.$button.hide(); + } + }, + + create: function() { + var self = this, + instance = self.instance, + parentEl = self.opts.parentEl, + list = [], + src; + + if (!self.$grid) { + // Create main element + self.$grid = $('
    ').appendTo( + instance.$refs.container + .find(parentEl) + .addBack() + .filter(parentEl) + ); + + // Add "click" event that performs gallery navigation + self.$grid.on("click", "a", function() { + instance.jumpTo($(this).attr("data-index")); + }); + } + + // Build the list + if (!self.$list) { + self.$list = $('
    ').appendTo(self.$grid); + } + + $.each(instance.group, function(i, item) { + src = item.thumb; + + if (!src && item.type === "image") { + src = item.src; + } + + list.push( + '" + ); + }); + + self.$list[0].innerHTML = list.join(""); + + if (self.opts.axis === "x") { + // Set fixed width for list element to enable horizontal scrolling + self.$list.width( + parseInt(self.$grid.css("padding-right"), 10) + + instance.group.length * + self.$list + .children() + .eq(0) + .outerWidth(true) + ); + } + }, + + focus: function(duration) { + var self = this, + $list = self.$list, + $grid = self.$grid, + thumb, + thumbPos; + + if (!self.instance.current) { + return; + } + + thumb = $list + .children() + .removeClass(CLASS_ACTIVE) + .filter('[data-index="' + self.instance.current.index + '"]') + .addClass(CLASS_ACTIVE); + + thumbPos = thumb.position(); + + // Check if need to scroll to make current thumb visible + if (self.opts.axis === "y" && (thumbPos.top < 0 || thumbPos.top > $list.height() - thumb.outerHeight())) { + $list.stop().animate( + { + scrollTop: $list.scrollTop() + thumbPos.top + }, + duration + ); + } else if ( + self.opts.axis === "x" && + (thumbPos.left < $grid.scrollLeft() || thumbPos.left > $grid.scrollLeft() + ($grid.width() - thumb.outerWidth())) + ) { + $list + .parent() + .stop() + .animate( + { + scrollLeft: thumbPos.left + }, + duration + ); + } + }, + + update: function() { + var that = this; + that.instance.$refs.container.toggleClass("fancybox-show-thumbs", this.isVisible); + + if (that.isVisible) { + if (!that.$grid) { + that.create(); + } + + that.instance.trigger("onThumbsShow"); + + that.focus(0); + } else if (that.$grid) { + that.instance.trigger("onThumbsHide"); + } + + // Update content position + that.instance.update(); + }, + + hide: function() { + this.isVisible = false; + this.update(); + }, + + show: function() { + this.isVisible = true; + this.update(); + }, + + toggle: function() { + this.isVisible = !this.isVisible; + this.update(); + } + }); + + $(document).on({ + "onInit.fb": function(e, instance) { + var Thumbs; + + if (instance && !instance.Thumbs) { + Thumbs = new FancyThumbs(instance); + + if (Thumbs.isActive && Thumbs.opts.autoStart === true) { + Thumbs.show(); + } + } + }, + + "beforeShow.fb": function(e, instance, item, firstRun) { + var Thumbs = instance && instance.Thumbs; + + if (Thumbs && Thumbs.isVisible) { + Thumbs.focus(firstRun ? 0 : 250); + } + }, + + "afterKeydown.fb": function(e, instance, current, keypress, keycode) { + var Thumbs = instance && instance.Thumbs; + + // "G" + if (Thumbs && Thumbs.isActive && keycode === 71) { + keypress.preventDefault(); + + Thumbs.toggle(); + } + }, + + "beforeClose.fb": function(e, instance) { + var Thumbs = instance && instance.Thumbs; + + if (Thumbs && Thumbs.isVisible && Thumbs.opts.hideOnClose !== false) { + Thumbs.$grid.hide(); + } + } + }); +})(document, jQuery); + +//// ========================================================================== +// +// Share +// Displays simple form for sharing current url +// +// ========================================================================== +(function(document, $) { + "use strict"; + + $.extend(true, $.fancybox.defaults, { + btnTpl: { + share: + '" + }, + share: { + url: function(instance, item) { + return ( + (!instance.currentHash && !(item.type === "inline" || item.type === "html") ? item.origSrc || item.src : false) || window.location + ); + }, + tpl: + '
    ' + + "

    {{SHARE}}

    " + + "

    " + + '' + + '' + + "Facebook" + + "" + + '' + + '' + + "Twitter" + + "" + + '' + + '' + + "Pinterest" + + "" + + "

    " + + '

    ' + + "
    " + } + }); + + function escapeHtml(string) { + var entityMap = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'", + "/": "/", + "`": "`", + "=": "=" + }; + + return String(string).replace(/[&<>"'`=\/]/g, function(s) { + return entityMap[s]; + }); + } + + $(document).on("click", "[data-fancybox-share]", function() { + var instance = $.fancybox.getInstance(), + current = instance.current || null, + url, + tpl; + + if (!current) { + return; + } + + if ($.type(current.opts.share.url) === "function") { + url = current.opts.share.url.apply(current, [instance, current]); + } + + tpl = current.opts.share.tpl + .replace(/\{\{media\}\}/g, current.type === "image" ? encodeURIComponent(current.src) : "") + .replace(/\{\{url\}\}/g, encodeURIComponent(url)) + .replace(/\{\{url_raw\}\}/g, escapeHtml(url)) + .replace(/\{\{descr\}\}/g, instance.$caption ? encodeURIComponent(instance.$caption.text()) : ""); + + $.fancybox.open({ + src: instance.translate(instance, tpl), + type: "html", + opts: { + touch: false, + animationEffect: false, + afterLoad: function(shareInstance, shareCurrent) { + // Close self if parent instance is closing + instance.$refs.container.one("beforeClose.fb", function() { + shareInstance.close(null, 0); + }); + + // Opening links in a popup window + shareCurrent.$content.find(".fancybox-share__button").click(function() { + window.open(this.href, "Share", "width=550, height=450"); + return false; + }); + }, + mobile: { + autoFocus: false + } + } + }); + }); +})(document, jQuery); + +// ========================================================================== +// +// Hash +// Enables linking to each modal +// +// ========================================================================== +(function(window, document, $) { + "use strict"; + + // Simple $.escapeSelector polyfill (for jQuery prior v3) + if (!$.escapeSelector) { + $.escapeSelector = function(sel) { + var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; + var fcssescape = function(ch, asCodePoint) { + if (asCodePoint) { + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if (ch === "\0") { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }; + + return (sel + "").replace(rcssescape, fcssescape); + }; + } + + // Get info about gallery name and current index from url + function parseUrl() { + var hash = window.location.hash.substr(1), + rez = hash.split("-"), + index = rez.length > 1 && /^\+?\d+$/.test(rez[rez.length - 1]) ? parseInt(rez.pop(-1), 10) || 1 : 1, + gallery = rez.join("-"); + + return { + hash: hash, + /* Index is starting from 1 */ + index: index < 1 ? 1 : index, + gallery: gallery + }; + } + + // Trigger click evnt on links to open new fancyBox instance + function triggerFromUrl(url) { + if (url.gallery !== "") { + // If we can find element matching 'data-fancybox' atribute, + // then triggering click event should start fancyBox + $("[data-fancybox='" + $.escapeSelector(url.gallery) + "']") + .eq(url.index - 1) + .focus() + .trigger("click.fb-start"); + } + } + + // Get gallery name from current instance + function getGalleryID(instance) { + var opts, ret; + + if (!instance) { + return false; + } + + opts = instance.current ? instance.current.opts : instance.opts; + ret = opts.hash || (opts.$orig ? opts.$orig.data("fancybox") || opts.$orig.data("fancybox-trigger") : ""); + + return ret === "" ? false : ret; + } + + // Start when DOM becomes ready + $(function() { + // Check if user has disabled this module + if ($.fancybox.defaults.hash === false) { + return; + } + + // Update hash when opening/closing fancyBox + $(document).on({ + "onInit.fb": function(e, instance) { + var url, gallery; + + if (instance.group[instance.currIndex].opts.hash === false) { + return; + } + + url = parseUrl(); + gallery = getGalleryID(instance); + + // Make sure gallery start index matches index from hash + if (gallery && url.gallery && gallery == url.gallery) { + instance.currIndex = url.index - 1; + } + }, + + "beforeShow.fb": function(e, instance, current, firstRun) { + var gallery; + + if (!current || current.opts.hash === false) { + return; + } + + // Check if need to update window hash + gallery = getGalleryID(instance); + + if (!gallery) { + return; + } + + // Variable containing last hash value set by fancyBox + // It will be used to determine if fancyBox needs to close after hash change is detected + instance.currentHash = gallery + (instance.group.length > 1 ? "-" + (current.index + 1) : ""); + + // If current hash is the same (this instance most likely is opened by hashchange), then do nothing + if (window.location.hash === "#" + instance.currentHash) { + return; + } + + if (firstRun && !instance.origHash) { + instance.origHash = window.location.hash; + } + + if (instance.hashTimer) { + clearTimeout(instance.hashTimer); + } + + // Update hash + instance.hashTimer = setTimeout(function() { + if ("replaceState" in window.history) { + window.history[firstRun ? "pushState" : "replaceState"]( + {}, + document.title, + window.location.pathname + window.location.search + "#" + instance.currentHash + ); + + if (firstRun) { + instance.hasCreatedHistory = true; + } + } else { + window.location.hash = instance.currentHash; + } + + instance.hashTimer = null; + }, 300); + }, + + "beforeClose.fb": function(e, instance, current) { + if (!current || current.opts.hash === false) { + return; + } + + clearTimeout(instance.hashTimer); + + // Goto previous history entry + if (instance.currentHash && instance.hasCreatedHistory) { + window.history.back(); + } else if (instance.currentHash) { + if ("replaceState" in window.history) { + window.history.replaceState({}, document.title, window.location.pathname + window.location.search + (instance.origHash || "")); + } else { + window.location.hash = instance.origHash; + } + } + + instance.currentHash = null; + } + }); + + // Check if need to start/close after url has changed + $(window).on("hashchange.fb", function() { + var url = parseUrl(), + fb = null; + + // Find last fancyBox instance that has "hash" + $.each( + $(".fancybox-container") + .get() + .reverse(), + function(index, value) { + var tmp = $(value).data("FancyBox"); + + if (tmp && tmp.currentHash) { + fb = tmp; + return false; + } + } + ); + + if (fb) { + // Now, compare hash values + if (fb.currentHash !== url.gallery + "-" + url.index && !(url.index === 1 && fb.currentHash == url.gallery)) { + fb.currentHash = null; + + fb.close(); + } + } else if (url.gallery !== "") { + triggerFromUrl(url); + } + }); + + // Check current hash and trigger click event on matching element to start fancyBox, if needed + setTimeout(function() { + if (!$.fancybox.getInstance()) { + triggerFromUrl(parseUrl()); + } + }, 50); + }); +})(window, document, jQuery); + +// ========================================================================== +// +// Wheel +// Basic mouse weheel support for gallery navigation +// +// ========================================================================== +(function(document, $) { + "use strict"; + + var prevTime = new Date().getTime(); + + $(document).on({ + "onInit.fb": function(e, instance, current) { + instance.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll", function(e) { + var current = instance.current, + currTime = new Date().getTime(); + + if (instance.group.length < 2 || current.opts.wheel === false || (current.opts.wheel === "auto" && current.type !== "image")) { + return; + } + + e.preventDefault(); + e.stopPropagation(); + + if (current.$slide.hasClass("fancybox-animated")) { + return; + } + + e = e.originalEvent || e; + + if (currTime - prevTime < 250) { + return; + } + + prevTime = currTime; + + instance[(-e.deltaY || -e.deltaX || e.wheelDelta || -e.detail) < 0 ? "next" : "previous"](); + }); + } + }); +})(document, jQuery); diff --git a/Ausgabe/common/fancybox/jquery.fancybox.min.css b/Ausgabe/common/fancybox/jquery.fancybox.min.css new file mode 100755 index 0000000..7cc60b2 --- /dev/null +++ b/Ausgabe/common/fancybox/jquery.fancybox.min.css @@ -0,0 +1 @@ +body.compensate-for-scrollbar{overflow:hidden}.fancybox-active{height:auto}.fancybox-is-hidden{left:-9999px;margin:0;position:absolute!important;top:-9999px;visibility:hidden}.fancybox-container{-webkit-backface-visibility:hidden;height:100%;left:0;outline:none;position:fixed;-webkit-tap-highlight-color:transparent;top:0;-ms-touch-action:manipulation;touch-action:manipulation;transform:translateZ(0);width:100%;z-index:99992}.fancybox-container *{box-sizing:border-box}.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-stage{bottom:0;left:0;position:absolute;right:0;top:0}.fancybox-outer{-webkit-overflow-scrolling:touch;overflow-y:auto}.fancybox-bg{background:#1e1e1e;opacity:0;transition-duration:inherit;transition-property:opacity;transition-timing-function:cubic-bezier(.47,0,.74,.71)}.fancybox-is-open .fancybox-bg{opacity:.9;transition-timing-function:cubic-bezier(.22,.61,.36,1)}.fancybox-caption,.fancybox-infobar,.fancybox-navigation .fancybox-button,.fancybox-toolbar{direction:ltr;opacity:0;position:absolute;transition:opacity .25s ease,visibility 0s ease .25s;visibility:hidden;z-index:99997}.fancybox-show-caption .fancybox-caption,.fancybox-show-infobar .fancybox-infobar,.fancybox-show-nav .fancybox-navigation .fancybox-button,.fancybox-show-toolbar .fancybox-toolbar{opacity:1;transition:opacity .25s ease 0s,visibility 0s ease 0s;visibility:visible}.fancybox-infobar{color:#ccc;font-size:13px;-webkit-font-smoothing:subpixel-antialiased;height:44px;left:0;line-height:44px;min-width:44px;mix-blend-mode:difference;padding:0 10px;pointer-events:none;top:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fancybox-toolbar{right:0;top:0}.fancybox-stage{direction:ltr;overflow:visible;transform:translateZ(0);z-index:99994}.fancybox-is-open .fancybox-stage{overflow:hidden}.fancybox-slide{-webkit-backface-visibility:hidden;display:none;height:100%;left:0;outline:none;overflow:auto;-webkit-overflow-scrolling:touch;padding:44px;position:absolute;text-align:center;top:0;transition-property:transform,opacity;white-space:normal;width:100%;z-index:99994}.fancybox-slide:before{content:"";display:inline-block;font-size:0;height:100%;vertical-align:middle;width:0}.fancybox-is-sliding .fancybox-slide,.fancybox-slide--current,.fancybox-slide--next,.fancybox-slide--previous{display:block}.fancybox-slide--image{overflow:hidden;padding:44px 0}.fancybox-slide--image:before{display:none}.fancybox-slide--html{padding:6px}.fancybox-content{background:#fff;display:inline-block;margin:0;max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch;padding:44px;position:relative;text-align:left;vertical-align:middle}.fancybox-slide--image .fancybox-content{animation-timing-function:cubic-bezier(.5,0,.14,1);-webkit-backface-visibility:hidden;background:transparent;background-repeat:no-repeat;background-size:100% 100%;left:0;max-width:none;overflow:visible;padding:0;position:absolute;top:0;transform-origin:top left;transition-property:transform,opacity;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:99995}.fancybox-can-zoomOut .fancybox-content{cursor:zoom-out}.fancybox-can-zoomIn .fancybox-content{cursor:zoom-in}.fancybox-can-pan .fancybox-content,.fancybox-can-swipe .fancybox-content{cursor:grab}.fancybox-is-grabbing .fancybox-content{cursor:grabbing}.fancybox-container [data-selectable=true]{cursor:text}.fancybox-image,.fancybox-spaceball{background:transparent;border:0;height:100%;left:0;margin:0;max-height:none;max-width:none;padding:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.fancybox-spaceball{z-index:1}.fancybox-slide--iframe .fancybox-content,.fancybox-slide--map .fancybox-content,.fancybox-slide--pdf .fancybox-content,.fancybox-slide--video .fancybox-content{height:100%;overflow:visible;padding:0;width:100%}.fancybox-slide--video .fancybox-content{background:#000}.fancybox-slide--map .fancybox-content{background:#e5e3df}.fancybox-slide--iframe .fancybox-content{background:#fff}.fancybox-iframe,.fancybox-video{background:transparent;border:0;display:block;height:100%;margin:0;overflow:hidden;padding:0;width:100%}.fancybox-iframe{left:0;position:absolute;top:0}.fancybox-error{background:#fff;cursor:default;max-width:400px;padding:40px;width:100%}.fancybox-error p{color:#444;font-size:16px;line-height:20px;margin:0;padding:0}.fancybox-button{background:rgba(30,30,30,.6);border:0;border-radius:0;box-shadow:none;cursor:pointer;display:inline-block;height:44px;margin:0;padding:10px;position:relative;transition:color .2s;vertical-align:top;visibility:inherit;width:44px}.fancybox-button,.fancybox-button:link,.fancybox-button:visited{color:#ccc}.fancybox-button:hover{color:#fff}.fancybox-button:focus{outline:none}.fancybox-button.fancybox-focus{outline:1px dotted}.fancybox-button[disabled],.fancybox-button[disabled]:hover{color:#888;cursor:default;outline:none}.fancybox-button div{height:100%}.fancybox-button svg{display:block;height:100%;overflow:visible;position:relative;width:100%}.fancybox-button svg path{fill:currentColor;stroke-width:0}.fancybox-button--fsenter svg:nth-child(2),.fancybox-button--fsexit svg:first-child,.fancybox-button--pause svg:first-child,.fancybox-button--play svg:nth-child(2){display:none}.fancybox-progress{background:#ff5268;height:2px;left:0;position:absolute;right:0;top:0;transform:scaleX(0);transform-origin:0;transition-property:transform;transition-timing-function:linear;z-index:99998}.fancybox-close-small{background:transparent;border:0;border-radius:0;color:#ccc;cursor:pointer;opacity:.8;padding:8px;position:absolute;right:-12px;top:-44px;z-index:401}.fancybox-close-small:hover{color:#fff;opacity:1}.fancybox-slide--html .fancybox-close-small{color:currentColor;padding:10px;right:0;top:0}.fancybox-slide--image.fancybox-is-scaling .fancybox-content{overflow:hidden}.fancybox-is-scaling .fancybox-close-small,.fancybox-is-zoomable.fancybox-can-pan .fancybox-close-small{display:none}.fancybox-navigation .fancybox-button{background-clip:content-box;height:100px;opacity:0;position:absolute;top:calc(50% - 50px);width:70px}.fancybox-navigation .fancybox-button div{padding:7px}.fancybox-navigation .fancybox-button--arrow_left{left:0;left:env(safe-area-inset-left);padding:31px 26px 31px 6px}.fancybox-navigation .fancybox-button--arrow_right{padding:31px 6px 31px 26px;right:0;right:env(safe-area-inset-right)}.fancybox-caption{background:linear-gradient(0deg,rgba(0,0,0,.85) 0,rgba(0,0,0,.3) 50%,rgba(0,0,0,.15) 65%,rgba(0,0,0,.075) 75.5%,rgba(0,0,0,.037) 82.85%,rgba(0,0,0,.019) 88%,transparent);bottom:0;color:#eee;font-size:14px;font-weight:400;left:0;line-height:1.5;padding:75px 44px 25px;pointer-events:none;right:0;text-align:center;z-index:99996}@supports (padding:max(0px)){.fancybox-caption{padding:75px max(44px,env(safe-area-inset-right)) max(25px,env(safe-area-inset-bottom)) max(44px,env(safe-area-inset-left))}}.fancybox-caption--separate{margin-top:-50px}.fancybox-caption__body{max-height:50vh;overflow:auto;pointer-events:all}.fancybox-caption a,.fancybox-caption a:link,.fancybox-caption a:visited{color:#ccc;text-decoration:none}.fancybox-caption a:hover{color:#fff;text-decoration:underline}.fancybox-loading{animation:a 1s linear infinite;background:transparent;border:4px solid #888;border-bottom-color:#fff;border-radius:50%;height:50px;left:50%;margin:-25px 0 0 -25px;opacity:.7;padding:0;position:absolute;top:50%;width:50px;z-index:99999}@keyframes a{to{transform:rotate(1turn)}}.fancybox-animated{transition-timing-function:cubic-bezier(0,0,.25,1)}.fancybox-fx-slide.fancybox-slide--previous{opacity:0;transform:translate3d(-100%,0,0)}.fancybox-fx-slide.fancybox-slide--next{opacity:0;transform:translate3d(100%,0,0)}.fancybox-fx-slide.fancybox-slide--current{opacity:1;transform:translateZ(0)}.fancybox-fx-fade.fancybox-slide--next,.fancybox-fx-fade.fancybox-slide--previous{opacity:0;transition-timing-function:cubic-bezier(.19,1,.22,1)}.fancybox-fx-fade.fancybox-slide--current{opacity:1}.fancybox-fx-zoom-in-out.fancybox-slide--previous{opacity:0;transform:scale3d(1.5,1.5,1.5)}.fancybox-fx-zoom-in-out.fancybox-slide--next{opacity:0;transform:scale3d(.5,.5,.5)}.fancybox-fx-zoom-in-out.fancybox-slide--current{opacity:1;transform:scaleX(1)}.fancybox-fx-rotate.fancybox-slide--previous{opacity:0;transform:rotate(-1turn)}.fancybox-fx-rotate.fancybox-slide--next{opacity:0;transform:rotate(1turn)}.fancybox-fx-rotate.fancybox-slide--current{opacity:1;transform:rotate(0deg)}.fancybox-fx-circular.fancybox-slide--previous{opacity:0;transform:scale3d(0,0,0) translate3d(-100%,0,0)}.fancybox-fx-circular.fancybox-slide--next{opacity:0;transform:scale3d(0,0,0) translate3d(100%,0,0)}.fancybox-fx-circular.fancybox-slide--current{opacity:1;transform:scaleX(1) translateZ(0)}.fancybox-fx-tube.fancybox-slide--previous{transform:translate3d(-100%,0,0) scale(.1) skew(-10deg)}.fancybox-fx-tube.fancybox-slide--next{transform:translate3d(100%,0,0) scale(.1) skew(10deg)}.fancybox-fx-tube.fancybox-slide--current{transform:translateZ(0) scale(1)}@media (max-height:576px){.fancybox-slide{padding-left:6px;padding-right:6px}.fancybox-slide--image{padding:6px 0}.fancybox-close-small{right:-6px}.fancybox-slide--image .fancybox-close-small{background:#4e4e4e;color:#f2f4f6;height:36px;opacity:1;padding:6px;right:0;top:0;width:36px}.fancybox-caption{padding-left:12px;padding-right:12px}@supports (padding:max(0px)){.fancybox-caption{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}}}.fancybox-share{background:#f4f4f4;border-radius:3px;max-width:90%;padding:30px;text-align:center}.fancybox-share h1{color:#222;font-size:35px;font-weight:700;margin:0 0 20px}.fancybox-share p{margin:0;padding:0}.fancybox-share__button{border:0;border-radius:3px;display:inline-block;font-size:14px;font-weight:700;line-height:40px;margin:0 5px 10px;min-width:130px;padding:0 15px;text-decoration:none;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}.fancybox-share__button:link,.fancybox-share__button:visited{color:#fff}.fancybox-share__button:hover{text-decoration:none}.fancybox-share__button--fb{background:#3b5998}.fancybox-share__button--fb:hover{background:#344e86}.fancybox-share__button--pt{background:#bd081d}.fancybox-share__button--pt:hover{background:#aa0719}.fancybox-share__button--tw{background:#1da1f2}.fancybox-share__button--tw:hover{background:#0d95e8}.fancybox-share__button svg{height:25px;margin-right:7px;position:relative;top:-1px;vertical-align:middle;width:25px}.fancybox-share__button svg path{fill:#fff}.fancybox-share__input{background:transparent;border:0;border-bottom:1px solid #d7d7d7;border-radius:0;color:#5d5b5b;font-size:14px;margin:10px 0 0;outline:none;padding:10px 15px;width:100%}.fancybox-thumbs{background:#ddd;bottom:0;display:none;margin:0;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;padding:2px 2px 4px;position:absolute;right:0;-webkit-tap-highlight-color:rgba(0,0,0,0);top:0;width:212px;z-index:99995}.fancybox-thumbs-x{overflow-x:auto;overflow-y:hidden}.fancybox-show-thumbs .fancybox-thumbs{display:block}.fancybox-show-thumbs .fancybox-inner{right:212px}.fancybox-thumbs__list{font-size:0;height:100%;list-style:none;margin:0;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;position:relative;white-space:nowrap;width:100%}.fancybox-thumbs-x .fancybox-thumbs__list{overflow:hidden}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar{width:7px}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-track{background:#fff;border-radius:10px;box-shadow:inset 0 0 6px rgba(0,0,0,.3)}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-thumb{background:#2a2a2a;border-radius:10px}.fancybox-thumbs__list a{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:rgba(0,0,0,.1);background-position:50%;background-repeat:no-repeat;background-size:cover;cursor:pointer;float:left;height:75px;margin:2px;max-height:calc(100% - 8px);max-width:calc(50% - 4px);outline:none;overflow:hidden;padding:0;position:relative;-webkit-tap-highlight-color:transparent;width:100px}.fancybox-thumbs__list a:before{border:6px solid #ff5268;bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:all .2s cubic-bezier(.25,.46,.45,.94);z-index:99991}.fancybox-thumbs__list a:focus:before{opacity:.5}.fancybox-thumbs__list a.fancybox-thumbs-active:before{opacity:1}@media (max-width:576px){.fancybox-thumbs{width:110px}.fancybox-show-thumbs .fancybox-inner{right:110px}.fancybox-thumbs__list a{max-width:calc(100% - 10px)}} \ No newline at end of file diff --git a/Ausgabe/common/fancybox/jquery.fancybox.min.js b/Ausgabe/common/fancybox/jquery.fancybox.min.js new file mode 100755 index 0000000..b3b3098 --- /dev/null +++ b/Ausgabe/common/fancybox/jquery.fancybox.min.js @@ -0,0 +1,13 @@ +// ================================================== +// fancyBox v3.5.6 +// +// Licensed GPLv3 for open source use +// or fancyBox Commercial License for commercial use +// +// http://fancyapps.com/fancybox/ +// Copyright 2018 fancyApps +// +// ================================================== +!function(t,e,n,o){"use strict";function i(t,e){var o,i,a,s=[],r=0;t&&t.isDefaultPrevented()||(t.preventDefault(),e=e||{},t&&t.data&&(e=h(t.data.options,e)),o=e.$target||n(t.currentTarget).trigger("blur"),(a=n.fancybox.getInstance())&&a.$trigger&&a.$trigger.is(o)||(e.selector?s=n(e.selector):(i=o.attr("data-fancybox")||"",i?(s=t.data?t.data.items:[],s=s.length?s.filter('[data-fancybox="'+i+'"]'):n('[data-fancybox="'+i+'"]')):s=[o]),r=n(s).index(o),r<0&&(r=0),a=n.fancybox.open(s,e,r),a.$trigger=o))}if(t.console=t.console||{info:function(t){}},n){if(n.fn.fancybox)return void console.info("fancyBox already initialized");var a={closeExisting:!1,loop:!1,gutter:50,keyboard:!0,preventCaptionOverlap:!0,arrows:!0,infobar:!0,smallBtn:"auto",toolbar:"auto",buttons:["zoom","slideShow","thumbs","close"],idleTime:3,protect:!1,modal:!1,image:{preload:!1},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'',preload:!0,css:{},attr:{scrolling:"auto"}},video:{tpl:'',format:"",autoStart:!0},defaultType:"image",animationEffect:"zoom",animationDuration:366,zoomOpacity:"auto",transitionEffect:"fade",transitionDuration:366,slideClass:"",baseClass:"",baseTpl:'',spinnerTpl:'
    ',errorTpl:'

    {{ERROR}}

    ',btnTpl:{download:'',zoom:'',close:'',arrowLeft:'',arrowRight:'',smallBtn:''},parentEl:"body",hideScrollbar:!0,autoFocus:!0,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:3e3},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"},wheel:"auto",onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return"image"===t.type&&"zoom"},clickSlide:"close",clickOutside:"close",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{preventCaptionOverlap:!1,idleTime:!1,clickContent:function(t,e){return"image"===t.type&&"toggleControls"},clickSlide:function(t,e){return"image"===t.type?"toggleControls":"close"},dblclickContent:function(t,e){return"image"===t.type&&"zoom"},dblclickSlide:function(t,e){return"image"===t.type&&"zoom"}},lang:"en",i18n:{en:{CLOSE:"Close",NEXT:"Next",PREV:"Previous",ERROR:"The requested content cannot be loaded.
    Please try again later.",PLAY_START:"Start slideshow",PLAY_STOP:"Pause slideshow",FULL_SCREEN:"Full screen",THUMBS:"Thumbnails",DOWNLOAD:"Download",SHARE:"Share",ZOOM:"Zoom"},de:{CLOSE:"Schließen",NEXT:"Weiter",PREV:"Zurück",ERROR:"Die angeforderten Daten konnten nicht geladen werden.
    Bitte versuchen Sie es später nochmal.",PLAY_START:"Diaschau starten",PLAY_STOP:"Diaschau beenden",FULL_SCREEN:"Vollbild",THUMBS:"Vorschaubilder",DOWNLOAD:"Herunterladen",SHARE:"Teilen",ZOOM:"Vergrößern"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},d=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),u=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),f=function(){var t,n=e.createElement("fakeelement"),o={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in o)if(void 0!==n.style[t])return o[t];return"transitionend"}(),p=function(t){return t&&t.length&&t[0].offsetHeight},h=function(t,e){var o=n.extend(!0,{},t,e);return n.each(e,function(t,e){n.isArray(e)&&(o[t]=e)}),o},g=function(t){var o,i;return!(!t||t.ownerDocument!==e)&&(n(".fancybox-container").css("pointer-events","none"),o={x:t.getBoundingClientRect().left+t.offsetWidth/2,y:t.getBoundingClientRect().top+t.offsetHeight/2},i=e.elementFromPoint(o.x,o.y)===t,n(".fancybox-container").css("pointer-events",""),i)},b=function(t,e,o){var i=this;i.opts=h({index:o},n.fancybox.defaults),n.isPlainObject(e)&&(i.opts=h(i.opts,e)),n.fancybox.isMobile&&(i.opts=h(i.opts,i.opts.mobile)),i.id=i.opts.id||++c,i.currIndex=parseInt(i.opts.index,10)||0,i.prevIndex=null,i.prevPos=null,i.currPos=0,i.firstRun=!0,i.group=[],i.slides={},i.addContent(t),i.group.length&&i.init()};n.extend(b.prototype,{init:function(){var o,i,a=this,s=a.group[a.currIndex],r=s.opts;r.closeExisting&&n.fancybox.close(!0),n("body").addClass("fancybox-active"),!n.fancybox.getInstance()&&!1!==r.hideScrollbar&&!n.fancybox.isMobile&&e.body.scrollHeight>t.innerHeight&&(n("head").append('"),n("body").addClass("compensate-for-scrollbar")),i="",n.each(r.buttons,function(t,e){i+=r.btnTpl[e]||""}),o=n(a.translate(a,r.baseTpl.replace("{{buttons}}",i).replace("{{arrows}}",r.btnTpl.arrowLeft+r.btnTpl.arrowRight))).attr("id","fancybox-container-"+a.id).addClass(r.baseClass).data("FancyBox",a).appendTo(r.parentEl),a.$refs={container:o},["bg","inner","infobar","toolbar","stage","caption","navigation"].forEach(function(t){a.$refs[t]=o.find(".fancybox-"+t)}),a.trigger("onInit"),a.activate(),a.jumpTo(a.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang]||t.opts.i18n.en;return e.replace(/\{\{(\w+)\}\}/g,function(t,e){return void 0===n[e]?t:n[e]})},addContent:function(t){var e,o=this,i=n.makeArray(t);n.each(i,function(t,e){var i,a,s,r,c,l={},d={};n.isPlainObject(e)?(l=e,d=e.opts||e):"object"===n.type(e)&&n(e).length?(i=n(e),d=i.data()||{},d=n.extend(!0,{},d,d.options),d.$orig=i,l.src=o.opts.src||d.src||i.attr("href"),l.type||l.src||(l.type="inline",l.src=e)):l={type:"html",src:e+""},l.opts=n.extend(!0,{},o.opts,d),n.isArray(d.buttons)&&(l.opts.buttons=d.buttons),n.fancybox.isMobile&&l.opts.mobile&&(l.opts=h(l.opts,l.opts.mobile)),a=l.type||l.opts.type,r=l.src||"",!a&&r&&((s=r.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i))?(a="video",l.opts.video.format||(l.opts.video.format="video/"+("ogv"===s[1]?"ogg":s[1]))):r.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)?a="image":r.match(/\.(pdf)((\?|#).*)?$/i)?(a="iframe",l=n.extend(!0,l,{contentType:"pdf",opts:{iframe:{preload:!1}}})):"#"===r.charAt(0)&&(a="inline")),a?l.type=a:o.trigger("objectNeedsType",l),l.contentType||(l.contentType=n.inArray(l.type,["html","inline","ajax"])>-1?"html":l.type),l.index=o.group.length,"auto"==l.opts.smallBtn&&(l.opts.smallBtn=n.inArray(l.type,["html","inline","ajax"])>-1),"auto"===l.opts.toolbar&&(l.opts.toolbar=!l.opts.smallBtn),l.$thumb=l.opts.$thumb||null,l.opts.$trigger&&l.index===o.opts.index&&(l.$thumb=l.opts.$trigger.find("img:first"),l.$thumb.length&&(l.opts.$orig=l.opts.$trigger)),l.$thumb&&l.$thumb.length||!l.opts.$orig||(l.$thumb=l.opts.$orig.find("img:first")),l.$thumb&&!l.$thumb.length&&(l.$thumb=null),l.thumb=l.opts.thumb||(l.$thumb?l.$thumb[0].src:null),"function"===n.type(l.opts.caption)&&(l.opts.caption=l.opts.caption.apply(e,[o,l])),"function"===n.type(o.opts.caption)&&(l.opts.caption=o.opts.caption.apply(e,[o,l])),l.opts.caption instanceof n||(l.opts.caption=void 0===l.opts.caption?"":l.opts.caption+""),"ajax"===l.type&&(c=r.split(/\s+/,2),c.length>1&&(l.src=c.shift(),l.opts.filter=c.shift())),l.opts.modal&&(l.opts=n.extend(!0,l.opts,{trapFocus:!0,infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),o.group.push(l)}),Object.keys(o.slides).length&&(o.updateControls(),(e=o.Thumbs)&&e.isActive&&(e.create(),e.focus()))},addEvents:function(){var e=this;e.removeEvents(),e.$refs.container.on("click.fb-close","[data-fancybox-close]",function(t){t.stopPropagation(),t.preventDefault(),e.close(t)}).on("touchstart.fb-prev click.fb-prev","[data-fancybox-prev]",function(t){t.stopPropagation(),t.preventDefault(),e.previous()}).on("touchstart.fb-next click.fb-next","[data-fancybox-next]",function(t){t.stopPropagation(),t.preventDefault(),e.next()}).on("click.fb","[data-fancybox-zoom]",function(t){e[e.isScaledDown()?"scaleToActual":"scaleToFit"]()}),s.on("orientationchange.fb resize.fb",function(t){t&&t.originalEvent&&"resize"===t.originalEvent.type?(e.requestId&&u(e.requestId),e.requestId=d(function(){e.update(t)})):(e.current&&"iframe"===e.current.type&&e.$refs.stage.hide(),setTimeout(function(){e.$refs.stage.show(),e.update(t)},n.fancybox.isMobile?600:250))}),r.on("keydown.fb",function(t){var o=n.fancybox?n.fancybox.getInstance():null,i=o.current,a=t.keyCode||t.which;if(9==a)return void(i.opts.trapFocus&&e.focus(t));if(!(!i.opts.keyboard||t.ctrlKey||t.altKey||t.shiftKey||n(t.target).is("input,textarea,video,audio")))return 8===a||27===a?(t.preventDefault(),void e.close(t)):37===a||38===a?(t.preventDefault(),void e.previous()):39===a||40===a?(t.preventDefault(),void e.next()):void e.trigger("afterKeydown",t,a)}),e.group[e.currIndex].opts.idleTime&&(e.idleSecondsCounter=0,r.on("mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle",function(t){e.idleSecondsCounter=0,e.isIdle&&e.showControls(),e.isIdle=!1}),e.idleInterval=t.setInterval(function(){++e.idleSecondsCounter>=e.group[e.currIndex].opts.idleTime&&!e.isDragging&&(e.isIdle=!0,e.idleSecondsCounter=0,e.hideControls())},1e3))},removeEvents:function(){var e=this;s.off("orientationchange.fb resize.fb"),r.off("keydown.fb .fb-idle"),this.$refs.container.off(".fb-close .fb-prev .fb-next"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e){var o,i,a,s,r,c,l,d,u,f=this,h=f.group.length;if(!(f.isDragging||f.isClosing||f.isAnimating&&f.firstRun)){if(t=parseInt(t,10),!(a=f.current?f.current.opts.loop:f.opts.loop)&&(t<0||t>=h))return!1;if(o=f.firstRun=!Object.keys(f.slides).length,r=f.current,f.prevIndex=f.currIndex,f.prevPos=f.currPos,s=f.createSlide(t),h>1&&((a||s.index0)&&f.createSlide(t-1)),f.current=s,f.currIndex=s.index,f.currPos=s.pos,f.trigger("beforeShow",o),f.updateControls(),s.forcedDuration=void 0,n.isNumeric(e)?s.forcedDuration=e:e=s.opts[o?"animationDuration":"transitionDuration"],e=parseInt(e,10),i=f.isMoved(s),s.$slide.addClass("fancybox-slide--current"),o)return s.opts.animationEffect&&e&&f.$refs.container.css("transition-duration",e+"ms"),f.$refs.container.addClass("fancybox-is-open").trigger("focus"),f.loadSlide(s),void f.preload("image");c=n.fancybox.getTranslate(r.$slide),l=n.fancybox.getTranslate(f.$refs.stage),n.each(f.slides,function(t,e){n.fancybox.stop(e.$slide,!0)}),r.pos!==s.pos&&(r.isComplete=!1),r.$slide.removeClass("fancybox-slide--complete fancybox-slide--current"),i?(u=c.left-(r.pos*c.width+r.pos*r.opts.gutter),n.each(f.slides,function(t,o){o.$slide.removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")});var i=o.pos*c.width+o.pos*o.opts.gutter;n.fancybox.setTranslate(o.$slide,{top:0,left:i-l.left+u}),o.pos!==s.pos&&o.$slide.addClass("fancybox-slide--"+(o.pos>s.pos?"next":"previous")),p(o.$slide),n.fancybox.animate(o.$slide,{top:0,left:(o.pos-s.pos)*c.width+(o.pos-s.pos)*o.opts.gutter},e,function(){o.$slide.css({transform:"",opacity:""}).removeClass("fancybox-slide--next fancybox-slide--previous"),o.pos===f.currPos&&f.complete()})})):e&&s.opts.transitionEffect&&(d="fancybox-animated fancybox-fx-"+s.opts.transitionEffect,r.$slide.addClass("fancybox-slide--"+(r.pos>s.pos?"next":"previous")),n.fancybox.animate(r.$slide,d,e,function(){r.$slide.removeClass(d).removeClass("fancybox-slide--next fancybox-slide--previous")},!1)),s.isLoaded?f.revealContent(s):f.loadSlide(s),f.preload("image")}},createSlide:function(t){var e,o,i=this;return o=t%i.group.length,o=o<0?i.group.length+o:o,!i.slides[t]&&i.group[o]&&(e=n('
    ').appendTo(i.$refs.stage),i.slides[t]=n.extend(!0,{},i.group[o],{pos:t,$slide:e,isLoaded:!1}),i.updateSlide(i.slides[t])),i.slides[t]},scaleToActual:function(t,e,o){var i,a,s,r,c,l=this,d=l.current,u=d.$content,f=n.fancybox.getTranslate(d.$slide).width,p=n.fancybox.getTranslate(d.$slide).height,h=d.width,g=d.height;l.isAnimating||l.isMoved()||!u||"image"!=d.type||!d.isLoaded||d.hasError||(l.isAnimating=!0,n.fancybox.stop(u),t=void 0===t?.5*f:t,e=void 0===e?.5*p:e,i=n.fancybox.getTranslate(u),i.top-=n.fancybox.getTranslate(d.$slide).top,i.left-=n.fancybox.getTranslate(d.$slide).left,r=h/i.width,c=g/i.height,a=.5*f-.5*h,s=.5*p-.5*g,h>f&&(a=i.left*r-(t*r-t),a>0&&(a=0),ap&&(s=i.top*c-(e*c-e),s>0&&(s=0),se-.5&&(l=e),d>o-.5&&(d=o),"image"===t.type?(u.top=Math.floor(.5*(o-d))+parseFloat(c.css("paddingTop")),u.left=Math.floor(.5*(e-l))+parseFloat(c.css("paddingLeft"))):"video"===t.contentType&&(a=t.opts.width&&t.opts.height?l/d:t.opts.ratio||16/9,d>l/a?d=l/a:l>d*a&&(l=d*a)),u.width=l,u.height=d,u)},update:function(t){var e=this;n.each(e.slides,function(n,o){e.updateSlide(o,t)})},updateSlide:function(t,e){var o=this,i=t&&t.$content,a=t.width||t.opts.width,s=t.height||t.opts.height,r=t.$slide;o.adjustCaption(t),i&&(a||s||"video"===t.contentType)&&!t.hasError&&(n.fancybox.stop(i),n.fancybox.setTranslate(i,o.getFitPos(t)),t.pos===o.currPos&&(o.isAnimating=!1,o.updateCursor())),o.adjustLayout(t),r.length&&(r.trigger("refresh"),t.pos===o.currPos&&o.$refs.toolbar.add(o.$refs.navigation.find(".fancybox-button--arrow_right")).toggleClass("compensate-for-scrollbar",r.get(0).scrollHeight>r.get(0).clientHeight)),o.trigger("onUpdate",t,e)},centerSlide:function(t){var e=this,o=e.current,i=o.$slide;!e.isClosing&&o&&(i.siblings().css({transform:"",opacity:""}),i.parent().children().removeClass("fancybox-slide--previous fancybox-slide--next"),n.fancybox.animate(i,{top:0,left:0,opacity:1},void 0===t?0:t,function(){i.css({transform:"",opacity:""}),o.isComplete||e.complete()},!1))},isMoved:function(t){var e,o,i=t||this.current;return!!i&&(o=n.fancybox.getTranslate(this.$refs.stage),e=n.fancybox.getTranslate(i.$slide),!i.$slide.hasClass("fancybox-animated")&&(Math.abs(e.top-o.top)>.5||Math.abs(e.left-o.left)>.5))},updateCursor:function(t,e){var o,i,a=this,s=a.current,r=a.$refs.container;s&&!a.isClosing&&a.Guestures&&(r.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan"),o=a.canPan(t,e),i=!!o||a.isZoomable(),r.toggleClass("fancybox-is-zoomable",i),n("[data-fancybox-zoom]").prop("disabled",!i),o?r.addClass("fancybox-can-pan"):i&&("zoom"===s.opts.clickContent||n.isFunction(s.opts.clickContent)&&"zoom"==s.opts.clickContent(s))?r.addClass("fancybox-can-zoomIn"):s.opts.touch&&(s.opts.touch.vertical||a.group.length>1)&&"video"!==s.contentType&&r.addClass("fancybox-can-swipe"))},isZoomable:function(){var t,e=this,n=e.current;if(n&&!e.isClosing&&"image"===n.type&&!n.hasError){if(!n.isLoaded)return!0;if((t=e.getFitPos(n))&&(n.width>t.width||n.height>t.height))return!0}return!1},isScaledDown:function(t,e){var o=this,i=!1,a=o.current,s=a.$content;return void 0!==t&&void 0!==e?i=t1.5||Math.abs(a.height-s.height)>1.5)),s},loadSlide:function(t){var e,o,i,a=this;if(!t.isLoading&&!t.isLoaded){if(t.isLoading=!0,!1===a.trigger("beforeLoad",t))return t.isLoading=!1,!1;switch(e=t.type,o=t.$slide,o.off("refresh").trigger("onReset").addClass(t.opts.slideClass),e){case"image":a.setImage(t);break;case"iframe":a.setIframe(t);break;case"html":a.setContent(t,t.src||t.content);break;case"video":a.setContent(t,t.opts.video.tpl.replace(/\{\{src\}\}/gi,t.src).replace("{{format}}",t.opts.videoFormat||t.opts.video.format||"").replace("{{poster}}",t.thumb||""));break;case"inline":n(t.src).length?a.setContent(t,n(t.src)):a.setError(t);break;case"ajax":a.showLoading(t),i=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){"success"===n&&a.setContent(t,e)},error:function(e,n){e&&"abort"!==n&&a.setError(t)}})),o.one("onReset",function(){i.abort()});break;default:a.setError(t)}return!0}},setImage:function(t){var o,i=this;setTimeout(function(){var e=t.$image;i.isClosing||!t.isLoading||e&&e.length&&e[0].complete||t.hasError||i.showLoading(t)},50),i.checkSrcset(t),t.$content=n('
    ').addClass("fancybox-is-hidden").appendTo(t.$slide.addClass("fancybox-slide--image")),!1!==t.opts.preload&&t.opts.width&&t.opts.height&&t.thumb&&(t.width=t.opts.width,t.height=t.opts.height,o=e.createElement("img"),o.onerror=function(){n(this).remove(),t.$ghost=null},o.onload=function(){i.afterLoad(t)},t.$ghost=n(o).addClass("fancybox-image").appendTo(t.$content).attr("src",t.thumb)),i.setBigImage(t)},checkSrcset:function(e){var n,o,i,a,s=e.opts.srcset||e.opts.image.srcset;if(s){i=t.devicePixelRatio||1,a=t.innerWidth*i,o=s.split(",").map(function(t){var e={};return t.trim().split(/\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);if(0===n)return e.url=t;o&&(e.value=o,e.postfix=t[t.length-1])}),e}),o.sort(function(t,e){return t.value-e.value});for(var r=0;r=a||"x"===c.postfix&&c.value>=i){n=c;break}}!n&&o.length&&(n=o[o.length-1]),n&&(e.src=n.url,e.width&&e.height&&"w"==n.postfix&&(e.height=e.width/e.height*n.value,e.width=n.value),e.opts.srcset=s)}},setBigImage:function(t){var o=this,i=e.createElement("img"),a=n(i);t.$image=a.one("error",function(){o.setError(t)}).one("load",function(){var e;t.$ghost||(o.resolveImageSlideSize(t,this.naturalWidth,this.naturalHeight),o.afterLoad(t)),o.isClosing||(t.opts.srcset&&(e=t.opts.sizes,e&&"auto"!==e||(e=(t.width/t.height>1&&s.width()/s.height()>1?"100":Math.round(t.width/t.height*100))+"vw"),a.attr("sizes",e).attr("srcset",t.opts.srcset)),t.$ghost&&setTimeout(function(){t.$ghost&&!o.isClosing&&t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))),o.hideLoading(t))}).addClass("fancybox-image").attr("src",t.src).appendTo(t.$content),(i.complete||"complete"==i.readyState)&&a.naturalWidth&&a.naturalHeight?a.trigger("load"):i.error&&a.trigger("error")},resolveImageSlideSize:function(t,e,n){var o=parseInt(t.opts.width,10),i=parseInt(t.opts.height,10);t.width=e,t.height=n,o>0&&(t.width=o,t.height=Math.floor(o*n/e)),i>0&&(t.width=Math.floor(i*e/n),t.height=i)},setIframe:function(t){var e,o=this,i=t.opts.iframe,a=t.$slide;t.$content=n('
    ').css(i.css).appendTo(a),a.addClass("fancybox-slide--"+t.contentType),t.$iframe=e=n(i.tpl.replace(/\{rnd\}/g,(new Date).getTime())).attr(i.attr).appendTo(t.$content),i.preload?(o.showLoading(t),e.on("load.fb error.fb",function(e){this.isReady=1,t.$slide.trigger("refresh"),o.afterLoad(t)}),a.on("refresh.fb",function(){var n,o,s=t.$content,r=i.css.width,c=i.css.height;if(1===e[0].isReady){try{n=e.contents(),o=n.find("body")}catch(t){}o&&o.length&&o.children().length&&(a.css("overflow","visible"),s.css({width:"100%","max-width":"100%",height:"9999px"}),void 0===r&&(r=Math.ceil(Math.max(o[0].clientWidth,o.outerWidth(!0)))),s.css("width",r||"").css("max-width",""),void 0===c&&(c=Math.ceil(Math.max(o[0].clientHeight,o.outerHeight(!0)))),s.css("height",c||""),a.css("overflow","auto")),s.removeClass("fancybox-is-hidden")}})):o.afterLoad(t),e.attr("src",t.src),a.one("onReset",function(){try{n(this).find("iframe").hide().unbind().attr("src","//about:blank")}catch(t){}n(this).off("refresh.fb").empty(),t.isLoaded=!1,t.isRevealed=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$content&&n.fancybox.stop(t.$content),t.$slide.empty(),l(e)&&e.parent().length?((e.hasClass("fancybox-content")||e.parent().hasClass("fancybox-content"))&&e.parents(".fancybox-slide").trigger("onReset"),t.$placeholder=n("
    ").hide().insertAfter(e),e.css("display","inline-block")):t.hasError||("string"===n.type(e)&&(e=n("
    ").append(n.trim(e)).contents()),t.opts.filter&&(e=n("
    ").html(e).find(t.opts.filter))),t.$slide.one("onReset",function(){n(this).find("video,audio").trigger("pause"),t.$placeholder&&(t.$placeholder.after(e.removeClass("fancybox-content").hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1,t.isRevealed=!1)}),n(e).appendTo(t.$slide),n(e).is("video,audio")&&(n(e).addClass("fancybox-video"),n(e).wrap("
    "),t.contentType="video",t.opts.width=t.opts.width||n(e).attr("width"),t.opts.height=t.opts.height||n(e).attr("height")),t.$content=t.$slide.children().filter("div,form,main,video,audio,article,.fancybox-content").first(),t.$content.siblings().hide(),t.$content.length||(t.$content=t.$slide.wrapInner("
    ").children().first()),t.$content.addClass("fancybox-content"),t.$slide.addClass("fancybox-slide--"+t.contentType),o.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.trigger("onReset").removeClass("fancybox-slide--"+t.contentType).addClass("fancybox-slide--error"),t.contentType="html",this.setContent(t,this.translate(t,t.opts.errorTpl)),t.pos===this.currPos&&(this.isAnimating=!1)},showLoading:function(t){var e=this;(t=t||e.current)&&!t.$spinner&&(t.$spinner=n(e.translate(e,e.opts.spinnerTpl)).appendTo(t.$slide).hide().fadeIn("fast"))},hideLoading:function(t){var e=this;(t=t||e.current)&&t.$spinner&&(t.$spinner.stop().remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger("afterLoad",t),e.hideLoading(t),!t.opts.smallBtn||t.$smallBtn&&t.$smallBtn.length||(t.$smallBtn=n(e.translate(t,t.opts.btnTpl.smallBtn)).appendTo(t.$content)),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on("contextmenu.fb",function(t){return 2==t.button&&t.preventDefault(),!0}),"image"===t.type&&n('
    ').appendTo(t.$content)),e.adjustCaption(t),e.adjustLayout(t),t.pos===e.currPos&&e.updateCursor(),e.revealContent(t))},adjustCaption:function(t){var e,n=this,o=t||n.current,i=o.opts.caption,a=o.opts.preventCaptionOverlap,s=n.$refs.caption,r=!1;s.toggleClass("fancybox-caption--separate",a),a&&i&&i.length&&(o.pos!==n.currPos?(e=s.clone().appendTo(s.parent()),e.children().eq(0).empty().html(i),r=e.outerHeight(!0),e.empty().remove()):n.$caption&&(r=n.$caption.outerHeight(!0)),o.$slide.css("padding-bottom",r||""))},adjustLayout:function(t){var e,n,o,i,a=this,s=t||a.current;s.isLoaded&&!0!==s.opts.disableLayoutFix&&(s.$content.css("margin-bottom",""),s.$content.outerHeight()>s.$slide.height()+.5&&(o=s.$slide[0].style["padding-bottom"],i=s.$slide.css("padding-bottom"),parseFloat(i)>0&&(e=s.$slide[0].scrollHeight,s.$slide.css("padding-bottom",0),Math.abs(e-s.$slide[0].scrollHeight)<1&&(n=i),s.$slide.css("padding-bottom",o))),s.$content.css("margin-bottom",n))},revealContent:function(t){var e,o,i,a,s=this,r=t.$slide,c=!1,l=!1,d=s.isMoved(t),u=t.isRevealed;return t.isRevealed=!0,e=t.opts[s.firstRun?"animationEffect":"transitionEffect"],i=t.opts[s.firstRun?"animationDuration":"transitionDuration"],i=parseInt(void 0===t.forcedDuration?i:t.forcedDuration,10),!d&&t.pos===s.currPos&&i||(e=!1),"zoom"===e&&(t.pos===s.currPos&&i&&"image"===t.type&&!t.hasError&&(l=s.getThumbPos(t))?c=s.getFitPos(t):e="fade"),"zoom"===e?(s.isAnimating=!0,c.scaleX=c.width/l.width,c.scaleY=c.height/l.height,a=t.opts.zoomOpacity,"auto"==a&&(a=Math.abs(t.width/t.height-l.width/l.height)>.1),a&&(l.opacity=.1,c.opacity=1),n.fancybox.setTranslate(t.$content.removeClass("fancybox-is-hidden"),l),p(t.$content),void n.fancybox.animate(t.$content,c,i,function(){s.isAnimating=!1,s.complete()})):(s.updateSlide(t),e?(n.fancybox.stop(r),o="fancybox-slide--"+(t.pos>=s.prevPos?"next":"previous")+" fancybox-animated fancybox-fx-"+e,r.addClass(o).removeClass("fancybox-slide--current"),t.$content.removeClass("fancybox-is-hidden"),p(r),"image"!==t.type&&t.$content.hide().show(0),void n.fancybox.animate(r,"fancybox-slide--current",i,function(){r.removeClass(o).css({transform:"",opacity:""}),t.pos===s.currPos&&s.complete()},!0)):(t.$content.removeClass("fancybox-is-hidden"),u||!d||"image"!==t.type||t.hasError||t.$content.hide().fadeIn("fast"),void(t.pos===s.currPos&&s.complete())))},getThumbPos:function(t){var e,o,i,a,s,r=!1,c=t.$thumb;return!(!c||!g(c[0]))&&(e=n.fancybox.getTranslate(c),o=parseFloat(c.css("border-top-width")||0),i=parseFloat(c.css("border-right-width")||0),a=parseFloat(c.css("border-bottom-width")||0),s=parseFloat(c.css("border-left-width")||0),r={top:e.top+o,left:e.left+s,width:e.width-i-s,height:e.height-o-a,scaleX:1,scaleY:1},e.width>0&&e.height>0&&r)},complete:function(){var t,e=this,o=e.current,i={};!e.isMoved()&&o.isLoaded&&(o.isComplete||(o.isComplete=!0,o.$slide.siblings().trigger("onReset"),e.preload("inline"),p(o.$slide),o.$slide.addClass("fancybox-slide--complete"),n.each(e.slides,function(t,o){o.pos>=e.currPos-1&&o.pos<=e.currPos+1?i[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.off().remove())}),e.slides=i),e.isAnimating=!1,e.updateCursor(),e.trigger("afterShow"),o.opts.video.autoStart&&o.$slide.find("video,audio").filter(":visible:first").trigger("play").one("ended",function(){this.webkitExitFullscreen&&this.webkitExitFullscreen(),e.next()}),o.opts.autoFocus&&"html"===o.contentType&&(t=o.$content.find("input[autofocus]:enabled:visible:first"),t.length?t.trigger("focus"):e.focus(null,!0)),o.$slide.scrollTop(0).scrollLeft(0))},preload:function(t){var e,n,o=this;o.group.length<2||(n=o.slides[o.currPos+1],e=o.slides[o.currPos-1],e&&e.type===t&&o.loadSlide(e),n&&n.type===t&&o.loadSlide(n))},focus:function(t,o){var i,a,s=this,r=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","button:not([disabled]):not([aria-hidden])","iframe","object","embed","video","audio","[contenteditable]",'[tabindex]:not([tabindex^="-"])'].join(",");s.isClosing||(i=!t&&s.current&&s.current.isComplete?s.current.$slide.find("*:visible"+(o?":not(.fancybox-close-small)":"")):s.$refs.container.find("*:visible"),i=i.filter(r).filter(function(){return"hidden"!==n(this).css("visibility")&&!n(this).hasClass("disabled")}),i.length?(a=i.index(e.activeElement),t&&t.shiftKey?(a<0||0==a)&&(t.preventDefault(),i.eq(i.length-1).trigger("focus")):(a<0||a==i.length-1)&&(t&&t.preventDefault(),i.eq(0).trigger("focus"))):s.$refs.container.trigger("focus"))},activate:function(){var t=this;n(".fancybox-container").each(function(){var e=n(this).data("FancyBox");e&&e.id!==t.id&&!e.isClosing&&(e.trigger("onDeactivate"),e.removeEvents(),e.isVisible=!1)}),t.isVisible=!0,(t.current||t.isIdle)&&(t.update(),t.updateControls()),t.trigger("onActivate"),t.addEvents()},close:function(t,e){var o,i,a,s,r,c,l,u=this,f=u.current,h=function(){u.cleanUp(t)};return!u.isClosing&&(u.isClosing=!0,!1===u.trigger("beforeClose",t)?(u.isClosing=!1,d(function(){u.update()}),!1):(u.removeEvents(),a=f.$content,o=f.opts.animationEffect,i=n.isNumeric(e)?e:o?f.opts.animationDuration:0,f.$slide.removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"),!0!==t?n.fancybox.stop(f.$slide):o=!1,f.$slide.siblings().trigger("onReset").remove(),i&&u.$refs.container.removeClass("fancybox-is-open").addClass("fancybox-is-closing").css("transition-duration",i+"ms"),u.hideLoading(f),u.hideControls(!0),u.updateCursor(),"zoom"!==o||a&&i&&"image"===f.type&&!u.isMoved()&&!f.hasError&&(l=u.getThumbPos(f))||(o="fade"),"zoom"===o?(n.fancybox.stop(a),s=n.fancybox.getTranslate(a),c={top:s.top,left:s.left,scaleX:s.width/l.width,scaleY:s.height/l.height,width:l.width,height:l.height},r=f.opts.zoomOpacity,"auto"==r&&(r=Math.abs(f.width/f.height-l.width/l.height)>.1),r&&(l.opacity=0), +n.fancybox.setTranslate(a,c),p(a),n.fancybox.animate(a,l,i,h),!0):(o&&i?n.fancybox.animate(f.$slide.addClass("fancybox-slide--previous").removeClass("fancybox-slide--current"),"fancybox-animated fancybox-fx-"+o,i,h):!0===t?setTimeout(h,i):h(),!0)))},cleanUp:function(e){var o,i,a,s=this,r=s.current.opts.$orig;s.current.$slide.trigger("onReset"),s.$refs.container.empty().remove(),s.trigger("afterClose",e),s.current.opts.backFocus&&(r&&r.length&&r.is(":visible")||(r=s.$trigger),r&&r.length&&(i=t.scrollX,a=t.scrollY,r.trigger("focus"),n("html, body").scrollTop(a).scrollLeft(i))),s.current=null,o=n.fancybox.getInstance(),o?o.activate():(n("body").removeClass("fancybox-active compensate-for-scrollbar"),n("#fancybox-style-noscroll").remove())},trigger:function(t,e){var o,i=Array.prototype.slice.call(arguments,1),a=this,s=e&&e.opts?e:a.current;if(s?i.unshift(s):s=a,i.unshift(a),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,i)),!1===o)return o;"afterClose"!==t&&a.$refs?a.$refs.container.trigger(t+".fb",i):r.trigger(t+".fb",i)},updateControls:function(){var t=this,o=t.current,i=o.index,a=t.$refs.container,s=t.$refs.caption,r=o.opts.caption;o.$slide.trigger("refresh"),r&&r.length?(t.$caption=s,s.children().eq(0).html(r)):t.$caption=null,t.hasHiddenControls||t.isIdle||t.showControls(),a.find("[data-fancybox-count]").html(t.group.length),a.find("[data-fancybox-index]").html(i+1),a.find("[data-fancybox-prev]").prop("disabled",!o.opts.loop&&i<=0),a.find("[data-fancybox-next]").prop("disabled",!o.opts.loop&&i>=t.group.length-1),"image"===o.type?a.find("[data-fancybox-zoom]").show().end().find("[data-fancybox-download]").attr("href",o.opts.image.src||o.src).show():o.opts.toolbar&&a.find("[data-fancybox-download],[data-fancybox-zoom]").hide(),n(e.activeElement).is(":hidden,[disabled]")&&t.$refs.container.trigger("focus")},hideControls:function(t){var e=this,n=["infobar","toolbar","nav"];!t&&e.current.opts.preventCaptionOverlap||n.push("caption"),this.$refs.container.removeClass(n.map(function(t){return"fancybox-show-"+t}).join(" ")),this.hasHiddenControls=!0},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.hasHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass("fancybox-show-toolbar",!(!e.toolbar||!e.buttons)).toggleClass("fancybox-show-infobar",!!(e.infobar&&t.group.length>1)).toggleClass("fancybox-show-caption",!!t.$caption).toggleClass("fancybox-show-nav",!!(e.arrows&&t.group.length>1)).toggleClass("fancybox-is-modal",!!e.modal)},toggleControls:function(){this.hasHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:"3.5.6",defaults:a,getInstance:function(t){var e=n('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"),o=Array.prototype.slice.call(arguments,1);return e instanceof b&&("string"===n.type(t)?e[t].apply(e,o):"function"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new b(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),!0===t&&this.close(t))},destroy:function(){this.close(!0),r.add("body").off("click.fb-start","**")},isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),use3d:function(){var n=e.createElement("div");return t.getComputedStyle&&t.getComputedStyle(n)&&t.getComputedStyle(n).getPropertyValue("transform")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;return!(!t||!t.length)&&(e=t[0].getBoundingClientRect(),{top:e.top||0,left:e.left||0,width:e.width,height:e.height,opacity:parseFloat(t.css("opacity"))})},setTranslate:function(t,e){var n="",o={};if(t&&e)return void 0===e.left&&void 0===e.top||(n=(void 0===e.left?t.position().left:e.left)+"px, "+(void 0===e.top?t.position().top:e.top)+"px",n=this.use3d?"translate3d("+n+", 0px)":"translate("+n+")"),void 0!==e.scaleX&&void 0!==e.scaleY?n+=" scale("+e.scaleX+", "+e.scaleY+")":void 0!==e.scaleX&&(n+=" scaleX("+e.scaleX+")"),n.length&&(o.transform=n),void 0!==e.opacity&&(o.opacity=e.opacity),void 0!==e.width&&(o.width=e.width),void 0!==e.height&&(o.height=e.height),t.css(o)},animate:function(t,e,o,i,a){var s,r=this;n.isFunction(o)&&(i=o,o=null),r.stop(t),s=r.getTranslate(t),t.on(f,function(c){(!c||!c.originalEvent||t.is(c.originalEvent.target)&&"z-index"!=c.originalEvent.propertyName)&&(r.stop(t),n.isNumeric(o)&&t.css("transition-duration",""),n.isPlainObject(e)?void 0!==e.scaleX&&void 0!==e.scaleY&&r.setTranslate(t,{top:e.top,left:e.left,width:s.width*e.scaleX,height:s.height*e.scaleY,scaleX:1,scaleY:1}):!0!==a&&t.removeClass(e),n.isFunction(i)&&i(c))}),n.isNumeric(o)&&t.css("transition-duration",o+"ms"),n.isPlainObject(e)?(void 0!==e.scaleX&&void 0!==e.scaleY&&(delete e.width,delete e.height,t.parent().hasClass("fancybox-slide--image")&&t.parent().addClass("fancybox-is-scaling")),n.fancybox.setTranslate(t,e)):t.addClass(e),t.data("timer",setTimeout(function(){t.trigger(f)},o+33))},stop:function(t,e){t&&t.length&&(clearTimeout(t.data("timer")),e&&t.trigger(f),t.off(f).css("transition-duration",""),t.parent().removeClass("fancybox-is-scaling"))}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n("body").off("click.fb-start",e).on("click.fb-start",e,{options:t},i):this.off("click.fb-start").on("click.fb-start",{items:this,options:t},i),this},r.on("click.fb-start","[data-fancybox]",i),r.on("click.fb-start","[data-fancybox-trigger]",function(t){n('[data-fancybox="'+n(this).attr("data-fancybox-trigger")+'"]').eq(n(this).attr("data-fancybox-index")||0).trigger("click.fb-start",{$trigger:n(this)})}),function(){var t=null;r.on("mousedown mouseup focus blur",".fancybox-button",function(e){switch(e.type){case"mousedown":t=n(this);break;case"mouseup":t=null;break;case"focusin":n(".fancybox-button").removeClass("fancybox-focus"),n(this).is(t)||n(this).is("[disabled]")||n(this).addClass("fancybox-focus");break;case"focusout":n(".fancybox-button").removeClass("fancybox-focus")}})}()}}(window,document,jQuery),function(t){"use strict";var e={youtube:{matcher:/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:"transparent",enablejsapi:1,html5:1},paramPlace:8,type:"iframe",url:"https://www.youtube-nocookie.com/embed/$4",thumb:"https://img.youtube.com/vi/$4/hqdefault.jpg"},vimeo:{matcher:/^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1},paramPlace:3,type:"iframe",url:"//player.vimeo.com/video/$2"},instagram:{matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,type:"image",url:"//$1/p/$2/media/?size=l"},gmap_place:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/?ll="+(t[9]?t[9]+"&z="+Math.floor(t[10])+(t[12]?t[12].replace(/^\//,"&"):""):t[12]+"").replace(/\?/,"&")+"&output="+(t[12]&&t[12].indexOf("layer=c")>0?"svembed":"embed")}},gmap_search:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/maps?q="+t[5].replace("query=","q=").replace("api=1","")+"&output=embed"}}},n=function(e,n,o){if(e)return o=o||"","object"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace("$"+t,n||"")}),o.length&&(e+=(e.indexOf("?")>0?"&":"?")+o),e};t(document).on("objectNeedsType.fb",function(o,i,a){var s,r,c,l,d,u,f,p=a.src||"",h=!1;s=t.extend(!0,{},e,a.opts.media),t.each(s,function(e,o){if(c=p.match(o.matcher)){if(h=o.type,f=e,u={},o.paramPlace&&c[o.paramPlace]){d=c[o.paramPlace],"?"==d[0]&&(d=d.substring(1)),d=d.split("&");for(var i=0;i1&&("youtube"===n.contentSource||"vimeo"===n.contentSource)&&o.load(n.contentSource)}})}(jQuery),function(t,e,n){"use strict";var o=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),i=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),a=function(e){var n=[];e=e.originalEvent||e||t.e,e=e.touches&&e.touches.length?e.touches:e.changedTouches&&e.changedTouches.length?e.changedTouches:[e];for(var o in e)e[o].pageX?n.push({x:e[o].pageX,y:e[o].pageY}):e[o].clientX&&n.push({x:e[o].clientX,y:e[o].clientY});return n},s=function(t,e,n){return e&&t?"x"===n?t.x-e.x:"y"===n?t.y-e.y:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)):0},r=function(t){if(t.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio,iframe')||n.isFunction(t.get(0).onclick)||t.data("selectable"))return!0;for(var e=0,o=t[0].attributes,i=o.length;ee.clientHeight,a=("scroll"===o||"auto"===o)&&e.scrollWidth>e.clientWidth;return i||a},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass("fancybox-stage")||t.is("body"))break}return e},d=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on("touchstart.fb.touch mousedown.fb.touch",n.proxy(e,"ontouchstart"))};d.prototype.destroy=function(){var t=this;t.$container.off(".fb.touch"),n(e).off(".fb.touch"),t.requestId&&(i(t.requestId),t.requestId=null),t.tapped&&(clearTimeout(t.tapped),t.tapped=null)},d.prototype.ontouchstart=function(o){var i=this,c=n(o.target),d=i.instance,u=d.current,f=u.$slide,p=u.$content,h="touchstart"==o.type;if(h&&i.$container.off("mousedown.fb.touch"),(!o.originalEvent||2!=o.originalEvent.button)&&f.length&&c.length&&!r(c)&&!r(c.parent())&&(c.is("img")||!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left))){if(!u||d.isAnimating||u.$slide.hasClass("fancybox-animated"))return o.stopPropagation(),void o.preventDefault();i.realPoints=i.startPoints=a(o),i.startPoints.length&&(u.touch&&o.stopPropagation(),i.startEvent=o,i.canTap=!0,i.$target=c,i.$content=p,i.opts=u.opts.touch,i.isPanning=!1,i.isSwiping=!1,i.isZooming=!1,i.isScrolling=!1,i.canPan=d.canPan(),i.startTime=(new Date).getTime(),i.distanceX=i.distanceY=i.distance=0,i.canvasWidth=Math.round(f[0].clientWidth),i.canvasHeight=Math.round(f[0].clientHeight),i.contentLastPos=null,i.contentStartPos=n.fancybox.getTranslate(i.$content)||{top:0,left:0},i.sliderStartPos=n.fancybox.getTranslate(f),i.stagePos=n.fancybox.getTranslate(d.$refs.stage),i.sliderStartPos.top-=i.stagePos.top,i.sliderStartPos.left-=i.stagePos.left,i.contentStartPos.top-=i.stagePos.top,i.contentStartPos.left-=i.stagePos.left,n(e).off(".fb.touch").on(h?"touchend.fb.touch touchcancel.fb.touch":"mouseup.fb.touch mouseleave.fb.touch",n.proxy(i,"ontouchend")).on(h?"touchmove.fb.touch":"mousemove.fb.touch",n.proxy(i,"ontouchmove")),n.fancybox.isMobile&&e.addEventListener("scroll",i.onscroll,!0),((i.opts||i.canPan)&&(c.is(i.$stage)||i.$stage.find(c).length)||(c.is(".fancybox-image")&&o.preventDefault(),n.fancybox.isMobile&&c.parents(".fancybox-caption").length))&&(i.isScrollable=l(c)||l(c.parent()),n.fancybox.isMobile&&i.isScrollable||o.preventDefault(),(1===i.startPoints.length||u.hasError)&&(i.canPan?(n.fancybox.stop(i.$content),i.isPanning=!0):i.isSwiping=!0,i.$container.addClass("fancybox-is-grabbing")),2===i.startPoints.length&&"image"===u.type&&(u.isLoaded||u.$ghost)&&(i.canTap=!1,i.isSwiping=!1,i.isPanning=!1,i.isZooming=!0,n.fancybox.stop(i.$content),i.centerPointStartX=.5*(i.startPoints[0].x+i.startPoints[1].x)-n(t).scrollLeft(),i.centerPointStartY=.5*(i.startPoints[0].y+i.startPoints[1].y)-n(t).scrollTop(),i.percentageOfImageAtPinchPointX=(i.centerPointStartX-i.contentStartPos.left)/i.contentStartPos.width,i.percentageOfImageAtPinchPointY=(i.centerPointStartY-i.contentStartPos.top)/i.contentStartPos.height,i.startDistanceBetweenFingers=s(i.startPoints[0],i.startPoints[1]))))}},d.prototype.onscroll=function(t){var n=this;n.isScrolling=!0,e.removeEventListener("scroll",n.onscroll,!0)},d.prototype.ontouchmove=function(t){var e=this;return void 0!==t.originalEvent.buttons&&0===t.originalEvent.buttons?void e.ontouchend(t):e.isScrolling?void(e.canTap=!1):(e.newPoints=a(t),void((e.opts||e.canPan)&&e.newPoints.length&&e.newPoints.length&&(e.isSwiping&&!0===e.isSwiping||t.preventDefault(),e.distanceX=s(e.newPoints[0],e.startPoints[0],"x"),e.distanceY=s(e.newPoints[0],e.startPoints[0],"y"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0&&(e.isSwiping?e.onSwipe(t):e.isPanning?e.onPan():e.isZooming&&e.onZoom()))))},d.prototype.onSwipe=function(e){var a,s=this,r=s.instance,c=s.isSwiping,l=s.sliderStartPos.left||0;if(!0!==c)"x"==c&&(s.distanceX>0&&(s.instance.group.length<2||0===s.instance.current.index&&!s.instance.current.opts.loop)?l+=Math.pow(s.distanceX,.8):s.distanceX<0&&(s.instance.group.length<2||s.instance.current.index===s.instance.group.length-1&&!s.instance.current.opts.loop)?l-=Math.pow(-s.distanceX,.8):l+=s.distanceX),s.sliderLastPos={top:"x"==c?0:s.sliderStartPos.top+s.distanceY,left:l},s.requestId&&(i(s.requestId),s.requestId=null),s.requestId=o(function(){s.sliderLastPos&&(n.each(s.instance.slides,function(t,e){var o=e.pos-s.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:s.sliderLastPos.top,left:s.sliderLastPos.left+o*s.canvasWidth+o*e.opts.gutter})}),s.$container.addClass("fancybox-is-sliding"))});else if(Math.abs(s.distance)>10){if(s.canTap=!1,r.group.length<2&&s.opts.vertical?s.isSwiping="y":r.isDragging||!1===s.opts.vertical||"auto"===s.opts.vertical&&n(t).width()>800?s.isSwiping="x":(a=Math.abs(180*Math.atan2(s.distanceY,s.distanceX)/Math.PI),s.isSwiping=a>45&&a<135?"y":"x"),"y"===s.isSwiping&&n.fancybox.isMobile&&s.isScrollable)return void(s.isScrolling=!0);r.isDragging=s.isSwiping,s.startPoints=s.newPoints,n.each(r.slides,function(t,e){var o,i;n.fancybox.stop(e.$slide),o=n.fancybox.getTranslate(e.$slide),i=n.fancybox.getTranslate(r.$refs.stage),e.$slide.css({transform:"",opacity:"","transition-duration":""}).removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")}),e.pos===r.current.pos&&(s.sliderStartPos.top=o.top-i.top,s.sliderStartPos.left=o.left-i.left),n.fancybox.setTranslate(e.$slide,{top:o.top-i.top,left:o.left-i.left})}),r.SlideShow&&r.SlideShow.isActive&&r.SlideShow.stop()}},d.prototype.onPan=function(){var t=this;if(s(t.newPoints[0],t.realPoints[0])<(n.fancybox.isMobile?10:5))return void(t.startPoints=t.newPoints);t.canTap=!1,t.contentLastPos=t.limitMovement(),t.requestId&&i(t.requestId),t.requestId=o(function(){n.fancybox.setTranslate(t.$content,t.contentLastPos)})},d.prototype.limitMovement=function(){var t,e,n,o,i,a,s=this,r=s.canvasWidth,c=s.canvasHeight,l=s.distanceX,d=s.distanceY,u=s.contentStartPos,f=u.left,p=u.top,h=u.width,g=u.height;return i=h>r?f+l:f,a=p+d,t=Math.max(0,.5*r-.5*h),e=Math.max(0,.5*c-.5*g),n=Math.min(r-h,.5*r-.5*h),o=Math.min(c-g,.5*c-.5*g),l>0&&i>t&&(i=t-1+Math.pow(-t+f+l,.8)||0),l<0&&i0&&a>e&&(a=e-1+Math.pow(-e+p+d,.8)||0),d<0&&aa?(t=t>0?0:t,t=ts?(e=e>0?0:e,e=e1&&(o.dMs>130&&s>10||s>50);o.sliderLastPos=null,"y"==t&&!e&&Math.abs(o.distanceY)>50?(n.fancybox.animate(o.instance.current.$slide,{top:o.sliderStartPos.top+o.distanceY+150*o.velocityY,opacity:0},200),i=o.instance.close(!0,250)):r&&o.distanceX>0?i=o.instance.previous(300):r&&o.distanceX<0&&(i=o.instance.next(300)),!1!==i||"x"!=t&&"y"!=t||o.instance.centerSlide(200),o.$container.removeClass("fancybox-is-sliding")},d.prototype.endPanning=function(){var t,e,o,i=this;i.contentLastPos&&(!1===i.opts.momentum||i.dMs>350?(t=i.contentLastPos.left,e=i.contentLastPos.top):(t=i.contentLastPos.left+500*i.velocityX,e=i.contentLastPos.top+500*i.velocityY),o=i.limitPosition(t,e,i.contentStartPos.width,i.contentStartPos.height),o.width=i.contentStartPos.width,o.height=i.contentStartPos.height,n.fancybox.animate(i.$content,o,366))},d.prototype.endZooming=function(){var t,e,o,i,a=this,s=a.instance.current,r=a.newWidth,c=a.newHeight;a.contentLastPos&&(t=a.contentLastPos.left,e=a.contentLastPos.top,i={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(a.$content,i),rs.width||c>s.height?a.instance.scaleToActual(a.centerPointStartX,a.centerPointStartY,150):(o=a.limitPosition(t,e,r,c),n.fancybox.animate(a.$content,o,150)))},d.prototype.onTap=function(e){var o,i=this,s=n(e.target),r=i.instance,c=r.current,l=e&&a(e)||i.startPoints,d=l[0]?l[0].x-n(t).scrollLeft()-i.stagePos.left:0,u=l[0]?l[0].y-n(t).scrollTop()-i.stagePos.top:0,f=function(t){var o=c.opts[t];if(n.isFunction(o)&&(o=o.apply(r,[c,e])),o)switch(o){case"close":r.close(i.startEvent);break;case"toggleControls":r.toggleControls();break;case"next":r.next();break;case"nextOrClose":r.group.length>1?r.next():r.close(i.startEvent);break;case"zoom":"image"==c.type&&(c.isLoaded||c.$ghost)&&(r.canPan()?r.scaleToFit():r.isScaledDown()?r.scaleToActual(d,u):r.group.length<2&&r.close(i.startEvent))}};if((!e.originalEvent||2!=e.originalEvent.button)&&(s.is("img")||!(d>s[0].clientWidth+s.offset().left))){if(s.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container"))o="Outside";else if(s.is(".fancybox-slide"))o="Slide";else{if(!r.current.$content||!r.current.$content.find(s).addBack().filter(s).length)return;o="Content"}if(i.tapped){if(clearTimeout(i.tapped),i.tapped=null,Math.abs(d-i.tapX)>50||Math.abs(u-i.tapY)>50)return this;f("dblclick"+o)}else i.tapX=d,i.tapY=u,c.opts["dblclick"+o]&&c.opts["dblclick"+o]!==c.opts["click"+o]?i.tapped=setTimeout(function(){i.tapped=null,r.isAnimating||f("click"+o)},500):f("click"+o);return this}},n(e).on("onActivate.fb",function(t,e){e&&!e.Guestures&&(e.Guestures=new d(e))}).on("beforeClose.fb",function(t,e){e&&e.Guestures&&e.Guestures.destroy()})}(window,document,jQuery),function(t,e){"use strict";e.extend(!0,e.fancybox.defaults,{btnTpl:{slideShow:''},slideShow:{autoStart:!1,speed:3e3,progress:!0}});var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,init:function(){var t=this,n=t.instance,o=n.group[n.currIndex].opts.slideShow;t.$button=n.$refs.toolbar.find("[data-fancybox-play]").on("click",function(){t.toggle()}),n.group.length<2||!o?t.$button.hide():o.progress&&(t.$progress=e('
    ').appendTo(n.$refs.inner))},set:function(t){var n=this,o=n.instance,i=o.current;i&&(!0===t||i.opts.loop||o.currIndex'},fullScreen:{autoStart:!1}}),e(t).on(n.fullscreenchange,function(){var t=o.isFullscreen(),n=e.fancybox.getInstance();n&&(n.current&&"image"===n.current.type&&n.isAnimating&&(n.isAnimating=!1,n.update(!0,!0,0),n.isComplete||n.complete()),n.trigger("onFullscreenChange",t),n.$refs.container.toggleClass("fancybox-is-fullscreen",t),n.$refs.toolbar.find("[data-fancybox-fullscreen]").toggleClass("fancybox-button--fsenter",!t).toggleClass("fancybox-button--fsexit",t))})}e(t).on({"onInit.fb":function(t,e){var i;if(!n)return void e.$refs.toolbar.find("[data-fancybox-fullscreen]").remove();e&&e.group[e.currIndex].opts.fullScreen?(i=e.$refs.container,i.on("click.fb-fullscreen","[data-fancybox-fullscreen]",function(t){t.stopPropagation(),t.preventDefault(),o.toggle()}),e.opts.fullScreen&&!0===e.opts.fullScreen.autoStart&&o.request(),e.FullScreen=o):e&&e.$refs.toolbar.find("[data-fancybox-fullscreen]").hide()},"afterKeydown.fb":function(t,e,n,o,i){e&&e.FullScreen&&70===i&&(o.preventDefault(),e.FullScreen.toggle())},"beforeClose.fb":function(t,e){e&&e.FullScreen&&e.$refs.container.hasClass("fancybox-is-fullscreen")&&o.exit()}})}(document,jQuery),function(t,e){"use strict";var n="fancybox-thumbs";e.fancybox.defaults=e.extend(!0,{btnTpl:{thumbs:''},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"}},e.fancybox.defaults);var o=function(t){this.init(t)};e.extend(o.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,isActive:!1,init:function(t){var e=this,n=t.group,o=0;e.instance=t,e.opts=n[t.currIndex].opts.thumbs,t.Thumbs=e,e.$button=t.$refs.toolbar.find("[data-fancybox-thumbs]");for(var i=0,a=n.length;i1));i++);o>1&&e.opts?(e.$button.removeAttr("style").on("click",function(){e.toggle()}),e.isActive=!0):e.$button.hide()},create:function(){var t,o=this,i=o.instance,a=o.opts.parentEl,s=[];o.$grid||(o.$grid=e('
    ').appendTo(i.$refs.container.find(a).addBack().filter(a)),o.$grid.on("click","a",function(){i.jumpTo(e(this).attr("data-index"))})),o.$list||(o.$list=e('
    ').appendTo(o.$grid)),e.each(i.group,function(e,n){t=n.thumb,t||"image"!==n.type||(t=n.src),s.push('")}),o.$list[0].innerHTML=s.join(""),"x"===o.opts.axis&&o.$list.width(parseInt(o.$grid.css("padding-right"),10)+i.group.length*o.$list.children().eq(0).outerWidth(!0))},focus:function(t){var e,n,o=this,i=o.$list,a=o.$grid;o.instance.current&&(e=i.children().removeClass("fancybox-thumbs-active").filter('[data-index="'+o.instance.current.index+'"]').addClass("fancybox-thumbs-active"),n=e.position(),"y"===o.opts.axis&&(n.top<0||n.top>i.height()-e.outerHeight())?i.stop().animate({scrollTop:i.scrollTop()+n.top},t):"x"===o.opts.axis&&(n.lefta.scrollLeft()+(a.width()-e.outerWidth()))&&i.parent().stop().animate({scrollLeft:n.left},t))},update:function(){var t=this;t.instance.$refs.container.toggleClass("fancybox-show-thumbs",this.isVisible),t.isVisible?(t.$grid||t.create(),t.instance.trigger("onThumbsShow"),t.focus(0)):t.$grid&&t.instance.trigger("onThumbsHide"),t.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({"onInit.fb":function(t,e){var n;e&&!e.Thumbs&&(n=new o(e),n.isActive&&!0===n.opts.autoStart&&n.show())},"beforeShow.fb":function(t,e,n,o){var i=e&&e.Thumbs;i&&i.isVisible&&i.focus(o?0:250)},"afterKeydown.fb":function(t,e,n,o,i){var a=e&&e.Thumbs;a&&a.isActive&&71===i&&(o.preventDefault(),a.toggle())},"beforeClose.fb":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&!1!==n.opts.hideOnClose&&n.$grid.hide()}})}(document,jQuery),function(t,e){"use strict";function n(t){var e={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}e.extend(!0,e.fancybox.defaults,{btnTpl:{share:''},share:{url:function(t,e){return!t.currentHash&&"inline"!==e.type&&"html"!==e.type&&(e.origSrc||e.src)||window.location}, +tpl:''}}),e(t).on("click","[data-fancybox-share]",function(){var t,o,i=e.fancybox.getInstance(),a=i.current||null;a&&("function"===e.type(a.opts.share.url)&&(t=a.opts.share.url.apply(a,[i,a])),o=a.opts.share.tpl.replace(/\{\{media\}\}/g,"image"===a.type?encodeURIComponent(a.src):"").replace(/\{\{url\}\}/g,encodeURIComponent(t)).replace(/\{\{url_raw\}\}/g,n(t)).replace(/\{\{descr\}\}/g,i.$caption?encodeURIComponent(i.$caption.text()):""),e.fancybox.open({src:i.translate(i,o),type:"html",opts:{touch:!1,animationEffect:!1,afterLoad:function(t,e){i.$refs.container.one("beforeClose.fb",function(){t.close(null,0)}),e.$content.find(".fancybox-share__button").click(function(){return window.open(this.href,"Share","width=550, height=450"),!1})},mobile:{autoFocus:!1}}}))})}(document,jQuery),function(t,e,n){"use strict";function o(){var e=t.location.hash.substr(1),n=e.split("-"),o=n.length>1&&/^\+?\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,i=n.join("-");return{hash:e,index:o<1?1:o,gallery:i}}function i(t){""!==t.gallery&&n("[data-fancybox='"+n.escapeSelector(t.gallery)+"']").eq(t.index-1).focus().trigger("click.fb-start")}function a(t){var e,n;return!!t&&(e=t.current?t.current.opts:t.opts,""!==(n=e.hash||(e.$orig?e.$orig.data("fancybox")||e.$orig.data("fancybox-trigger"):""))&&n)}n.escapeSelector||(n.escapeSelector=function(t){return(t+"").replace(/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t})}),n(function(){!1!==n.fancybox.defaults.hash&&(n(e).on({"onInit.fb":function(t,e){var n,i;!1!==e.group[e.currIndex].opts.hash&&(n=o(),(i=a(e))&&n.gallery&&i==n.gallery&&(e.currIndex=n.index-1))},"beforeShow.fb":function(n,o,i,s){var r;i&&!1!==i.opts.hash&&(r=a(o))&&(o.currentHash=r+(o.group.length>1?"-"+(i.index+1):""),t.location.hash!=="#"+o.currentHash&&(s&&!o.origHash&&(o.origHash=t.location.hash),o.hashTimer&&clearTimeout(o.hashTimer),o.hashTimer=setTimeout(function(){"replaceState"in t.history?(t.history[s?"pushState":"replaceState"]({},e.title,t.location.pathname+t.location.search+"#"+o.currentHash),s&&(o.hasCreatedHistory=!0)):t.location.hash=o.currentHash,o.hashTimer=null},300)))},"beforeClose.fb":function(n,o,i){i&&!1!==i.opts.hash&&(clearTimeout(o.hashTimer),o.currentHash&&o.hasCreatedHistory?t.history.back():o.currentHash&&("replaceState"in t.history?t.history.replaceState({},e.title,t.location.pathname+t.location.search+(o.origHash||"")):t.location.hash=o.origHash),o.currentHash=null)}}),n(t).on("hashchange.fb",function(){var t=o(),e=null;n.each(n(".fancybox-container").get().reverse(),function(t,o){var i=n(o).data("FancyBox");if(i&&i.currentHash)return e=i,!1}),e?e.currentHash===t.gallery+"-"+t.index||1===t.index&&e.currentHash==t.gallery||(e.currentHash=null,e.close()):""!==t.gallery&&i(t)}),setTimeout(function(){n.fancybox.getInstance()||i(o())},50))})}(window,document,jQuery),function(t,e){"use strict";var n=(new Date).getTime();e(t).on({"onInit.fb":function(t,e,o){e.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll",function(t){var o=e.current,i=(new Date).getTime();e.group.length<2||!1===o.opts.wheel||"auto"===o.opts.wheel&&"image"!==o.type||(t.preventDefault(),t.stopPropagation(),o.$slide.hasClass("fancybox-animated")||(t=t.originalEvent||t,i-n<250||(n=i,e[(-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)<0?"next":"previous"]())))})}})}(document,jQuery); \ No newline at end of file diff --git a/Ausgabe/common/fancybox/jquery.fancybox.pack.js b/Ausgabe/common/fancybox/jquery.fancybox.pack.js new file mode 100755 index 0000000..73f7578 --- /dev/null +++ b/Ausgabe/common/fancybox/jquery.fancybox.pack.js @@ -0,0 +1,46 @@ +/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ +(function(r,G,f,v){var J=f("html"),n=f(r),p=f(G),b=f.fancybox=function(){b.open.apply(this,arguments)},I=navigator.userAgent.match(/msie/i),B=null,s=G.createTouch!==v,t=function(a){return a&&a.hasOwnProperty&&a instanceof f},q=function(a){return a&&"string"===f.type(a)},E=function(a){return q(a)&&0
    ',image:'',iframe:'",error:'

    The requested content cannot be loaded.
    Please try again later.

    ',closeBtn:'',next:'',prev:''},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0, +openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1, +isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=t(a)?f(a).get():[a]),f.each(a,function(e,c){var k={},g,h,j,m,l;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),t(c)?(k={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0,k, +c.metadata())):k=c);g=d.href||k.href||(q(c)?c:null);h=d.title!==v?d.title:k.title||"";m=(j=d.content||k.content)?"html":d.type||k.type;!m&&k.isDom&&(m=c.data("fancybox-type"),m||(m=(m=c.prop("class").match(/fancybox\.(\w+)/))?m[1]:null));q(g)&&(m||(b.isImage(g)?m="image":b.isSWF(g)?m="swf":"#"===g.charAt(0)?m="inline":q(c)&&(m="html",j=c)),"ajax"===m&&(l=g.split(/\s+/,2),g=l.shift(),l=l.shift()));j||("inline"===m?g?j=f(q(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):k.isDom&&(j=c):"html"===m?j=g:!m&&(!g&& +k.isDom)&&(m="inline",j=c));f.extend(k,{href:g,type:m,content:j,title:h,selector:l});a[e]=k}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==v&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current|| +b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer= +setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==v&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,k;c&&(k=b._getPosition(d),a&&"scroll"===a.type?(delete k.position,c.stop(!0,!0).animate(k,200)):(c.css(k),e.pos=f.extend({},e.dim,k)))},update:function(a){var d= +a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(B),B=null);b.isOpen&&!B&&(B=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),B=null)},e&&!s?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,s&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"),b.trigger("onUpdate")), +b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('
    ').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||!1,d={x:n.scrollLeft(), +y:n.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=s&&r.innerWidth?r.innerWidth:n.width(),d.h=s&&r.innerHeight?r.innerHeight:n.height());return d},unbindEvents:function(){b.wrap&&t(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");n.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(n.bind("orientationchange.fb"+(s?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c=e.which||e.keyCode,k=e.target||e.srcElement; +if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!k||!k.type&&!f(k).is("[contenteditable]")))&&f.each(d,function(d,k){if(1h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!j&&1g||0>k)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&&b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0, +{},b.helpers[d].defaults,e),c)});p.trigger(a)}},isImage:function(a){return q(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return q(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=l(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1, +mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio= +!0);"iframe"===c&&s&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(s?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,w(d.padding[a]))});b.trigger("onReady");if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href"); +"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload= +this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",s?"auto":a.iframe.scrolling).attr("src",a.href); +f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);s||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload, +e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,k,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents();e=a.content;c=a.type;k=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin, +outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("
    ").html(e).find(a.selector):t(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('
    ').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder",!1)}));break;case "image":e=a.tpl.image.replace("{href}", +g);break;case "swf":e='',h="",f.each(a.swf,function(a,b){e+='';h+=" "+a+'="'+b+'"'}),e+='"}(!t(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow");a.inner.css("overflow","yes"===k?"scroll": +"no"===k?"hidden":k);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,k=b.skin,g=b.inner,h=b.current,c=h.width,j=h.height,m=h.minWidth,u=h.minHeight,n=h.maxWidth,p=h.maxHeight,s=h.scrolling,q=h.scrollOutside? +h.scrollbarWidth:0,x=h.margin,y=l(x[1]+x[3]),r=l(x[0]+x[2]),v,z,t,C,A,F,B,D,H;e.add(k).add(g).width("auto").height("auto").removeClass("fancybox-tmp");x=l(k.outerWidth(!0)-k.width());v=l(k.outerHeight(!0)-k.height());z=y+x;t=r+v;C=E(c)?(a.w-z)*l(c)/100:c;A=E(j)?(a.h-t)*l(j)/100:j;if("iframe"===h.type){if(H=h.content,h.autoHeight&&1===H.data("ready"))try{H[0].contentWindow.document.location&&(g.width(C).height(9999),F=H.contents().find("body"),q&&F.css("overflow-x","hidden"),A=F.outerHeight(!0))}catch(G){}}else if(h.autoWidth|| +h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass("fancybox-tmp");c=l(C);j=l(A);D=C/A;m=l(E(m)?l(m,"w")-z:m);n=l(E(n)?l(n,"w")-z:n);u=l(E(u)?l(u,"h")-t:u);p=l(E(p)?l(p,"h")-t:p);F=n;B=p;h.fitToView&&(n=Math.min(a.w-z,n),p=Math.min(a.h-t,p));z=a.w-y;r=a.h-r;h.aspectRatio?(c>n&&(c=n,j=l(c/D)),j>p&&(j=p,c=l(j*D)),cz||y>r)&&(c>m&&j>u)&&!(19n&&(c=n,j=l(c/D)),g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height();else c=Math.max(m,Math.min(c,c-(a-z))),j=Math.max(u,Math.min(j,j-(y-r)));q&&("auto"===s&&jz||y>r)&&c>m&&j>u;c=h.aspectRatio?cu&&j
    ').appendTo(b.coming?b.coming.parent:a.parent);this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(n.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive? +b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){var a,b;n.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),a=n.scrollTop(),b=n.scrollLeft(),this.el.removeClass("fancybox-lock"),n.scrollTop(a).scrollLeft(b));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%");I?(b=Math.max(G.documentElement.offsetWidth,G.body.offsetWidth), +p.width()>b&&(a=p.width())):p.width()>n.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&(this.fixed&&b.fixed)&&(e||(this.margin=p.height()>n.height()?f("html").css("margin-right").replace("px",""):!1),b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){var e,c;b.locked&&(!1!==this.margin&&(f("*").filter(function(){return"fixed"=== +f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin")),e=n.scrollTop(),c=n.scrollLeft(),this.el.addClass("fancybox-lock"),n.scrollTop(e).scrollLeft(c));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d= +b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(q(e)&&""!==f.trim(e)){d=f('
    '+e+"
    ");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),I&&d.width(d.width()),d.wrapInner(''),b.current.margin[2]+=Math.abs(l(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d, +e=f(this),c=this.selector||"",k=function(g){var h=f(this).blur(),j=d,k,l;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(k=a.groupAttr||"data-fancybox-group",l=h.attr(k),l||(k="rel",l=h.get(0)[k]),l&&(""!==l&&"nofollow"!==l)&&(h=c.length?f(c):e,h=h.filter("["+k+'="'+l+'"]'),j=h.index(this)),a.index=j,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",k):p.undelegate(c,"click.fb-start").delegate(c+ +":not('.fancybox-item, .fancybox-nav')","click.fb-start",k);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===v&&(f.scrollbarWidth=function(){var a=f('
    ').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===v){a=f.support;d=f('
    ').appendTo("body");var e=20=== +d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(r).width();J.addClass("fancybox-lock-test");d=f(r).width();J.removeClass("fancybox-lock-test");f("").appendTo("head")})})(window,document,jQuery); \ No newline at end of file diff --git a/Ausgabe/common/fancybox/load_fancybox.js b/Ausgabe/common/fancybox/load_fancybox.js new file mode 100755 index 0000000..14cac82 --- /dev/null +++ b/Ausgabe/common/fancybox/load_fancybox.js @@ -0,0 +1,8 @@ + $(document).ready(function() { + /* + * Simple image gallery. Uses default settings + */ + + $('.fancybox').fancybox(); + + }); \ No newline at end of file diff --git a/Ausgabe/common/images/Mein_Logo.png b/Ausgabe/common/images/Mein_Logo.png new file mode 100755 index 0000000000000000000000000000000000000000..48ad74856ce7e44a8265cad14208adc11efcb475 GIT binary patch literal 20561 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ν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 literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/callouts/10.png b/Ausgabe/common/images/callouts/10.png new file mode 100755 index 0000000000000000000000000000000000000000..997bbc8246a316e040e0804174ba260e219d7d33 GIT binary patch literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQWtZ~+OvdJMW|Y+^UT?O-M{rKJsmzxdayJ{ zDCQA!%%@7Jj$q%-wf8e0_jRx8Dqi$}^?K=?6FriQFLv>>oc^CE+aVHhW3=nZ+fQ4!M=ZC7H>3sl|FJr3LwU zC3?yExf6FO?f@F61vV}-Juk7O6lk8Yg;}bFaZ-|HQc7Azopr01?u8M*si- literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/callouts/11.png b/Ausgabe/common/images/callouts/11.png new file mode 100755 index 0000000000000000000000000000000000000000..ce47dac3f52ac49017749a3fea53db57d006993c GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1SD^YpWXnZI14-?iy0V%N{XE z)7O>#600DeuDZ?5tOl@ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=9KoYUDZ+`aP)jU z&ny=ErrK^#Gw!AcR}pdfMERuV^@&0$@(#^6b8c@rn^6RWX3pUb z4*6@PZ+H0#u=rjsXzS?6n6*sBGbHqGTU%mCsH?n#%j;eD^2}qe=iX*J@VQ3BRpz+u z{PX#N(^9X${`$90+;!pWs>o@z_n8G)7Uo7PJz`jrS+)QE@=PWHmc~UIw=WmUe73o7 z>^bR(M752aYoNg~ozu7U7&{(U>{s!;bn#f?ItjL^o`e{*EOQHqO;ccnz9hLK5@2cAyw@AaPFL~Cp#02|E|4xeQteNtB7waMs QVCXP-y85}Sb4q9e0GRUFb^rhX literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/callouts/12.png b/Ausgabe/common/images/callouts/12.png new file mode 100755 index 0000000000000000000000000000000000000000..31daf4e2f25b6712499ee32de9c2e3b050b691ca GIT binary patch literal 617 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1SD^YpWXnZI14-?iy0V%N{XE z)7O>#600De9$%>2LVd81Yeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=Cn>wTzx1(qV@bS z0hYvspf(--lM>otrqbK$7p{3DzJ|+KN8%5ows)AI?zWk_n>jwEHXrTJecpEW_0xL= z?}N`*R`T~d2{AN${y8T#GEn4hUb&52^}Op@TW4{oc)A6)%$5=G}h# z?O{QLj@aRcAIf&y&OiUN=H2gq=_}V|pWfuReDV|{jwXw~>#w)I|9${XE z)7O>#600Dep5bGK9wD%hYeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=Cn>w>~AWNX^a2R zbkveVY|45D7UnZ&JtjPwvdCCscZp0EA*0()#GOw)UH4-^&)y^E*4%UC)*|J}q_Ss;tN`nd8$>x9$_Xb^O2EpX&@C ZI46EzbLxq-voTO7gQu&X%Q~loCIF_C`w;*D literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/callouts/14.png b/Ausgabe/common/images/callouts/14.png new file mode 100755 index 0000000000000000000000000000000000000000..64014b75fe2e84d45ed861974c72462727979360 GIT binary patch literal 411 zcmV;M0c8G(P)!ax*-PXaQ9e~6^e1gu=a6a&KSz}bR`+prYG9ayB$BDjWGfIE;t#wl!+ zR3S(jA%y#i_@eOOedXoc%RQe%L;wH~k+s%ZI~)!<=dD%?4MaplaU9QPGski2q3`>r z(}{j@0a$CLl+)={2vLWml*i-oa5#J}DW$gCZB~Z!(!M#)2St|1_V^0qpmCrBof=Y&NUas@LmfSw=)4B4f;8Fu)(eFsv24 zJzXxBrayquXcR?J{XE z)7O>#600De0j~t#c`vY#Yeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=9Eq_Jl&Ka(%QdX zh{H8O%#_7)Tc@t$mM`p4(Ne7omR*~(>gd8_8AZH{=3ms$Fmzm^yL@_+(#aQQ5>7QW z>3g2fIsH(ugM)!V$x4Rr_+!J_XU%4xbz0aE;^N{m@42Z|@0S@TQ=WbP`TMV5Ok;<| z^Ihv+@6tQ{sciRF9dD7Nr=KobwJJ68zJK$<1Pd9rz%4O)*;}Jzj&~nTGMecz>B%lV zK|`fmIc8mp-h8iSXiGFW=C(L+XH4DRxZQX87^-dLuD>odo6YLT@Sw)dfBEIG)v2@6 zR)%mL7GRj1x-&v&+2q@A%a&h0`Lw7|#(w_!tgT!PoJ|+re`lxaY7e*=hH)_rZeB4|imU1$R#1`!P>&$poQl;nzm}mD5ZFopaX|GsS%q*{P~< z;WtmO%lhToBL0i}yfkaOt?EN=nkLNGuU`ywhI5H)L`iUdT1k0gQ7VIjhO(w-Zen_> zZ(@38a<+nro{^q~f~BRtfrY+-p+a&|W^qZSLvCepNoKNMYO!8QX+eHoiC%Jk?!;Y+ zJAlS%fsM;d&r2*R1)67JkeZlkYGj#gX_9E3W@4U_nw*@Ln38B@k(iuhnUeN2eF0kK0(Y1u|9Rc(19XFPiEBhjaDG}zd16s2gM)^$re|(qda7?? zdS-IAf{C7yo`r&?rM`iMzJZ}aa#3b+Nu@(>WpPPnvR-PjUP@^}eqM=Qa(?c_U5Yz^ z#%Y0#%S_KpEGY$=XJL?(l#*ybuErX#^g`ttQfwn3r>K)tuC)r#2`iJ>Prt42#Ndx#Uc~1)>aw z3jE@Q4|!9Z%lVv}- zc=48cF7H)t`(Ck`^+mtha~Np7bBSw2NpOBzNqJ&XDuaWDvZiNlVtT4?VtQtBwt|VC zk)DNurKP@sg}#BILUK`NaY>~^Ze?*vX0l#tv0h4PL4IC|UUGi!#9fLzfW~Qojmu2W zODrh`nrE42VU(7fm~5G9U~HM3l#*m_WNcxOXkuzEX4g z+-vfUhb0A>b04=Im{6XiQd1v%r%>h0$G8U7E1If8OQ!N~xOYY5h0NDT$p9(iZ?Q&e z18-(+l~J8O`)kc}e&uL$eW&>P-#`~Qm$*ih1m~xflqVLYGB{``YkKA;rl!p+yCFkc(+@-h!Xq*<< zxXkpt#FA2=d1VEBsYynrsitN|Y01eJ$;p;U#>wWX2KP5v&I9V=1L+C? fTFYQ)RAFeOZJ=$?lDoSWD8u0C>gTe~DWM4f^}upZ literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/callouts/6.png b/Ausgabe/common/images/callouts/6.png new file mode 100755 index 0000000000000000000000000000000000000000..0ba694af6c07d947d219b45a629bd32c60a0f5fe GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQ*)Bra@SU# zmiz#bR~{$s2si{S(aY|Z}Vd7tb ouUmn-_&~Y>fYve?8dVq?X&Y!8wB+ut1u%w%U~xZhnMEEs6JbBSw2NpOBzNqJ&XDuaWDvZiNlVtT4?VtQtBwt|VC zk)DNurKP@sg}#BILUK`NaY>~^Ze?*vX0l#tv0h4PL4IC|UUGi!#9fLzfW~Qojmu2W zODrh`nrCEbVQgk$XkwI@Y+{_8nv`N>YGIaQkz#0QY@Te9lBQ<)awbq0A4pdK&{_sV bqY6VKZ3AtCmfYR7Kp6&4S3j3^P6u&S`V$cAh@R~F=4@V4jxkzlaQrcFYWK{)(`o5XZnut z=nE4SU2g1ZW%;@@I$>_e3F8a=8WK~|CVXt1DqisQxtIX|`YW_n&?Nh#1gQ}d)$LrYTw(_{nVG)tp2V+#}WG*e^KRLdkoLz7g? qn(IA84Qgo42`r6v<+Hvch>@C7(8A5T-G@yGywn*$#_oy literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/callouts/9.png b/Ausgabe/common/images/callouts/9.png new file mode 100755 index 0000000000000000000000000000000000000000..a0676d26cc2ff1de12c4ecdeefb44a0d71bc6bde GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQNRqa;^5&H%t0&v*|C|wdb9$wI zR@+N9#RIowg@Uqn&z-__Tzhhz!sG|vTxA7?=O|Y?u(d4T{!RM9c7chr6d%1?R=i16 z?@Ic{f32YJFJnVhX)qGzOMplv!L->5yAlT#}irms+fsQd*FoSE84k zpF44v;trs3T43Wc)AJHbN`dAXo0u6Hr<$gkq?lM38ycjV7+5A5Sr{ayr5c%-n;95g pF*H#D>f!_G3IJNmU}#ifXryhRZP1dtyA~+J;OXk;vd$@?2>@J{cB%jX literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/callouts/ChangeLog b/Ausgabe/common/images/callouts/ChangeLog new file mode 100755 index 0000000..3bfd951 --- /dev/null +++ b/Ausgabe/common/images/callouts/ChangeLog @@ -0,0 +1,15 @@ +2002-05-17 Norman Walsh + + * 11.gif, 11.png, 12.gif, 12.png, 13.gif, 13.png, 14.gif, 14.png, 15.gif, 15.png: + New file. + +2002-01-28 Norman Walsh + + * 1.gif, 10.gif, 2.gif, 3.gif, 4.gif, 5.gif, 6.gif, 7.gif, 8.gif, 9.gif: + New file. + +2001-04-02 Norman Walsh + + * 1.png, 10.png, 2.png, 3.png, 4.png, 5.png, 6.png, 7.png, 8.png, 9.png: + New file. + diff --git a/Ausgabe/common/images/caution.png b/Ausgabe/common/images/caution.png new file mode 100755 index 0000000000000000000000000000000000000000..5b7809ca4a9c8d778087522e5ce04b6e90099595 GIT binary patch literal 1250 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbQ|Pftew|C&U%V<=|it5MYpyU{F+K zFf?Rva$<;zVn|MA$j)XcE@r5%W@u>vqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/changelog b/Ausgabe/common/images/changelog new file mode 100755 index 0000000..07c29d3 --- /dev/null +++ b/Ausgabe/common/images/changelog @@ -0,0 +1,17 @@ +2002-02-11 Norman Walsh + + * draft.png: Updated draft image + +2002-01-29 Norman Walsh + + * blank.png, draft.png: New file. + +2001-11-06 Robert Stayton + + * home.gif, next.gif, prev.gif, up.gif: New file. + +2001-04-02 Norman Walsh + + * caution.gif, caution.png, caution.tif, home.png, important.gif, important.png, important.tif, next.png, note.gif, note.png, note.tif, prev.png, tip.gif, tip.png, tip.tif, toc-blank.png, toc-minus.png, toc-plus.png, up.png, warning.gif, warning.png, warning.tif: + New file. + diff --git a/Ausgabe/common/images/draft.png b/Ausgabe/common/images/draft.png new file mode 100755 index 0000000000000000000000000000000000000000..0084708c9b8287c51efa6b40b8d492854191455e GIT binary patch literal 17454 zcmXwh2{_c>_y1e^C}m43S&}RzTQstU#!g0*n6YJ1aTS}>RLe1z8LVo z`rtm$Vp5JW1|R$HTrs@@LGR)Z?>PPkL8l=j-77Z&G8Tsi{RV4sPaGi)BBI`)`R~Q` z*=O$N8oBahuA1ujq=ONsH^Z$;Z@?A2zPOR;+t7%GvNscPQvtyu^ z^(He{(TNfAz{D>S76#pNt`V=aFm{t&tF)Lut!iq>3RU|!!{xbB|2@69Az7({KpgFX zBHUL)|7ydZKc0k%azcGA&PuCQV*kD$bT{P;b?=`M@6C_|b6!~s9j#tuU~e9n-MCHj zfV5S(js_`kv|ivaLE*6pY!G%r11u^qOVBw|g29`m16#D?@yi>zc0bwz%G@ za2kvxn$XS7{2WQ_ju!==VTs+`V&L;sVz(Pl4+J?F&ZZv3KoKW2c?bBtGq5)oRM?*)usx_-H@47Cu#_qL+2eow%ZDy0=bsNsUP&ms8wSUp@nG86W_bQDmNMRgINC`_}NgC zCcqF_Ta|ScVvPu;|0KG{NIio~DaGYcHYq4AEiIzkxEPqs@0$Z$*)*@J$yP3ObX$%T zzRS=t%7(g3t{Q*^ zEyTxT$*5+N*(plL90Bl6`Nb^WdKn_Pvpb{prO$Iu<5}~-EnXK7fy@_2c89d+ZhJ|)%qTOcbj#K2|l1B!3n*4em>_| zs0+)H9*C!kU%yVP5l({XnQMeRu}L5Sj@SNhX<@4AzfhMZW{P&$t(3w4cF;s3a!PkRM$$6I_u>8qK3>fr(_ zv-Y*v{SjgTfq|+BcyYvbM!vF^@bCsN)N`rpJ$><_Gs5*qVfQ0@761Os;NFEBr2V@4l75H}1u*H-x1FzIyrv zX4-neRxZt~y^&-x>*hYlIJHqt-rL&^c9<9eB-5QN-kNin&S^e!8s9rIjX$~r#FHSZ zPPGHSJ7NH?>J1WXHMp6{3_m_JHFb(pJM-&G@!UzwMZ19kYDMv8^_@35=1Qp*GU^C$ znS!nuvPQ5{W^@`l=K{0vn9d5B4sd@GNsqwYt13N;s_n$M5sF(Y{Gu{$f)Pqq6>`4( zoK6ZojptUz?t{2OQ@f4d24!GwYi6y465k8gmK^#vxd{Il-lBt^R7pE@jfteJwgkQ(YBxT%22tXdci&(7P>~Iov zlAF+-uyinD*mU_C1!Z!%vFE`wQx$H0WX*IMeKiv()c!!|Br&A#iWksE5wy*|X}DYF zOkmbb)NtBhwAgAQQ)W7>BzBj)^ec8BETv8dt~1Wtd}pfRmKnoYyMymV`fvW*bjTy@ zNFqchp{S-_%)XBfUmWyYYl$xVgQtxEVn358@gKtpQuu~+-Kl-33E21oa-Fi&oBI&`1N%T=`T3uD7xjR z1Q5DaVd-rOkkqXdK@Yti1APh3TN{S1DknOaE4Vdk=o-MQ!`zf#3^vm0RTp!s>(8+I z(BKlybb>#^&dE#xTWKkB5>RG$`5m60nzI~B_{R+DtsN)(K1(tUpuVHL0)mIKnUfCR zGE=xGXN@3g`N9QSG|T0c&wxuu*Qg<*+`PlfSfJAKfkWnRsVJ$bx1$Z`o)r~6%k4&i z<9I5}9(ypb2w!#-r7*;K+DjakI~Af;0mNtDxBc4R3|&8W^=h6KIf?>|@$@)*tlfRZ zrCkhM8ZMxnVd%Q>wKHQ6h;cwwxcI6738osp@h30JoAC1Si}3tS%4m{iuKSkF9xsrA%;wLv z8A#j|uifcVGx>ptY|-u;nJ$&yw-19u5smA=3C-sC-n~XzIV= z*~{{V0<$*x$DP?_zs?b?-Dsw+U(_(rI4}YY;n`g??R&MWiSNSHJ{;g>QuE+91GpRE zd9DfqUKVfdeAUwO7il>!iH(N~Y+WTTbX3b$$01o$aei(SD8PN9Ig|tehF6`&rMrwH z6C(}UhO7r4V(nXd&uyraV5X$iUUKSF7E#U?bu;$RHwXn03D2wdZR{}kbxlVH%&8F=8tR+X zZ7kKlMpt29EK0Mnb~Bm{1y*D227__FT~$T7>%Bs>RxQrlgI55^$os$sc`ic?+hwHQ zy%C%qRZZ?xjTT>R%HJvzYPmTbNJa&lc4N}*?d^eJ+TgWWrby|-X?$RL63$ocD0=1z zq>bD(K@l*w5V0aAqv-^DtQq(*B!;KK;S)?XERW0Z8_eB7>{FG!W0Tmu$$a@l#~e@t zb7eAjZ0Z_IN~+HjldvP|xLYiL+|mn)Q;HmqDMG^&^)mW(%Xyb~AG4Jkd@~F091U{i zRg(Zi(!S357h;^+d50bWLHO{(l58O+_d192vyD-Oh|kx|qkk|71w!Jdg*R ze=X`e#>jQ1n83%L37gJmxi{uYC;jRU__qGnk430EXC8CcRU^h&pyhVlHM8x(ce}=L+^|Pv zi|35MNQw6wsl4bw0P{NiUo&-{is+V{iXV*G{_L^ONZ@`H!#JZ@}t;bpd`Z>sx8;y zHg4#YSJ*anpi2Do=jWPejhaoGWKx!&jJeOVaku|#u8?8fCKc>EQ4j zn#0h@X_`cW22kHot+mSQz%;tAI|=i92)Mglsf!Nu*>=_g&(G0d>km#k&)3TllY#^u z02UV-NFuEUi@}-x=ETTTKA`X~EX5jv8~B<}HTK+*9&OvU2dkm`_BX*1VwV7Ij{pg= zxZNaUqPlcVYHAyHFof?m;I-ZD4bN%(@@2Td(VgI3 z{*lWmv$RZ|smov=_kGDznn+>_uX{A6;y}7pk@d`(Lh6{gFvrA5pAdMmu#G*QM1tQg z2^Fb6c;#}e`;nd&oQKh@*-zW!9ICOL;OFgA2-lpdOKmA=Bp;B_eB?c_df>veT)HW_ zs^sQQf+2B6j;5$>ZG`htEUcU*ioNkd+t(slRq00x_hk@N@P79aTAmlqe^(+dfnlOAm^WQavYofR?D70kyE!Q*mr z=MN`!PH<&(t6*5^bfSkgq80c+f6zkhX=!PVf1h^9o$GPX_wJAXim3%oV$)U9uWEOS zFZ=#iF~Q2FVvon!cVc(IvVedI_~ko1I5_AWe$&m4Pfz2dCm|J!YrHng`j<_W)9N6m zB@dJSV}^c#gL?<*=59v;JS=y@jX-JNZOq4)l)5={d`D-W!H@43<=pJ8Cgd+PhIgZ0 z&1}v2D7JC5c5m#$OqX|BP;TfUn_N`fm(NOG0@Nct5f0=5t?)gK>f*TZCP8 zE~vAz*f8;aNltIEzGmjk2?*gK)Xp4zr=6}59u!nRQiIH`r`BWA&&b%MJ+5|@JL))( z@lrFw!p1WBNbZB0IBSb692ygY3^VVnsCLI=p1DJ|9{R_viTo;ObrMJc9HN|9uopn6 zRxJ;a=NLyqW+8?@vXq*8_pkle?wWh-VSoPI3KIY*(nFq-Do;;Op#DRi6cuGIH zS7vFz0{w!T_jHtX9_!if-#4x3C9rYkU+2(KU|U3m|Bg{GCEc)G`)=}$uCcQ=o5}DE z4Qf|tZ$U3T&S;B0h&i3`PkyvL2&sK4L#)80)82naNsAnG!T4hTE7tIKfou;^sdejO z2^s6dG*bi~@XEf#g^+->YY)^i=j)rM{NpB6Os``bQrQDn`1IcCuH_tZo5u_RDCH9} z{A(qdv9-0;w%911g+6sdttId7K8LSzQx$iqDz9QJ%qEV5yOmP%C1^8VJ~&}mU03FL z5oO`+?_NbVx$89Jw_-65lS!LLL^<~>akOrQ*k8YT2f4npv!ne5LrBe1G zio4QV3V(pOPhsqCE2}mF#DXWKYCS~L->zo*5E`io01;dT5!%$~no!XU5w!2{HcD?P z$hkcJN$uNC-y%aa0(KSOy?hfCDA$n{jchN?d(tgsICQ1t%qbWQv5cv{T zBj3*W2{Wy5d$(v$@2djHMZWKG0-|MBp}dhVgo z`Vtvp{;P+IYGFXmo{Vm!Z+%cSOfN(pk`H&G(lF_arZgk!S9%x!bxKv`i?_8}mLXr- zfr-&54|LC~#MV?wRQm-EFSRGh4UA`d#pe!1bE-N?4{$Ro_JUO#b#A&ZN*AR84Q}u< zvAY2P2=^9%#QQFnV=U#iNT(o73@pmXuFN9 zR?J5~@ZQvv3RK1HlYa(JZ^_%8l~?wwv#lhDjuMeJDC(xS8@gFpX*CRJe8FTVfJFLE z`L1aE-QBK9wh8Lf=pv(3olJVvrY$Ug*U6Z?{29OF(VGVhgGPXNls7&Qa&U0KV+QnI zZN%rly6U%&wr&4qxD-ujjGO;@!kTH7t&RXS%qN%jTu85~jgj|mC`qh(pxU=LV<8nb z2*g-&X|S0`7pDK6F8O&>ow7=M28`!FRi!}mwg<&m&wRfJeJ}DJr|iWg3+r~FUb+VH z+^&Un8v5io|7I+;!f+OL&4~5g{fgrz&*uKPkBlbI#PEevl|9*Y;=ZITUOO{Xx3C?Q zjzzGgf??gQ$0$6k$=bjrn_FR?Ye1m&Alpp zIR2qAum=_rBrlX|_n?Z@`qf(Z0Kxll;~uBw&`7z9Rouxf&+){$ zT5l^SU3Q)C3!P4v<8`92?@GD3FQ>)aS@lWl&S_BItaudFE*~l)`|-f4TB#FImiY-_6&9CJ9!>+TEFxeaHO)c zvYblCdx~?kBnWI3y61_CZ7mPPn2!+y?I{+aqiJZV?FagXcV{P$qIQQ}eE8YeF~}-C z?~`EwR@Cieg6$PyJheqdg_twn9zXuoot>29+0UEtNnjKl>TgTSUIvF?r06FMW=5%U zVd7m{^kQJvRLT(~FbI!5QPR|t;QS06HwuN4s*dj5LYaTRDxc}ZbrgWm^`&@BlD%v{ z@k_@S)~9!76hB8Mu>D387Pt4nO+z=`W~vOK4w3_J5I>vM30q#&d2?0jd#W0;VqxAg z{*lOi191%V8^8z#kba|g@ zf4GgGK?gk~`S@>iRci6!kr&;RW(POG$iTAEX&_W3#)}zCBeQ12R}+C0SYWFB65117 zYx=X?gFD^+O{W+m*yAfTKmH~iyJk_ORwrFE`7|!~oOPP-{gCa4!U@A4tRgdFHX_Yj zXQ(+MhO_<^GRY)^`TEi#V?93xP#4UrcMTTD68zJ5m{DboqT=!RTMbx!3!QK?HvU2k za26tqP;3Z8*MmUwL{1I(@xTcd(1T(ot# zQ8@|QB&oA%VI6gn^=!_v)SeO)d`3{ewC>T3XM2ZqXV?iJKc$ft~<<46c!aV(J1mq1tLFMB0Q_){R1qliEw)EIh?S*NbRo*>YaPx z2D-q!@M}X!8+eqQe9(&`vcyr9*&Oc9DxIi1?hcoq6i$Ah{XCaH^2(3TA1)Kpu+!qk zA@V)hERaLu1FN%*CTT?U)U3}+-q2_=P0!NO%*+f=0%Wimi9$O7C`K!{L9kB*slT?q zUcI7*#C3?0;`R1E9%YCjZ^&A%sl;VB6)!NN8!ilSF2s{jaYk8%7*iwJVYB!}O?`NH z3i_o?`Ay@F!YSHq7T_a4Hx}qC1`Ys?_byXR)+^(UW^H6<{Jzm;NPkU97r0{^fT(G3 zA;><1llKwo;%)@{#|9*KE2Dmt;(B|5Xn)(d7V2nr5OXUnA1y_!SW`EtahHzmtl7EE z%djW%*H&HXZ5G=Zciw~l@@5<9~SRg`>1sdv54 zxFT-jCM&GG@`Q{Ed)0jXg#Q(;FzY%A{D;AwhdaxE884#bo;|{{h3OhPo0zbfk;Dak z&K2NDkc8^wVPB=SuB`+^8?cY^RCi~h^*4EmEc?J58r@|g3@t=ykaw*U{ z7v;3}@P2CDd|+0TV}fa|3wl21cs|OFu95chX_S0!)zbD}eUfC(!|&!sVnQ$17U~i3 z0k=jQ+>~NKF!oc>Kff(i>j!z@pZJbZ5Qp)A$c?DsJ8AAv!O6p8|34Q%YV*_nJIhup zmQ_{jUUf_x$nzc!4cNy^2`mY?*);JNgVn<>CsVJYluh4fgd_lF1||t597+ld|`Ww&*4Hb;}rzPmefkY`>P)eSO9!dk2T9lx>3Nj5=Mz z>r&3-+b)2!U(?WAgFX*rf@W9Zs)AS~lgtt0D77}&rQM~)i0CR!i>JVNn(;mN6vgZBRDJTdsnC?L>2H3nvZSp}#S z6*9#|of{57Sm7ktIRid*9b3ZPg&%fX92~R}5M69&e`W5`q8wIvKfBufD8f~ti%ujG zOKrw=EiJwBQ@H^*Kw5USk7cR`7;^B0t+_@D3FT&XdE}c8tK%QmNSn;A8RAsMn%(|0 z_}jjAHPj3;YFouX*X_FojE7Cjxz=b5i*s)&Yd&bUzA+NKT|Zgbdbmf54f|QjdK38q zi<5!1eI+@#xyQUC|DfNCc{vl9E=gF^==yjQil0#7c-)K`hM1O%+v4rCu<4wKEeA0> zEp7n)lZbgQlME&N{V?)eCoEp(d6K!Ss;kAyp#QBJcej|g)B$R7KOOkifc9VnF zpKF%Ab3TXaX3pJr!NN3W-J#nLcKyGkvKH+HgbCYH}OT?)qCnEf9AXZkAVH3MBfRj~6fiIx9-31EklLu#&A>uM1w2k;x{p z6SI?Q5Rg<8S^)#s7ktzJn2#%93?7_*{LTCC-tM45qH{l**RpP#OJ?_o|&r9_@2w=JQ0!~pTA3FNiUVF zjRt1OxG5gVaVzD&sIKBRWsLqX)%Dkp^<7D*ZZlOm3zvdK^caRuw0>+%#d)V}r&k&S9MyDr!%#@BU!SxwyIS8y<#pz4TMM)V&d^NaNs%w$r@xK#Z3m-2Z*B z!#C;VD$dR|<3`KMGMYA6xX-+QD(`rW%C9UZWiLh9%$D1dG#BLbF0BPZF6E_5rP3E_PtxKxwhc&v~_AC^KGDil_tZ4XGnVb_$U_s<> zm8kOFv>8SO#Z#<$=3;#hN0AoE1Eo}p(7cFS7Qu%^IP-@56DRm6;s!W0R~nyzVbeB3 zPAN{zeWb;hUGr&tp1Tb%L(Z#nGF@88afdvP=TZ9_k=he-T;vK+PJ?P6ZmqD(qF2)s za2N9|Lc_5Nh35`gW$V?KI?Em}*YAvfg$3DWNG(QvSZl?m(ctUi;Jj>c8s=iGQ_8IM5DCuHH6)h}yp2H=v=D>3DC$o5 zULiAntcT_b0+|=uYSp|RU-2AMnA6H6X~WBacfvSg6(!cva9ZpD*PX&B$NOGVW7m4Z zwa-Ri?VbD4_e>?M_?{Gp5;i_LZoeQ02^su&$#yDX?_v;bcFNw!ZP<6Xv&q9brr24? z|MPgFAc|V;-ru*smLhtJwEd+tn+gNbYoIlb_Kua^3mizF_sOpaD<1}%2z%fRbie!kaalVI{ zp@PyqhIH`4Lsqp;dXPhYq~D8f_H6FmSVw-c0o;ya;C8Y>viOHkmc!hn^U?c42ZCH^ zPvXs&ZghbhD2ne4J#b17FiS1I9RZ}k{S#@9{3>3owZjjy1{zN14ROf_w3vGo{JOw_ z5LgnbR;Hy3#ZJxN6{=$yTGHlT+Ef*p(!2*(M=pwq@gO`fH0Dr=&t+`4T`zSS&3H_CR^wcr&oGobo(9^R&aR88N zpw8q{)!yFVT7gxPn;IJlWjTZ@;6^gu0o~Co*Y0Z@emdc=ZP)|VUtU{c#1q@-m_(_F zc1`xg?iSXAbKiaJX8bOLsLi6+@?>^2T?51nOC5Th3E$~E6NxFrub(x#dXlO?;HtC3wTw{sEq|t|$syXv8Tfi8aLLm->hWZycx7?T zJAi@9^p4)TX$*q+{W7YJe2KLA=_$$-H9nhPJihFrO_S8hL+vnyy}LF)%0Bq3`+#x! z9*bF7ccIkdCZ@bjMt&SE&fg93dDU%csbne!aFMjR)C1<>dSOfAuTm{~rfOo&wrBMJ zi&P9Lc>oaIV)w+sO?^X8sjG-$-RvZfqbMm$3ez1Ue{7OHR`>b6Zq=_PrYSjFxJ0op{4-*e>HCa+ltbeRL&8rk zOpJhZ9$>74+^4>aDY$y1{+F~p?}C)d=kkO*yn}m+Ajw3dOKVp@e;LX1bbqRk?i+lw z|D*uJfF@Z)tVkhWM8?V&E# zyTmdhV1UEb^kae@-je}deN9LG-8T#3h1#ojCe(gby>*zW``~(Lb6U7b%MwpdqEq(K zEAS{$i7H)RbG~^`>SjFQj+Y?^Ft_1`?au+^$%R3VO1zaZ&?NS4Ry^!zZ^1c#NF#h@ z0TD8T#jmQSaL?JG8@5uub}qy}n+?f&XZkDn47o*x8=R+CS@9|@+5Sc{deuI{#-k@8 zGwVmk8dyt-NdoEExb}uMJCH}0UCrJi0uMR>5}ISY3=oBH&_hoY1^&b)i~yE}u?si% z-PVt&T)q;ZjLX0sQ_TA3bY0+hmGSl}+yLQsMKtH(tvC4_;^TC@vXLuNNTcgL$DnOmGiLhtBsMO^AN`&cRypL?h%J zBiGYxSf4}dsU(n)My$~2GQ(fLVZL#U{ho7-j1j?+)IK2=G zzXCkvL!y~{frb8dl#NEpiJ)7iad@m8(PH3p4?x|-%d5zWr95 z{rZdqX#)sbTEuODXWBnoDA=^8YbJDSV-L>lfASXZ8D5y&t!Z16)p2XHLUQ||$XzhY z(ZNTOhU=WEWxG?AOmpj8K~s1|a(9*t@!RB$%7U*=_M=t5`sWAFyuz~O>Pcjl@Xup- zgO1W}S3KEY&FGc`(1n6n{`G2ikZF>bki9HXRA3j<&l!tlbJ90F>rt$!$g75+5bn&= zjyM80QWmZjI!*;6oH#S|oUcV47FQsDUj%8+H$#7kjT51X^Jtx)%R6|}%#Dzl{ml^0 zsv`Nn-|Bz+48SiLI79mr$g&j&34dbw@n{EdZCF)Q;Eel#;Nmcdr^kRV94rNTeQ>Vz znJP$)fOxR055Bx)K9o5)r}JEv*;cD>C^DQx@@g87^oPS)Thwn;1zXm|@zi=;a?}5h8y* z6>(bt{|;@&f#h3nUIC~HE_8P)0gPfgF)Iz@RlCu`TI%(q~$n4sNz_?{|9BnSz}B&7{#_ zK1qBPIgO|{V&NqKX{rq+Kghb{e3jx$f^oK<{_owdP6x{tVp%vtu+-oKp~{XTyKKwM zX$Z`c@2!q%PLTgNKUeKOH3e?Z#(AjRAjfx2O^o-wLC-f~kXBCsjG2SB4k!3w&_%ssqiht1fi`gwthS zZRJxsc=Hc02T0kCbeye6=v`L}H=CcUFBS95I`opHXTIPR!vcLUKAVpo{skf;5|%cj zKZYwozQ@0;jmm7Ewzi zo<*oL>r^0lz>yz>?Cy#9!RQ(wwu(u2d3jTu6aCREon8S6b$ev_gGij5MEh0OwVHeY z3JMHR>*HK->0zGG9~TkshQO@B>eP?{hJE$f;3N>uRLhJ}P~ZraSC!2Z-m?eb14#V` z%Wf}!yyU^lkZyZXi204#!G+O?Q@ceB{!4N<(Xh3BuOxshEnNU26-F#`#RIs>N}(pBW@Si2rp;jR0tbkkeB?zr zS^vJtRoNXb>y}tW?zt}O@HIPqMztv8X1Mb1o1(k)Qcp6Pr6uU+Wr|!Hv7+$?#M_2O z8ozNt-UfLk4P2gUH6A!~G!t9m9h^|<)O4k5$cNw60eE=UoqqjQ71i%yE>IF5MMw53 zoVZpnlyb}7VoR-eL}JL|uKeGZGj%Bhl-tR>S%pT0QE3%}REJ4vlQXBz;^otxhg?Ch z8XD=ERaU!$Uo=nzVP$E_ymK_%iP6+MG{s;{Y7rF$-fQvmr}-!7R+5kFfp=OE?phks zAIRMnzl_f-n|fdFUx?=;*-?y8#j=PGKPpOOOfX}Ic6w;#a)+T)JYU|+Xv2w$zY|)U zEeeU^HM+hO--oSU>4i-+iF%MO_+IX?wo`R@!WLpS_grU1%73579~%ph(hCzw#gqKS z33(@oiGv3~@~gXqf5#i|_#YMm|B*Feu_oGLserI4H_P&w_AZb(3Isb~x3Ld2CgpT^#omehU$@8! zZ37~|Sa6Xc;y@q!+6z@#hh!4ucXrj8>Qxso@J<)u1I)@I5I^A46Xis^4@P!i0{?O+ zk)CZ~poU|sFD2L)#iE|&ssJ3xPipy!K=bolV9l|2Z(i}*43Z1Wl>m~3P4rKR z;{jYf=VLJmi^x2<{AMKuKw`P)#B;8nQBOIhHy->XNo^z$xthq*cY@X>W!5<4<@4FX zNAk9jj2q$VscrAdjGHmRtbN?guU-Ze<)BHW%*jo5k{5v?@U7yU_yhoD$uz_q-~545jZuxv;JUQ*eFqk?xfP@lh~jP(N?2I0NIZ-q zDGD#GS$Z5%#81&o5Ufv=)9xJ28~UMS`u^V4={bp#DxfwlU7@e?)*KGps|+y(T@tnr z9A#fLvb5wqpXG&eyWHhX@kN1}iO>(98#j(F*qUrT%3$LWY&VnO9gyxolrhty?u8%M zar#N)92>LMOfsB>_D%XweB1a5z8o_t7nV53zGhsGH=Ml{GE->_3^aZ?i1k+KH{Bi* zY{{urjeCUUx{4awMMqbyudOM4lcFe}f0kQxel&TCX;q8#ItaBSss?l>cfYcppL667 zS>TiWKH{ZWLw~L%seSo-t#ZVhl2DGsZb6V3qms|C<$Uq?0!WD znTe>ujm8kZr!xr(ULadh!(KEI*eP2e8ztmktEMSwD&hN43ddd7xbRW-tc40~ z19$nWlggKs>s;Od2Iq;+HaSzqE~nHmhvFSvxIn|naZo8v~4WofUl z>!4oJlcv$-(Hu&G#ZJ_w5Z)n~Rwk6YVkfc4?7^k&H4vyEOMEwEPa;GC(@sG9UK0l< zym3g}=fXdvShWk}JWOfm_hXjhW6NC8L44=y9MCIOFwlD^9541durm zIjxI`e%J5;RSEZ-PK64!Z$8JYxg)OYus$7X)=3YXtpuw8`FEZoHX-T27L3^3mCkP{ z&5K05BG=29L~TDoxs)Ze8YnCtB6r6s5%IM>J{E>lKnexjk zF8wpQnq>*y(C;*VyBSQLL0w@L?tQ?-PuO>uDOcCX?6xMc;$ZyH<_&W`uj1gXTP$N^ zG4Xa31VfrYj;M^;f(-Tw`<_7wa3DmU;dQiQf z7NxutM)uz=k#Ko!M0*iv^qY@@ibmclp2|7Ykd5wdL5{;9N3m~n4g=tUwe;P zI25w!A{9r;$eMW>q{hpo19Bk1pe=P>6r$o%=>7_cjN&Tm5M|IJuUvH+AK${CJX4oU zgO6^=eBKAuGz|tm+nSrK8|c$@b06AJVIe41Kb6p*)`8SjV>XRLlD=n zxmF_SZPNO?HOkAGmreqZP`zhDat0zvL6TUJs#jj+mv!eE2D(4H^wQ8v?J{{F_uNf{ z3Guwlmr_Y+?1xwv+DlCV!Qxf3`85lI9<3MYLPv#eKnDUu^wHQ zc>gm5549XSAWHZ;ccVn65dF5Y_!SFO%Z|}Q(6SZUI=Dtc;z5Ty%nrLYb#L*-Yh(x- zSIj@A+IWZB(0~zQg=&PNK%${P5hZ>29oZHuVGWHXY$x1YFsQbXHgN={wk@*qqJ+Nq zd)egXY~a_ZOiJe;TU+HKlsyJTMfblt8%od5*(H)*Q$D;z+^%AQ4mXPuX2k}%-4;79 zmQ1FAba2Ra`Bcxdj1l&?kFD%K^S3JRgKXK4^qjwecz_P2uJ-l zC)Qvqm+~M!v43_gwKDlR1nJf$++0o6yE@XCdZL3q)UgB#ypJ#vJ8S*1wxK1+=6B}+ zXR*cqf>giPZZtBQvI{Zak5z&s<%W6@C}Kc7|Jd$GBC>hYST1Qs6_hTGb>DuR924B0 zN83(4+CxS$>H&|*-r;Fo4NfL83)iN!YZ&TeJH98$Hv6Ebv4bJ|{_ja0c;iH3BS>3^ zpqgshmx8R31o2gdvH`OqjyW=UU6imxAx*C0^Zy99KL{oAvkpUJI(*CnkaZUKS|miv7yJG9ATWhm{X zmhwPou-YzMm|1!Q!U)jjx%z~gla=8UD)w?G&Zaq~DL{YDwlSN`Dnf>gnqOEH6`e=5 zK`qGvB4v}6phVXVBt;`Goq9`6$1(ekF#8@rQR!O?lVvgou3PA{Mrgg$a_qp=fEaM+ zd)RS3^IyJ;lNL~f*%#*d`QhDdtk^TrNIS|sGACrecpC80;-?Fs23-ZoFWU}~?O7@t zRJMKubhf|4AK65+^Yw8fyef3O1aA8v$s3mu7PHe^U+V4qu@K`r&lUl#^MSr$PX__o zkc4H6xZrmj{B9ymd8uZ1l@104i9rzScjn&(C@ri42@jd|ET?03nMCrOz62_&EiK<& zSBCb#CxX4Kax$9yU;Qik2A;XS4l0o}3esA}H7YGS`LFZ+Cp-+Ao3iV`;Y2#t+RBw4 zx0Nc0Q9y%mXU8X3P%JXaJSA=%)~{Chg+d_{`+@cih8jx$RRzetz1P5XI7rt8+K9*g zkSIZ8rn1WK#9AdD3qWOXE$*F3Ot={(vVp^%iu~vZN~NYgy8_O?l!!1aW}T^|BNP&6 z0?qjrcZN zmjmPbA_FH7lrCAL1d^70)DpX)@;aCfO87MXaxB1q=%jAw{{D`eJ!d-BNT7BMlMWP}{ZZ&o`DY!}ep;HhTV*iZR2Rod;vAPt=MM&iugW*ReqJUt5Qt_q8>ioMMBX>R9!hDFUD-8$eYs z1-TtSGqXUHgLC2i8u*t{Y|w|+jMebIyJ4s^A?cD}pz_yAd)%*nkt{$;7Zl-taBgGY z3@mR5iYU7aF`|s8$6+Otgv24;=D;){kh=%;5zgNp{HcTraHisq6ZRfb zGW_De>QlN^)>%P;wg-4IfgjGe)9@8oA5f2u;i&iuD70ZYZG>GVyG?KsVh7^@q^+_&<9k|1f{n8Ys}&4 zar=)5U>;^OAAH~;qzbCyEiJ*~gbv|vsZP*7fI2Zi@i+OI%Qu*&(tT@erO6Mb(Z$59 zguP#oe4eqid_2;#q}qW|`vO7O$`jJe$IvZwKK6c?Xzh#3XO?(!b^2k4;!# zYGW=JqVe>I?z~`PT4Q2xwFFNu6ey9UCv31nPenw9f8bRc#Vg5bJF+YgK;aIo$ualP wqI_@;Bx5sQADwv9=?)5}0VhV#cC~Kt`tEf9DgFWeNC#x3htMsB-+J`_0Fi|iga7~l literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/firebird_logo_400x400.png b/Ausgabe/common/images/firebird_logo_400x400.png new file mode 100755 index 0000000000000000000000000000000000000000..7330af107c60e76469a7578b60de5fb041be6559 GIT binary patch literal 21188 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�BMAtaTnv@F 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 literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/important.png b/Ausgabe/common/images/important.png new file mode 100755 index 0000000000000000000000000000000000000000..12c90f607a1b27ddde0a7d922ae255e8c90e883e GIT binary patch literal 722 zcmV;@0xkWCP)Gdz_qOoSb{LwMwNgp7=gl$4aErG%}mjHRWNrKOy`y@b8JoTa6ut*xc4t*y1SwY|N)#>U3Z&d%1> z*52OU=jZ3|@9+2b_y7O@tTMkk%M`~Kg@u8&dg_P^_0l3yQb639!jLZt^Lx<-O17UeeJ z-|=!77W(jGx&e#?FOku-gKofoU0$~4M+dhLFueEauP`}l7LV=;lsOdn%WHure=x;k`m0(bF&MU#) z-qv#^n8(MjB|ykioqII#+`g4no-MU=BK|Sahu_3M_-d*=7hq=~t?^}A)G7 zbairN0An*{V`DL9V>K}|HDobmIW;*pIW=W9HaTQ6F*7kTGI9=S@Bjb+07*qoM6N<$ Ef=i}M4FCWD literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/next.png b/Ausgabe/common/images/next.png new file mode 100755 index 0000000000000000000000000000000000000000..45835bf89ac0eca3ad69c4d8397cd5edad2f8782 GIT binary patch literal 1150 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG|!3-oLGuzY{7?>FXd_r6qS{MX+1QdG|HK%AA z&M|bFA9tAudUsBZ|kvp$Id-JckTVP=kK4t z|Nj2}C>RZap&SB+ixVCKvjk(3x4R2N2dk_Hkkjkw;uunKYwyH|T!$5ST0$SiY~H5U zR{cLbR)lT!-5c|b6rGCX%N?2P<`-xxUu`gZx87&*3!~4wH@%p0)WuYX}UBIC~8cAiK_+plk!-xP|nq~%Rem@g?39waS$dFIAw`2be&`&H`~ zup7N@y!g@N+18CSR#dLnIlgB9pXN>WRz-=n38I0oRnmeW@(a^WRPZVkYb)}kZ6%y pT0bWnsEZGzD*$LMgRyCap{cfkwt-Nc+b5t5gQu&X%Q~loCIEjWXuALa literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/note.png b/Ausgabe/common/images/note.png new file mode 100755 index 0000000000000000000000000000000000000000..d0c3c645ab9af6318035b026dd86944b9ddc9114 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9__P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_FXd_r6qS{MX+1QdG|HK%AA z&M|bFA9tAudO|H@7THL=dQiK_Wb?x_ut?D z9|fZ!FvLS(&zmEwfLVeu$=lt9p@UV{1IVfNba4!+xV3fSLB2x#g-7SkiDHi<0%5c709k4@>c%U5PUn6XiNrQ7+$BX-K(BEj>;XDjvwZcIF~ zikDl%a$|T|&B@5M-I14sdv^1r*gkp|z3k=crb$1i`yH45`zBpRc(KYI-u^rPzjiy@ zGH(5%+Qq}Yvm59P=MvY5lHmNblJdl&R0anPWlhiA#Pn3(#PrPMYy}fNBRvZROG|wN z3w;Aah2)~l;*v^-+{)sT%w)aPV!f2og8aM^z2yAdiMtec0FBcE8<&}$msnB?G|wQ- z!aOlC%^=CZB-O|yDbdi(G|ec{Bq=S?EGaqB)I9sbjHy6fd>~x`Kx-L{O)CsdwGFfl UgzDTr0c99GUHx3vIVCg!0Q2->tpET3 literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/tip.png b/Ausgabe/common/images/tip.png new file mode 100755 index 0000000000000000000000000000000000000000..5c4aab3bb3543191c360387c4af9a3cbaa051345 GIT binary patch literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoM0VEi-?r};1DW)WEcNYeRRlUkaK;CUn7srr_ zTcwkB3m#VBagbEhuIO1a$!w|j^feEHv@=+|woj32oF*6|l<3XH$!T}Lao)e6jJhoQ z_vr?OZVprC|7iZ8xaicUR0b&zR-JdP408=+?zC0Rn8IN&QLTWhMIcU0X8P7uUN4WB zR_?a_;&p>ll{>(OzfJ4N{OX={Q&zNgO}j31DC;|ya^r9Fjd348&p+!^cT+^sws+=& zCu*T*mRNK3PE;$BNx$Fa_9(Y=&DoXLMFRd#U31O)<`W^F&-o=xbIqK-c?mr!bmn>! zky6TW;ML~4nXw$T{yra=OteL6G!=B;0=?;6;u=vBoS#-wo>-L1;Gm(b>6x3Dp6Z*J zo|&AjV4`QFXQ5zesc&GRZ(yj9T$EW{Qt6OeSzMBtte0A>mr`1gpI4%noS!>!m*Ngk zP=bxiOwUU!DFvFBnrfM1VQy}0X_lO7WM-b2nq**TZkb|inr2~`WR#dJWc*7VsEZGz hD*$LMgOO>4k%_i}w!yxSoa=!y44$rjF6*2UngF(YpwIvS literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/toc-blank.png b/Ausgabe/common/images/toc-blank.png new file mode 100755 index 0000000000000000000000000000000000000000..6ffad17a0c7a78deaae58716e8071cc40cb0b8e0 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!VDzk7iOmbDT4r?5LY1G0LBeqssYGrXgF}- zKtn^rf1vn(hW}s+NCR0w;4iG^2^42c@^*J&=wOxg0CMC!T^vIyZYBTtzyH6zKuy9A zentg0F+qV0g#~P97#OBpaJrNsxA6f`rE`gEL`iUdT1k0gQ7VIjhO(w-Zen_>Z(@38 za<+nro{^q~f~BRtfrY+-p+a&|W^qZSLvCepNoKNMYO!8QX+eHoiC%Jk?!;Y+JAlS% zfsM;d&r2*R1)7&;o@#7ik&>8{Vv?F>U|?x(ZfKHZYGz`bmXczeoR*Z-Hs=yh7cWRx f0MJ?nL(>XNZ3Ars^Rf>h;}|?${an^LB{Ts5OHX0g literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/toc-minus.png b/Ausgabe/common/images/toc-minus.png new file mode 100755 index 0000000000000000000000000000000000000000..abbb020c8e2d6705ebc2f0fc17deed30f2977a46 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q4-G!sMP)HD-wQzH`-1CumMgJctv6pLi@6hos# qqtv?{|7HPo@q%;(0Ig*(G_A1IHqbUOFZ%#8j=|H_&t;ucLK6V~f=xvL literal 0 HcmV?d00001 diff --git a/Ausgabe/common/images/toc-plus.png b/Ausgabe/common/images/toc-plus.png new file mode 100755 index 0000000000000000000000000000000000000000..941312ce0dab168e0efcc5b572e387259880e541 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q49T#T`K7w7|w?rspM=lmg95OfodLFfd9rOi4*hH8wIdOfpPPHA_l1 vPBO4aOiebg{FXd_r6qS{MX+1QdG|HK%AA z&M|bF#=*s&OJYO?ftdq@1MW_{{H_c7!85p5(1lc z&#VJx3C1LEcNc~ZR#^`qC(YBvF{I+w)Ct~v2NXD1b6>NwI=-vFd2Ozz_LBUAZ6_V# z0_-2ED|^IRKipvRGe~yg+2{$+0#aW-GMHneR${}Twfy{=Zu8*Wewig#Kj<-8yG4i7iAWgR668V7MElu>!lX!rIZ%r=auLs=jTq` zrMLrVoEF%)%=Em(l2V{~M&{;5#umm#78a?N$;qjPhKZ(zMyW=L7Ktfo#^y-|**sf- lni%*%x&naKG8mgy7@BGuXd4LCxqSjjdAj{!F!o39xr+d_Vw5fMTEwpb-s#9q<5Nzz6gIepyU?Lctpr{ZK zVzWaWPAC)#17S8h%;AIuf(Q_yeIybEqS0s^i1YdJcsv0ln9M{Xkpz;-I_^=P))~D~!!Hvpq{Dl8O{rN@cECkt>#DncX%I(O&3i_YgL-$m$VU zT3cLBLS%M1`o{TBX}S|Tbhc)vk!Yp)%rdDd&my(RPsxl%lU$)tC?(1~WuEwClUQn! n$Q8O{Mxt@ukkcT{K0> literal 0 HcmV?d00001 diff --git a/Ausgabe/common/lib/jquery-1.10.1.min.js b/Ausgabe/common/lib/jquery-1.10.1.min.js new file mode 100755 index 0000000..e407e76 --- /dev/null +++ b/Ausgabe/common/lib/jquery-1.10.1.min.js @@ -0,0 +1,6 @@ +/*! jQuery v1.10.1 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-1.10.1.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.1",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=lt(),k=lt(),E=lt(),S=!1,A=function(){return 0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=bt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+xt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return At(e.replace(z,"$1"),t,n,i)}function st(e){return K.test(e+"")}function lt(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[b]=!0,e}function ct(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function pt(e,t,n){e=e.split("|");var r,i=e.length,a=n?null:t;while(i--)(r=o.attrHandle[e[i]])&&r!==t||(o.attrHandle[e[i]]=a)}function ft(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function dt(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:t}function gt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function yt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function vt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.parentWindow;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.frameElement&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ct(function(e){return e.innerHTML="",pt("type|href|height|width",dt,"#"===e.firstChild.getAttribute("href")),pt(B,ft,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),r.input=ct(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),pt("value",ht,r.attributes&&r.input),r.getElementsByTagName=ct(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ct(function(e){return e.innerHTML="
    ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ct(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=st(n.querySelectorAll))&&(ct(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ct(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=st(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ct(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=st(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},r.sortDetached=ct(function(e){return 1&e.compareDocumentPosition(n.createElement("div"))}),A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return gt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?gt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:ut,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=bt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?ut(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return at(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:vt(function(){return[0]}),last:vt(function(e,t){return[t-1]}),eq:vt(function(e,t,n){return[0>n?n+t:n]}),even:vt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:vt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:vt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:vt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=mt(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=yt(n);function bt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function wt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function Tt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ct(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function Nt(e,t,n,r,i,o){return r&&!r[b]&&(r=Nt(r)),i&&!i[b]&&(i=Nt(i,o)),ut(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||St(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:Ct(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=Ct(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=Ct(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function kt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=wt(function(e){return e===t},s,!0),p=wt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[wt(Tt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return Nt(l>1&&Tt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),i>r&&kt(e=e.slice(r)),i>r&&xt(e))}f.push(n)}return Tt(f)}function Et(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=Ct(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?ut(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=bt(e)),n=t.length;while(n--)o=kt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Et(i,r))}return o};function St(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function At(e,t,n,i){var a,s,u,c,p,f=bt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&xt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}o.pseudos.nth=o.pseudos.eq;function jt(){}jt.prototype=o.filters=o.pseudos,o.setFilters=new jt,r.sortStable=b.split("").sort(A).join("")===b,p(),[0,0].sort(A),r.detectDuplicates=S,x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!u||(n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
    a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
    t
    ",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
    ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null) +}),n=s=l=u=r=o=null,t}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=x(this),l=t,u=e.match(T)||[];while(o=u[a++])l=r?l:!s.hasClass(o),s[l?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x(""); +} + +// attach event listeners for initialization +w3c_slidy.set_up(); + +// hide the slides as soon as body element is available +// to reduce annoying screen mess before the onload event +setTimeout(w3c_slidy.hide_slides, 50); + diff --git a/DOCBOOK/slides/slidy/scripts/slidy.js.gz b/DOCBOOK/slides/slidy/scripts/slidy.js.gz new file mode 100755 index 0000000000000000000000000000000000000000..b1c58e4c9010ebe70ac57183d944ddc2b21efe33 GIT binary patch literal 12874 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/slides/slidy/styles/.htaccess b/DOCBOOK/slides/slidy/styles/.htaccess new file mode 100755 index 0000000..d395348 --- /dev/null +++ b/DOCBOOK/slides/slidy/styles/.htaccess @@ -0,0 +1,28 @@ +Options +MultiViews +LanguagePriority en +AddLanguage pt-br .pt-br + + + +ForceType 'text/html; charset=utf-8' + + + + + +ForceType 'application/xhtml+xml; charset=utf-8' + + + + + +ForceType 'text/css; charset=utf-8' + + + + + +ForceType 'text/javascript; charset=utf-8' + + +mkdir diff --git a/DOCBOOK/slides/slidy/styles/slidy.css b/DOCBOOK/slides/slidy/styles/slidy.css new file mode 100755 index 0000000..0197e64 --- /dev/null +++ b/DOCBOOK/slides/slidy/styles/slidy.css @@ -0,0 +1,405 @@ +/* slidy.css + + Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved. + W3C liability, trademark, document use and software licensing + rules apply, see: + + http://www.w3.org/Consortium/Legal/copyright-documents + http://www.w3.org/Consortium/Legal/copyright-software +*/ +body +{ + margin: 0 0 0 0; + padding: 0 0 0 0; + width: 100%; + height: 100%; + color: black; + background-color: white; + font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif; + font-size: 14pt; +} + +div.toolbar { + position: fixed; z-index: 200; + top: auto; bottom: 0; left: 0; right: 0; + height: 1.2em; text-align: right; + padding-left: 1em; + padding-right: 1em; + font-size: 60%; + color: red; + background-color: rgb(240,240,240); + border-top: solid 1px rgb(180,180,180); +} + +div.toolbar span.copyright { + color: black; + margin-left: 0.5em; +} + +div.initial_prompt { + position: absolute; + z-index: 1000; + bottom: 1.2em; + width: 100%; + background-color: rgb(200,200,200); + opacity: 0.35; + background-color: rgb(200,200,200, 0.35); + cursor: pointer; +} + +div.initial_prompt p.help { + text-align: center; +} + +div.initial_prompt p.close { + text-align: right; + font-style: italic; +} + +div.slidy_toc { + position: absolute; + z-index: 300; + width: 60%; + max-width: 30em; + height: 30em; + overflow: auto; + top: auto; + right: auto; + left: 4em; + bottom: 4em; + padding: 1em; + background: rgb(240,240,240); + border-style: solid; + border-width: 2px; + font-size: 60%; +} + +div.slidy_toc .toc_heading { + text-align: center; + width: 100%; + margin: 0; + margin-bottom: 1em; + border-bottom-style: solid; + border-bottom-color: rgb(180,180,180); + border-bottom-width: 1px; +} + +div.slide { + z-index: 20; + margin: 0 0 0 0; + padding-top: 0; + padding-bottom: 0; + padding-left: 20px; + padding-right: 20px; + border-width: 0; + clear: both; + top: 0; + bottom: 0; + left: 0; + right: 0; + line-height: 120%; + background-color: transparent; +} + +div.background { + display: none; +} + +div.handout { + margin-left: 20px; + margin-right: 20px; +} + +div.slide.titlepage { + text-align: center; +} + +div.slide.titlepage h1 { + padding-top: 10%; + margin-right: 0; +} + +div.slide h1 { + padding-left: 0; + padding-right: 20pt; + padding-top: 4pt; + padding-bottom: 4pt; + margin-top: 0; + margin-left: 0; + margin-right: 60pt; + margin-bottom: 0.5em; + display: block; + font-size: 160%; + line-height: 1.2em; + background: transparent; +} + +div.toc { + position: absolute; + top: auto; + bottom: 4em; + left: 4em; + right: auto; + width: 60%; + max-width: 30em; + height: 30em; + border: solid thin black; + padding: 1em; + background: rgb(240,240,240); + color: black; + z-index: 300; + overflow: auto; + display: block; + visibility: visible; +} + +div.toc-heading { + width: 100%; + border-bottom: solid 1px rgb(180,180,180); + margin-bottom: 1em; + text-align: center; +} + +img { + image-rendering: optimize-quality; +} + +pre { + font-size: 80%; + font-weight: bold; + line-height: 120%; + padding-top: 0.2em; + padding-bottom: 0.2em; + padding-left: 1em; + padding-right: 1em; + border-style: solid; + border-left-width: 1em; + border-top-width: thin; + border-right-width: thin; + border-bottom-width: thin; + border-color: #95ABD0; + color: #00428C; + background-color: #E4E5E7; +} + +li pre { margin-left: 0; } + +blockquote { font-style: italic } + +img { background-color: transparent } + +p.copyright { font-size: smaller } + +.center { text-align: center } +.footnote { font-size: smaller; margin-left: 2em; } + +a img { border-width: 0; border-style: none } + +a:visited { color: navy } +a:link { color: navy } +a:hover { color: red; text-decoration: underline } +a:active { color: red; text-decoration: underline } + +a {text-decoration: none} +.navbar a:link {color: white} +.navbar a:visited {color: yellow} +.navbar a:active {color: red} +.navbar a:hover {color: red} + +ul { list-style-type: square; } +ul ul { list-style-type: disc; } +ul ul ul { list-style-type: circle; } +ul ul ul ul { list-style-type: disc; } +li { margin-left: 0.5em; margin-top: 0.5em; } +li li { font-size: 85%; font-style: italic } +li li li { font-size: 85%; font-style: normal } + +div dt +{ + margin-left: 0; + margin-top: 1em; + margin-bottom: 0.5em; + font-weight: bold; +} +div dd +{ + margin-left: 2em; + margin-bottom: 0.5em; +} + + +p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table { + margin-left: 1em; + margin-right: 1em; +} + +p.subhead { font-weight: bold; margin-top: 2em; } + +.smaller { font-size: smaller } +.bigger { font-size: 130% } + +td,th { padding: 0.2em } + +ul { + margin: 0.5em 1.5em 0.5em 1.5em; + padding: 0; +} + +ol { + margin: 0.5em 1.5em 0.5em 1.5em; + padding: 0; +} + +ul { list-style-type: square; } +ul ul { list-style-type: disc; } +ul ul ul { list-style-type: circle; } +ul ul ul ul { list-style-type: disc; } + +ul li { + list-style: square; + margin: 0.1em 0em 0.6em 0; + padding: 0 0 0 0; + line-height: 140%; +} + +ol li { + margin: 0.1em 0em 0.6em 1.5em; + padding: 0 0 0 0px; + line-height: 140%; + list-style-type: decimal; +} + +li ul li { + font-size: 85%; + font-style: italic; + list-style-type: disc; + background: transparent; + padding: 0 0 0 0; +} +li li ul li { + font-size: 85%; + font-style: normal; + list-style-type: circle; + background: transparent; + padding: 0 0 0 0; +} +li li li ul li { + list-style-type: disc; + background: transparent; + padding: 0 0 0 0; +} + +li ol li { + list-style-type: decimal; +} + + +li li ol li { + list-style-type: decimal; +} + +/* + setting class="outline on ol or ul makes it behave as an + ouline list where blocklevel content in li elements is + hidden by default and can be expanded or collapsed with + mouse click. Set class="expand" on li to override default +*/ + +ol.outline li:hover { cursor: pointer } +ol.outline li.nofold:hover { cursor: default } + +ul.outline li:hover { cursor: pointer } +ul.outline li.nofold:hover { cursor: default } + +ol.outline { list-style:decimal; } +ol.outline ol { list-style-type:lower-alpha } + +ol.outline li.nofold { + padding: 0 0 0 20px; + background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em; +} +ol.outline li.unfolded { + padding: 0 0 0 20px; + background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em; +} +ol.outline li.folded { + padding: 0 0 0 20px; + background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em; +} +ol.outline li.unfolded:hover { + padding: 0 0 0 20px; + background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em; +} +ol.outline li.folded:hover { + padding: 0 0 0 20px; + background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em; +} + +ul.outline li.nofold { + padding: 0 0 0 20px; + background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em; +} +ul.outline li.unfolded { + padding: 0 0 0 20px; + background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em; +} +ul.outline li.folded { + padding: 0 0 0 20px; + background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em; +} +ul.outline li.unfolded:hover { + padding: 0 0 0 20px; + background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em; +} +ul.outline li.folded:hover { + padding: 0 0 0 20px; + background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em; +} + +/* for slides with class "title" in table of contents */ +a.titleslide { font-weight: bold; font-style: italic } + +/* + hide images for work around for save as bug + where browsers fail to save images used by CSS +*/ +img.hidden { display: none; visibility: hidden } +div.initial_prompt { display: none; visibility: hidden } + + div.slide { + visibility: visible; + position: inherit; + } + div.handout { + border-top-style: solid; + border-top-width: thin; + border-top-color: black; + } + +@media screen { + .hidden { display: none; visibility: visible } + + div.slide.hidden { display: block; visibility: visible } + div.handout.hidden { display: block; visibility: visible } + div.background { display: none; visibility: hidden } + body.single_slide div.initial_prompt { display: block; visibility: visible } + body.single_slide div.background { display: block; visibility: visible } + body.single_slide div.background.hidden { display: none; visibility: hidden } + body.single_slide .invisible { visibility: hidden } + body.single_slide .hidden { display: none; visibility: hidden } + body.single_slide div.slide { position: absolute } + body.single_slide div.handout { display: none; visibility: hidden } +} + +@media print { + .hidden { display: block; visibility: visible } + + div.slide pre { font-size: 60%; padding-left: 0.5em; } + div.toolbar { display: none; visibility: hidden; } + div.slidy_toc { display: none; visibility: hidden; } + div.background { display: none; visibility: hidden; } + div.slide { page-break-before: always } + /* :first-child isn't reliable for print media */ + div.slide.first-slide { page-break-before: avoid } +} + diff --git a/DOCBOOK/slides/slidy/styles/w3c-blue.css b/DOCBOOK/slides/slidy/styles/w3c-blue.css new file mode 100755 index 0000000..6c4ff4f --- /dev/null +++ b/DOCBOOK/slides/slidy/styles/w3c-blue.css @@ -0,0 +1,497 @@ +/* w3c-blue.css + + Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved. + W3C liability, trademark, document use and software licensing + rules apply, see: + + http://www.w3.org/Consortium/Legal/copyright-documents + http://www.w3.org/Consortium/Legal/copyright-software +*/ +body +{ + margin: 0 0 0 0; + padding: 0 0 0 0; + width: 100%; + height: 100%; + color: black; + background-color: white; + font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif; + font-size: 14pt; +} + +div.slide.titlepage { + text-align: center; +} + +div.slide.titlepage h1 { + padding-top: 40%; +} + +div.slide { + z-index: 20; + margin: 0 0 0 0; + padding: 0; + border-width: 0; + top: 0; + bottom: 0; + left: 0; + right: 0; + line-height: 120%; + background-color: transparent; +} + +div.background { + z-index: 1; + position: absolute; + vertical-align: bottom; + left: 0; + right: 0; + top: 0; + bottom: auto; + height: 4.1em; + padding: 0 0 0 0.2em; + margin: 0 0 0 0; + border-width: 0; + background-color: #728ec2; +} + +div.background img { + height: 4em; +} + +/* this rule is hidden from IE which doesn't support + selector */ +div.slide + div[class].slide { page-break-before: always;} + +div.slide h1 { + padding-left: 3em; + padding-right: 3em; + padding-top: 0.1em; + margin-bottom: 0.8em; + margin-top: -0.05em; + margin-left: 0; + margin-right: 0; + min-height: 2.3em; + color: white; + height: 2.2em; + font-size: 160%; + line-height: 1.1em; +} + +div.slide h1 a { + color: white; + text-decoration: none; +} + +div.slide h1 a:link { + color: white; + text-decoration: none; +} + +div.slide h1 a:visited { + color: white; + text-decoration: none; +} + +div.slide h1 a:hover { + color: white; + text-decoration: underline; +} + +div.slide h1 a:active { + color: red; + text-decoration: underline; +} + +#head-icon { + margin-top: 0.5em; + margin-bottom: 0; + margin-left: 0; + margin-right: 1em; + background: #728ec2; + border-width: 0; + height: 3em; + max-width: 3em; + z-index: 2; + float: left; +} + +#head-logo { + margin: 0; + margin-top: 0.25em; + padding-top: 0.25em; + padding-bottom: 0.2em; + padding-left: 0; + padding-right: 0; + height: 3.2em; + width: 4.8em; + float: right; + z-index: 2; + background: #728ec2; +} + +#head-logo-fallback { + margin: 0; + padding: 0; + margin-top: -0.8em; + width: 4.8em; + float: right; + z-index: 2; +} + +/* the next two classes support vertical and horizontal centering */ +div.vbox { + float: left; + height: 40%; + width: 50%; + margin-top: -240px; +} +div.hbox { + width:60%; + margin-top: 0; + margin-left:auto; + margin-right:auto; + height: 60%; + border:1px solid silver; + background:#F0F0F0; + overflow:auto; + text-align:left; + clear:both; +} + +/* styling for named background */ +div.background.slanty { + z-index: 2; + bottom: 0; + height: 100%; + background: transparent; +} + +div.background.slanty img { margin-top: 4em; width: 100%; height: 80% } + +/* the following makes the pre background translucent */ +/* opacity is a CSS3 property but supported by Mozilla family */ +/* filter is an IE specific feature that also requires width */ +div.slide.slanty pre { + width: 93%; /* needed for IE filter to work */ + opacity: .8; + filter: alpha(opacity=80); +} + +img.withBorder { + border: 2px solid #c60; + padding: 4px; +} + +li pre { margin-left: 0; } + +@media print { pre { font-size: 60% } } + +blockquote { font-style: italic } + +img { background-color: transparent } + +p.copyright { font-size: smaller } + +.center { text-align: center } +.footnote { font-size: smaller; margin-left: 2em; } + +a img { border-width: 0; border-style: none } + +a:visited { color: navy } +a:link { color: navy } +a:hover { color: red; text-decoration: underline } +a:active { color: red; text-decoration: underline } + +a {text-decoration: none} +.navbar a:link {color: white} +.navbar a:visited {color: yellow} +.navbar a:active {color: red} +.navbar a:hover {color: red} + +ul { list-style-type: square; } +ul ul { list-style-type: disc; } +ul ul ul { list-style-type: circle; } +ul ul ul ul { list-style-type: disc; } +li { margin-left: 0.5em; margin-top: 0.5em; } +li li { font-size: 85%; font-style: italic } +li li li { font-size: 85%; font-style: normal } + +div dt +{ + margin-left: 0; + margin-top: 1em; + margin-bottom: 0.5em; + font-weight: bold; +} +div dd +{ + margin-left: 2em; + margin-bottom: 0.5em; +} + + +p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table { + margin-left: 1em; + margin-right: 1em; +} + +p.subhead { font-weight: bold; margin-top: 2em; } + +div.cover p.explanation { + font-style: italic; + margin-top: 3em; +} + + +.smaller { font-size: smaller } + +td,th { padding: 0.2em } + +ul { + margin: 0.5em 1.5em 0.5em 1.5em; + padding: 0; +} + +ol { + margin: 0.5em 1.5em 0.5em 1.5em; + padding: 0; +} + +ul { list-style-type: square; } +ul ul { list-style-type: disc; } +ul ul ul { list-style-type: circle; } +ul ul ul ul { list-style-type: disc; } +li { margin-left: 0.5em; margin-top: 0.5em; } +li li { font-size: 85%; font-style: italic } +li li li { font-size: 85%; font-style: normal } + + +ul li { + list-style: none; + margin: 0.1em 0em 0.6em 0; + padding: 0 0 0 40px; + background: transparent url(../graphics/bullet.png) no-repeat 5px 0.3em; + line-height: 140%; +} + +/* workaround IE's failure to support background on li for print media */ +@media print { ul li { list-style: disc; padding-left: 0; background: none; } } + +ol li { + margin: 0.1em 0em 0.6em 1.5em; + padding: 0 0 0 0px; + line-height: 140%; +} + +li li { + font-size: 85%; + font-style: italic; + list-style-type: disc; + background: transparent; + padding: 0 0 0 0; +} +li li li { + font-size: 85%; + font-style: normal; + list-style-type: circle; + background: transparent; + padding: 0 0 0 0; +} +li li li li { + list-style-type: disc; + background: transparent; + padding: 0 0 0 0; +} + +/* rectangular blue bullet + unfold/nofold/fold widget */ + +/* + setting class="outline on ol or ul makes it behave as an + ouline list where blocklevel content in li elements is + hidden by default and can be expanded or collapsed with + mouse click. Set class="expand" on li to override default +*/ + +ol.outline li:hover { cursor: pointer } +ol.outline li.nofold:hover { cursor: default } + +ul.outline li:hover { cursor: pointer } +ul.outline li.nofold:hover { cursor: default } + +ol.outline { list-style:decimal; } +ol.outline ol { list-style-type:lower-alpha } + +ol.outline li.nofold { + padding: 0 0 0 20px; + background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.3em; +} +ol.outline li.unfolded { + padding: 0 0 0 20px; + background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.3em; +} +ol.outline li.folded { + padding: 0 0 0 20px; + background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.3em; +} +ol.outline li.unfolded:hover { + padding: 0 0 0 20px; + background: transparent url(../graphics/fold.gif) no-repeat 0px 0.3em; +} +ol.outline li.folded:hover { + padding: 0 0 0 20px; + background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.3em; +} + +ul.outline li.nofold { + padding: 0 0 0 52px; + background: transparent url(../graphics/bullet-nofold-dim.gif) no-repeat 5px 0.3em; +} +ul.outline li.unfolded { + padding: 0 0 0 52px; + background: transparent url(../graphics/bullet-fold-dim.gif) no-repeat 5px 0.3em; +} +ul.outline li.folded { + padding: 0 0 0 52px; + background: transparent url(../graphics/bullet-unfold-dim.gif) no-repeat 5px 0.3em; +} +ul.outline li.unfolded:hover { + padding: 0 0 0 52px; + background: transparent url(../graphics/bullet-fold.gif) no-repeat 5px 0.3em; +} +ul.outline li.folded:hover { + padding: 0 0 0 52px; + background: transparent url(../graphics/bullet-unfold.gif) no-repeat 5px 0.3em; +} + +li ul.outline li.nofold { + padding: 0 0 0 21px; + background: transparent url(../graphics/nofold-dim.gif) no-repeat 5px 0.3em; +} +li ul.outline li.unfolded { + padding: 0 0 0 21px; + background: transparent url(../graphics/fold-dim.gif) no-repeat 5px 0.3em; +} +li ul.outline li.folded { + padding: 0 0 0 21px; + background: transparent url(../graphics/unfold-dim.gif) no-repeat 5px 0.3em; +} +li ul.outline li.unfolded:hover { + padding: 0 0 0 21px; + background: transparent url(../graphics/fold.gif) no-repeat 5px 0.3em; +} +li ul.outline li.folded:hover { + padding: 0 0 0 21px; + background: transparent url(../graphics/unfold.gif) no-repeat 5px 0.3em; +} + +img { + image-rendering: optimize-quality; +} + +img.withBorder { + border: 2px solid #c60; + padding: 4px; +} + +div.header { + position: absolute; + z-index: 2; + left: 0; + right: 0; + top: 0; + bottom: auto; + height: 2.95em; + width: 100%; + padding: 0 0 0 0; + margin: 0 0 0 0; + border-width: 0; + border-style: solid; + background-color: #005A9C; + border-bottom-width: thick; + border-bottom-color: #95ABD0; +} + +div.footer { + position: absolute; + z-index: 80; + left: 0; + right: 0; + top: auto; + bottom: 0; + height: 3.5em; + margin: 0; + font-size: 80%; + font-weight: bold; + padding-left: 1em; + padding-right: 0; + padding-top: 0.3em; + padding-bottom: 0; + color: #003366; + background-color: #95ABD0; +} + +/* this is a hack to hide property from IE6 and below */ +div[class="footer"] { + position: fixed; +} + +#hidden-bullet { + visibility: hidden; + display: none; +} + +div.slide.cover { + color: white; + background-color: #728ec2; + padding-top: 0; + padding-right: 0; + padding-left: 3em; + height: 100%; +} + +div.slide.cover h1 { + margin: 0; + padding: 0.5em; + color: white; + height: auto; +} + +div.slide.cover h2 { + color: white; +} + +div.slide.cover a { + color: white; +} + +div.slide.cover a:visited { color: white } +div.slide.cover a:link { color: white } +div.slide.cover a:hover { color: yellow; text-decoration: underline } +div.slide.cover a:active { color: yellow; text-decoration: underline } + +div.slide.cover a:hover, div.slide.cover a:active { + color: yellow; text-decoration: underline; +} + +div.slide.cover img.cover { + margin: 0 0 0 0; + float: right; + padding-bottom: 4em; + width: 50%; + overflow: hidden; +} + +div.slide.cover a:hover, div.slide.cover a:active { + color: yellow; text-decoration: underline; +} + +/* for Bert as an ardent user of the old W3C slidemaker tool */ + +div.comment { display: none; visibility: hidden } + +@media print { + div.slide h1 { background: transparent; color: black } + div.slide.cover { background: transparent; color: black } + div.slide.cover h1 { background: transparent; color: black } + div.comment { display: block; visibility: visible } +} diff --git a/DOCBOOK/slides/tools/dbs3-upgrade.xsl b/DOCBOOK/slides/tools/dbs3-upgrade.xsl new file mode 100755 index 0000000..e757c97 --- /dev/null +++ b/DOCBOOK/slides/tools/dbs3-upgrade.xsl @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/slides/xhtml/param.xml b/DOCBOOK/slides/xhtml/param.xml new file mode 100755 index 0000000..1bc7c2e --- /dev/null +++ b/DOCBOOK/slides/xhtml/param.xml @@ -0,0 +1,824 @@ + + + +Slides XHTML Parameter Reference + +$Id$ + + + + Kövesdán + Gábor + + + + 2012 + Gábor Kövesdán + + + This is reference documentation for all user-configurable + parameters in the DocBook XSL Slides XHTML stylesheet. + Note that the Slides stylesheet for XHTML output is a + customization layer of the DocBook XSL XHTML stylesheet. + Therefore, in addition to the slides-specific parameters + listed in this section, you can also use a number of + XHTML stylesheet + parameters to control Slides XHTML output. + + + + XHTML: General Params + + + +disable.collapsible +boolean + + +disable.collapsible +Specifies whether collapsible rendering is enabled + + + + + <xsl:param name="disable.collapsible">0</xsl:param> + + + +Description + +This parameter specifies whether elements marked as + collapsible are generated as such in the output document. + + + + + + +disable.incremental +boolean + + +disable.incremental +Specifies whether incremental rendering is enabled + + + + + <xsl:param name="disable.incremental">0</xsl:param> + + + +Description + +This parameter specifies whether elements marked as + incremental are generated as such in the output document. + + + + + + +generate.copyright +boolean + + +generate.copyright +Specifies whether copyright is generated + + + + + <xsl:param name="generate.copyright">1</xsl:param> + + + +Description + +This parameter specifies whether the copyright info is generated + in the footer area. + + + + + + +generate.foilgroup.numbered.toc +boolean + + +generate.foilgroup.numbered.toc +Specifies whether foilgroups have a numbered TOC + + + + + <xsl:param name="generate.foilgroup.numbered.toc">1</xsl:param> + + + +Description + +If TOC generation is turned on, this parameter specifies + whether foilgroups have a numbered TOC. If disabled, TOC items + will be bulleted, not numbered. + + + + + + +generate.foilgroup.toc +boolean + + +generate.foilgroup.toc +Specifies whether foilgroups have a TOC + + + + + <xsl:param name="generate.foilgroup.toc">1</xsl:param> + + + +Description + +This parameter specifies whether foilgroups will + contain a table of contents of the included foils. + + + + + + +generate.handoutnotes +boolean + + +generate.handoutnotes +Specifies whether handoutnotes are generated + + + + + <xsl:param name="generate.handoutnotes">0</xsl:param> + + + +Description + +This parameter specifies whether handoutnotes shall + be generated to the output. + + + + + + +generate.pubdate +boolean + + +generate.pubdate +Specifies whether the pubdate is generated + + + + + <xsl:param name="generate.pubdate">1</xsl:param> + + + +Description + +This parameter specifies whether the publication date is generated + in the footer area. + + + + + + +generate.speakernotes +boolean + + +generate.speakernotes +Specifies whether speakernotes are generated + + + + + <xsl:param name="generate.speakernotes">0</xsl:param> + + + +Description + +This parameter specifies whether speakernotes shall + be generated to the output. + + + + + + +generate.titlepage +boolean + + +generate.titlepage +Specifies whether titlepage is generated + + + + + <xsl:param name="generate.titlepage">1</xsl:param> + + + +Description + +This parameter specifies whether titlepage is generated + for the presentation. + + + + + + +mml.embedding.mode +list +inline +object +image +link +iframe +embed + + +mml.embedding.mode +Specifies how inline MathML is processed + + + + + <xsl:param name="mml.embedding.mode">inline</xsl:param> + + + +Description + +This parameter specifies how inline MathML formulas + are embedded into the output document. + + + + inline + + Content is copied over inline with its namespace. + + + + object + + Content is extracted into an externel file and referenced + by an object element. + + + + image + + Content is extracted into an externel file and referenced + by an img element. + + + + link + + Content is extracted into an externel file and referenced + by an a element. + + + + iframe + + Content is extracted into an externel file and referenced + by an iframe element. + + + + embed + + Content is extracted into an externel file and referenced + by an embed element. + + + + + + + + + +svg.embedding.mode +list +inline +object +image +link +iframe +embed + + +svg.embedding.mode +Specifies how inline SVG is processed + + + + + <xsl:param name="svg.embedding.mode">object</xsl:param> + + + +Description + +This parameter specifies how inline SVG graphics + are embedded into the output document. + + + + inline + + Content is copied over inline with its namespace. + + + + object + + Content is extracted into an externel file and referenced + by an object element. + + + + image + + Content is extracted into an externel file and referenced + by an img element. + + + + link + + Content is extracted into an externel file and referenced + by an a element. + + + + iframe + + Content is extracted into an externel file and referenced + by an iframe element. + + + + embed + + Content is extracted into an externel file and referenced + by an embed element. + + + + + + + + + +user.css +filename + + +user.css +Specifies the path to user-supplied CSS + + + + + <xsl:param name="user.css">user.css</xsl:param> + + + +Description + +This parameter specifies the path from where the + CSS styling is read. This file can be used to + add additional styling to the slides. + + + + + + +wrap.slidecontent +boolean + + +wrap.slidecontent +Specifies whether the foil content is wrapped into a div + + + + + <xsl:param name="wrap.slidecontent">0</xsl:param> + + + +Description + +This parameter specifies whether the foil content is wrapped into + a div so that additional styling can be applied. + + + + + + + + XHTML: S5 Params + + + +s5.controls +boolean + + +s5.controls +Specifies whether S5 controls are visible + + + + + <xsl:param name="s5.controls">0</xsl:param> + + + +Description + +This parameter specifies whether S5 navigation controls are + visible by default. + + + + + + +s5.defaultview +list +slideshow +outline + + +s5.defaultview +Specifies the default S5 view + + + + + <xsl:param name="s5.defaultview">slideshow</xsl:param> + + + +Description + +This parameter specifies, which is the default view + in the generated S5 presentation. + + + + + + +s5.opera.css +filename + + +s5.opera.css +Specifies the name of the S5 Opera-specific CSS file + + + + + <xsl:param name="s5.opera.css">opera.css</xsl:param> + + + +Description + +This parameter specifies the name of the S5 Opera-specific + CSS file. + + + + + + +s5.outline.css +filename + + +s5.outline.css +Specifies the name of the S5 outline CSS file + + + + + <xsl:param name="s5.outline.css">outline.css</xsl:param> + + + +Description + +This parameter specifies the name of the S5 outline CSS file. + + + + + + +s5.path.prefix +uri + + +s5.path.prefix +Specifies the path to S5 files + + + + + <xsl:param name="s5.path.prefix">files/s5/ui/default/</xsl:param> + + + +Description + +This parameter specifies the path where S5 CSS and + JavaScript files reside. All the CSS and JavaScript paths + will be generated relative to this directory. + + + + + + +s5.print.css +filename + + +s5.print.css +Specifies the name of the S5 print CSS file + + + + + <xsl:param name="s5.print.css">print.css</xsl:param> + + + +Description + +This parameter specifies the name of the S5 print CSS file. + + + + + + +s5.slides.css +filename + + +s5.slides.css +Specifies the name of the S5 slides CSS file + + + + + <xsl:param name="s5.slides.css">slides.css</xsl:param> + + + +Description + +This parameter specifies the name of the S5 slides CSS file. + + + + + + +s5.slides.js +filename + + +s5.slides.js +Specifies the name of the S5 slides JavaScript file + + + + + <xsl:param name="s5.slides.js">slides.js</xsl:param> + + + +Description + +This parameter specifies the name of the S5 slides JavaScript + file. + + + + + + + + XHTML: Slidy Params + + + +slidy.duration +integer + + +slidy.duration +Specifies the duration of the presentation + + + + + <xsl:param name="slidy.duration">0</xsl:param> + + + +Description + +This parameter specifies the duration of the presentation + in minutes. A JavaScript clock will count down to help the + speaker in not running out of time. Can be disabled if set to 0. + + + + + + +slidy.path.prefix +uri + + +slidy.path.prefix +Specifies the path to Slidy files + + + + + <xsl:param name="slidy.path.prefix">files/slidy/</xsl:param> + + + +Description + +This parameter specifies the path where Slidy CSS and + JavaScript files reside. All the CSS and JavaScript paths + will be generated relative to this directory. + + + + + + +slidy.slidy.css +filename + + +slidy.slidy.css +Specifies the name of the main Slidy CSS file + + + + + <xsl:param name="slidy.slidy.css">styles/slidy.css</xsl:param> + + + +Description + +This parameter specifies the name of the main Slidy CSS file. + + + + + + +slidy.slidy.js +filename + + +slidy.slidy.js +Specifies the name of the Slidy JavaScript file + + + + + <xsl:param name="slidy.slidy.js">scripts/slidy.js</xsl:param> + + + +Description + +This parameter specifies the name of the Slidy JavaScript file. + + + + + + +slidy.user.css +filename + + +slidy.user.css +Specifies the name of the Slidy user CSS file + + + + + <xsl:param name="slidy.user.css">styles/w3c-blue.css</xsl:param> + + + +Description + +This parameter specifies the name of the Slidy user CSS file. + + + + + + + +The Stylesheet + +The param.xsl stylesheet is just a wrapper +around all these parameters. + + + +<!-- This file is generated from param.xweb --> + +<xsl:stylesheet exclude-result-prefixes="src" version="1.0"> + +<!-- ******************************************************************** + $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $ + ******************************************************************** + + This file is part of the DocBook Slides Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<src:fragref linkend="disable.collapsible.frag"></src:fragref> +<src:fragref linkend="disable.incremental.frag"></src:fragref> +<src:fragref linkend="generate.copyright.frag"></src:fragref> +<src:fragref linkend="generate.foilgroup.numbered.toc.frag"></src:fragref> +<src:fragref linkend="generate.foilgroup.toc.frag"></src:fragref> +<src:fragref linkend="generate.handoutnotes.frag"></src:fragref> +<src:fragref linkend="generate.pubdate.frag"></src:fragref> +<src:fragref linkend="generate.speakernotes.frag"></src:fragref> +<src:fragref linkend="generate.titlepage.frag"></src:fragref> +<src:fragref linkend="mml.embedding.mode.frag"></src:fragref> +<src:fragref linkend="svg.embedding.mode.frag"></src:fragref> +<src:fragref linkend="user.css.frag"></src:fragref> +<src:fragref linkend="wrap.slidecontent.frag"></src:fragref> + +<src:fragref linkend="s5.controls.frag"></src:fragref> +<src:fragref linkend="s5.defaultview.frag"></src:fragref> +<src:fragref linkend="s5.opera.css.frag"></src:fragref> +<src:fragref linkend="s5.outline.css.frag"></src:fragref> +<src:fragref linkend="s5.path.prefix.frag"></src:fragref> +<src:fragref linkend="s5.print.css.frag"></src:fragref> +<src:fragref linkend="s5.slides.css.frag"></src:fragref> +<src:fragref linkend="s5.slides.js.frag"></src:fragref> + +<src:fragref linkend="slidy.duration.frag"></src:fragref> +<src:fragref linkend="slidy.path.prefix.frag"></src:fragref> +<src:fragref linkend="slidy.slidy.css.frag"></src:fragref> +<src:fragref linkend="slidy.slidy.js.frag"></src:fragref> +<src:fragref linkend="slidy.user.css.frag"></src:fragref> + +</xsl:stylesheet> + + + + diff --git a/DOCBOOK/slides/xhtml/param.xsl b/DOCBOOK/slides/xhtml/param.xsl new file mode 100755 index 0000000..6bd0e5c --- /dev/null +++ b/DOCBOOK/slides/xhtml/param.xsl @@ -0,0 +1,71 @@ + + + + + + + 0 + + 0 + + 1 + + 1 + + 1 + + 0 + + 1 + + 0 + + 1 + + inline + + object + + user.css + + 0 + + + 0 + + slideshow + + opera.css + + outline.css + + files/s5/ui/default/ + + print.css + + slides.css + + slides.js + + + 0 + + files/slidy/ + + styles/slidy.css + + scripts/slidy.js + + styles/w3c-blue.css + + + + diff --git a/DOCBOOK/slides/xhtml/plain-titlepage.xml b/DOCBOOK/slides/xhtml/plain-titlepage.xml new file mode 100755 index 0000000..fb6569d --- /dev/null +++ b/DOCBOOK/slides/xhtml/plain-titlepage.xml @@ -0,0 +1,26 @@ + + + + + + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> +</t:templates> diff --git a/DOCBOOK/slides/xhtml/plain-titlepage.xsl b/DOCBOOK/slides/xhtml/plain-titlepage.xsl new file mode 100755 index 0000000..3af53f4 --- /dev/null +++ b/DOCBOOK/slides/xhtml/plain-titlepage.xsl @@ -0,0 +1,140 @@ +<?xml version="1.0"?> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl"> + +<!-- This stylesheet was created by template/titlepage.xsl--> + +<xsl:template name="slides.titlepage.recto"> + <xsl:choose> + <xsl:when test="slidesinfo/title"> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="slidesinfo/subtitle"> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/corpauthor"/> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/authorgroup"/> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/author"/> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/author"/> +</xsl:template> + +<xsl:template name="slides.titlepage.verso"> +</xsl:template> + +<xsl:template name="slides.titlepage.separator"> +</xsl:template> + +<xsl:template name="slides.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="slides.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="slides.titlepage"> + <div class="slide cover title"> + <xsl:variable name="recto.content"> + <xsl:call-template name="slides.titlepage.before.recto"/> + <xsl:call-template name="slides.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="slides.titlepage.before.verso"/> + <xsl:call-template name="slides.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="slides.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="slides.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="slides.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="slides.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="slides.titlepage.recto.style"> +<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="slides.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="slides.titlepage.recto.style"> +<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="slides.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="slides.titlepage.recto.style"> +<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="slides.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="slides.titlepage.recto.style"> +<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="slides.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="slides.titlepage.recto.style"> +<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/> +</div> +</xsl:template> + +</xsl:stylesheet> + diff --git a/DOCBOOK/slides/xhtml/plain.xsl b/DOCBOOK/slides/xhtml/plain.xsl new file mode 100755 index 0000000..05d5e51 --- /dev/null +++ b/DOCBOOK/slides/xhtml/plain.xsl @@ -0,0 +1,535 @@ +<?xml version="1.0" encoding="ASCII"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns="http://www.w3.org/1999/xhtml" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:db="http://docbook.org/ns/docbook" + xmlns:dbs="http://docbook.org/ns/docbook-slides" + xmlns:exsl="http://exslt.org/common" + exclude-result-prefixes="dbs db xlink" + extension-element-prefixes="exsl" + version="1.0"> + +<xsl:import href="../../xhtml/chunk.xsl"/> +<xsl:import href="../common/common.xsl"/> +<xsl:import href="plain-titlepage.xsl"/> +<xsl:import href="param.xsl"/> + +<xsl:param name="local.l10n.xml" select="document('')"/> +<i18n xmlns="http://docbook.sourceforge.net/xmlns/l10n/1.0"> + <l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en"> + <l:gentext key="Foilgroup" text="Foil Group"/> + <l:gentext key="Foil" text="Foil"/> + <l:gentext key="Speakernotes" text="Speaker Notes"/> + <l:gentext key="Handoutnotes" text="Handout Notes"/> + <l:gentext key="SVGImage" text="SVG image"/> + <l:gentext key="MathMLFormula" text="MathML formula"/> + + <l:context name="title"> + <l:gentext key="foil" text="Foil %n %t"/> + <l:gentext key="foilgroup" text="Foil %n %t"/> + </l:context> + </l:l10n> +</i18n> + +<!-- Overrides from DocBook XSL --> +<xsl:template name="process.qanda.toc"/> + +<!-- Main content starts here --> + +<xsl:template name="xhtml.head"> + <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/> + <link rel="stylesheet" href="{$user.css}" type="text/css"/> +</xsl:template> + +<xsl:template name="slideshow.head"/> + +<xsl:template name="slideshow.content"> + <div class="presentation"> + <xsl:if test="$generate.titlepage != 0"> + <xsl:apply-templates select="/dbs:slides" mode="titlepage"/> + </xsl:if> + + <xsl:apply-templates select="/dbs:slides/dbs:foil|dbs:slides/dbs:foilgroup"/> + </div> +</xsl:template> + +<xsl:template match="/dbs:slides" mode="titlepage"> + <xsl:call-template name="slides.titlepage"/> +</xsl:template> + +<xsl:template name="slide.notes"> + <xsl:if test="($generate.speakernotes != 0) and ./dbs:speakernotes"> + <div class="notes"> + <h2 class="notes"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Speakernotes'"/> + </xsl:call-template> + </h2> + + <xsl:apply-templates select="dbs:speakernotes" mode="notes.mode"/> + </div> + </xsl:if> + + <xsl:if test="($generate.handoutnotes != 0) and ./dbs:handoutnotes"> + <div class="handout"> + <h2 class="handout"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Handoutnotes'"/> + </xsl:call-template> + </h2> + + <xsl:apply-templates select="dbs:handoutnotes" mode="notes.mode"/> + </div> + </xsl:if> +</xsl:template> + +<xsl:template match="/"> + <html> + <xsl:if test="/dbs:slides/@xml:lang"> + <xsl:attribute name="xml:lang"> + <xsl:value-of select="/dbs:slides/@xml:lang"/> + </xsl:attribute> + </xsl:if> + + <head> + <title> + <xsl:call-template name="get.title"> + <xsl:with-param name="ctx" select="/dbs:slides"/> + </xsl:call-template> + + + + + + + + + + + + + + + + + + + +
      + +
    1. +
      +
    +
    + + +
      + +
    • +
      +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + +
    +
    + + + + +
    + + +
    + + +
    + + + +
    + + + + +
    + +
    +
    + + + + +
    + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    + +
    +
    + + + + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + + + + + + + +

    +
    +
    + + +

    +
    + + +

    + + +

    +
    +
    + + + + + mailto: + + + <> + + + + + + + + + + + + + + + + + + +
      + +
    +
    + + +
      + +
    +
    + + + + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inline + + + + + + + + + + + + + + + + + + + + + + + + + + + + {$mimeType} object + + + + + + + + + + + + ':"");a._keyEvent=!1;return G},_generateMonthYearHeader:function(a,b,c,d,e,g,p,n){var q=this._get(a,"changeMonth"),o=this._get(a,"changeYear"),w=this._get(a,"showMonthAfterYear"),r='
    ',u="";if(g||!q)u+=''+p[b]+"";else{for(var p=d&&d.getFullYear()==c,s=e&&e.getFullYear()==c,u=u+('"}w||(r+=u+(g||!q||!o?" ":""));if(!a.yearshtml)if(a.yearshtml="",g||!o)r+=''+c+"";else{var n=this._get(a,"yearRange").split(":"),z=(new Date).getFullYear(),p=function(a){a= +a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?z+parseInt(a,10):parseInt(a,10);return isNaN(a)?z:a},b=p(n[0]),n=Math.max(b,p(n[1]||"")),b=d?Math.max(b,d.getFullYear()):b,n=e?Math.min(n,e.getFullYear()):n;for(a.yearshtml+='";r+=a.yearshtml;a.yearshtml=null}r+=this._get(a,"yearSuffix");w&&(r+=(g||!q||!o?" ":"")+u);return r+"
    "},_adjustInstDate:function(a,b,c){var d=a.drawYear+("Y"==c?b:0),e=a.drawMonth+("M"==c?b:0),b=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+("D"==c?b:0),d=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,b)));a.selectedDay=d.getDate();a.drawMonth=a.selectedMonth=d.getMonth();a.drawYear=a.selectedYear=d.getFullYear();("M"==c|| +"Y"==c)&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),c=c&&bd?d:c},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return null==a?[1,1]:"number"==typeof a?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a, +b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),c=this._daylightSavingAdjust(new Date(c,d+(0>b?b:e[0]*e[1]),1));0>b&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<= +d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff"),b="string"!=typeof b?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);b=b?"object"==typeof b?b:this._daylightSavingAdjust(new Date(d, +c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});b.fn.datepicker=function(a){if(!this.length)return this;b.datepicker.initialized||(b(document).mousedown(b.datepicker._checkExternalClick).find("body").append(b.datepicker.dpDiv),b.datepicker.initialized=!0);var c=Array.prototype.slice.call(arguments,1);return"string"==typeof a&&("isDisabled"==a||"getDate"==a||"widget"==a)||"option"== +a&&2==arguments.length&&"string"==typeof arguments[1]?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this[0]].concat(c)):this.each(function(){typeof a=="string"?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this].concat(c)):b.datepicker._attachDatepicker(this,a)})};b.datepicker=new c;b.datepicker.initialized=!1;b.datepicker.uuid=(new Date).getTime();b.datepicker.version="1.8.14";window["DP_jQuery_"+h]=b})(jQuery); +(function(b,a){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
    ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===a)return this._value();this._setOption("value",b);return this},_setOption:function(a,d){"value"===a&&(this.options.value=d,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete"));b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;"number"!==typeof a&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change"));this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.14"})})(jQuery); +jQuery.effects||function(b,a){function c(a){var c;return a&&a.constructor==Array&&3==a.length?a:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(a))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(a))?[2.55*parseFloat(c[1]),2.55*parseFloat(c[2]),2.55*parseFloat(c[3])]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))?[parseInt(c[1],16),parseInt(c[2], +16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(a))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:/rgba\(0, 0, 0, 0\)/.exec(a)?i.transparent:i[b.trim(a).toLowerCase()]}function d(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]])for(var e=a.length;e--;)c=a[e],"string"==typeof a[c]&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c]);else for(c in a)"string"=== +typeof a[c]&&(b[c]=a[c]);return b}function g(a){var c,d;for(c in a)d=a[c],(null==d||b.isFunction(d)||c in k||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete a[c];return a}function h(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function e(a,c,d,e){"object"==typeof a&&(e=c,d=null,c=a,a=c.effect);b.isFunction(c)&&(e=c,d=null,c={});if("number"==typeof c||b.fx.speeds[c])e=d,d=c,c={};b.isFunction(d)&&(e=d,d=null);c=c||{};d=d||c.duration;d=b.fx.off?0:"number"==typeof d? +d:d in b.fx.speeds?b.fx.speeds[d]:b.fx.speeds._default;e=e||c.complete;return[a,c,d,e]}function f(a){return!a||("number"===typeof a||b.fx.speeds[a])||"string"===typeof a&&!b.effects[a]?!0:!1}b.effects={};b.each("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor borderColor color outlineColor".split(" "),function(a,d){b.fx.step[d]=function(a){if(!a.colorInit){var e;e=a.elem;var f=d,g;do{g=b.curCSS(e,f);if(g!=""&&g!="transparent"||b.nodeName(e,"body"))break;f="backgroundColor"}while(e= +e.parentNode);e=c(g);a.start=e;a.end=c(a.end);a.colorInit=true}a.elem.style[d]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var i={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139], +darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255], +maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},j=["add","remove","toggle"],k={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};b.effects.animateClass=function(a,c,e,f){b.isFunction(e)&&(f=e,e=null);return this.queue(function(){var i=b(this),o=i.attr("style")|| +" ",k=g(d.call(this)),r,u=i.attr("class");b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});r=g(d.call(this));i.attr("class",u);i.animate(h(k,r),{queue:false,duration:c,easing:e,complete:function(){b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});if(typeof i.attr("style")=="object"){i.attr("style").cssText="";i.attr("style").cssText=o}else i.attr("style",o);f&&f.apply(this,arguments);b.dequeue(this)}})})};b.fn.extend({_addClass:b.fn.addClass,addClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this, +[{add:a},c,d,e]):this._addClass(a)},_removeClass:b.fn.removeClass,removeClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this,[{remove:a},c,d,e]):this._removeClass(a)},_toggleClass:b.fn.toggleClass,toggleClass:function(c,d,e,f,g){return"boolean"==typeof d||d===a?e?b.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):b.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(a,c,d,e,f){return b.effects.animateClass.apply(this,[{add:c, +remove:a},d,e,f])}});b.extend(b.effects,{version:"1.8.14",save:function(a,b){for(var c=0;c").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});a.wrap(d);d=a.parent();"static"==a.css("position")?(d.css({position:"relative"}),a.css({position:"relative"})): +(b.extend(c,{position:a.css("position"),zIndex:a.css("z-index")}),b.each(["top","left","bottom","right"],function(b,d){c[d]=a.css(d);isNaN(parseInt(c[d],10))&&(c[d]="auto")}),a.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(a){return a.parent().is(".ui-effects-wrapper")?a.parent().replaceWith(a):a},setTransition:function(a,c,d,e){e=e||{};b.each(c,function(b,c){unit=a.cssUnit(c);0(b/=e/2)?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c}, +easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/ +e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:1>(b/=e/2)?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)* +b)+c},easeInOutCirc:function(a,b,c,d,e){return 1>(b/=e/2)?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var a=1.70158,f=0,g=d;if(0==b)return c;if(1==(b/=e))return c+d;f||(f=0.3*e);gb?-0.5*g*Math.pow(2,10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+c:0.5*g*Math.pow(2,-10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+d+c},easeInBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(b,c,d,e, +f,g){g==a&&(g=1.70158);return e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return 1>(c/=f/2)?e/2*c*c*(((g*=1.525)+1)*c-g)+d:e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(a,c,d,e,f){return e-b.easing.easeOutBounce(a,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+0.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+0.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+0.984375)+c},easeInOutBounce:function(a, +c,d,e,f){return c").css({position:"absolute",visibility:"visible",left:-j*(e/d),top:-i*(f/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:e/d,height:f/c,left:h.left+j*(e/d)+("show"==a.options.mode?(j-Math.floor(d/2))*(e/d):0),top:h.top+i*(f/c)+("show"==a.options.mode?(i-Math.floor(c/2))*(f/c):0),opacity:"show"==a.options.mode?0:1}).animate({left:h.left+j*(e/d)+("show"==a.options.mode?0:(j-Math.floor(d/2))*(e/d)),top:h.top+ +i*(f/c)+("show"==a.options.mode?0:(i-Math.floor(c/2))*(f/c)),opacity:"show"==a.options.mode?1:0},a.duration||500);setTimeout(function(){"show"==a.options.mode?g.css({visibility:"visible"}):g.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(g[0]);g.dequeue();b("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(b){b.effects.fold=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.size||15,e=!!a.options.horizFirst,f=a.duration?a.duration/2:b.fx.speeds._default/2;b.effects.save(c,d);c.show();var i=b.effects.createWrapper(c).css({overflow:"hidden"}),j="show"==g!=e,k=j?["width","height"]:["height","width"],j=j?[i.width(),i.height()]:[i.height(),i.width()],l=/([0-9]+)%/.exec(h);l&&(h=parseInt(l[1], +10)/100*j["hide"==g?0:1]);"show"==g&&i.css(e?{height:0,width:h}:{height:h,width:0});e={};l={};e[k[0]]="show"==g?j[0]:h;l[k[1]]="show"==g?j[1]:0;i.animate(e,f,a.options.easing).animate(l,f,a.options.easing,function(){"hide"==g&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +(function(b){b.effects.highlight=function(a){return this.queue(function(){var c=b(this),d=["backgroundImage","backgroundColor","opacity"],g=b.effects.setMode(c,a.options.mode||"show"),h={backgroundColor:c.css("backgroundColor")};"hide"==g&&(h.opacity=0);b.effects.save(c,d);c.show().css({backgroundImage:"none",backgroundColor:a.options.color||"#ffff99"}).animate(h,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){g=="hide"&&c.hide();b.effects.restore(c,d);g=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(b){b.effects.pulsate=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"show");times=2*(a.options.times||5)-1;duration=a.duration?a.duration/2:b.fx.speeds._default/2;isVisible=c.is(":visible");animateTo=0;isVisible||(c.css("opacity",0).show(),animateTo=1);("hide"==d&&isVisible||"show"==d&&!isVisible)&×--;for(d=0;d').appendTo(document.body).addClass(a.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(d,a.duration,a.options.easing,function(){h.remove();a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +/* + * jQuery Highlight plugin + * Based on highlight v3 by Johann Burkard + * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html + * Copyright (c) 2009 Bartek Szopka http://bartaz.github.com/sandbox.js/jquery.highlight.html + * Licensed under MIT license. + */ +jQuery.extend({highlight:function(a,c,b,e){if(a.nodeType===3){if(c=a.data.match(c)){b=document.createElement(b||"span");b.className=e||"highlight";a=a.splitText(c.index);a.splitText(c[0].length);e=a.cloneNode(true);b.appendChild(e);a.parentNode.replaceChild(b,a);return 1}}else if(a.nodeType===1&&a.childNodes&&!/(script|style)/i.test(a.tagName)&&!(a.tagName===b.toUpperCase()&&a.className===e))for(var d=0;d').appendTo("body"); + var d = { width: $c.width() - $c[0].clientWidth, height: $c.height() - $c[0].clientHeight }; + $c.remove(); + window.scrollbarWidth = d.width; + window.scrollbarHeight = d.height; + return dim.match(/^(width|height)$/) ? d[dim] : d; + } + + + /** + * Returns hash container 'display' and 'visibility' + * + * @see $.swap() - swaps CSS, runs callback, resets CSS + */ +, showInvisibly: function ($E, force) { + if (!$E) return {}; + if (!$E.jquery) $E = $($E); + var CSS = { + display: $E.css('display') + , visibility: $E.css('visibility') + }; + if (force || CSS.display === "none") { // only if not *already hidden* + $E.css({ display: "block", visibility: "hidden" }); // show element 'invisibly' so can be measured + return CSS; + } + else return {}; + } + + /** + * Returns data for setting size of an element (container or a pane). + * + * @see _create(), onWindowResize() for container, plus others for pane + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, outerWidth, innerHeight, etc + */ +, getElementDimensions: function ($E) { + var + d = {} // dimensions hash + , x = d.css = {} // CSS hash + , i = {} // TEMP insets + , b, p // TEMP border, padding + , N = $.layout.cssNum + , off = $E.offset() + ; + d.offsetLeft = off.left; + d.offsetTop = off.top; + + $.each("Left,Right,Top,Bottom".split(","), function (idx, e) { // e = edge + b = x["border" + e] = $.layout.borderWidth($E, e); + p = x["padding"+ e] = $.layout.cssNum($E, "padding"+e); + i[e] = b + p; // total offset of content from outer side + d["inset"+ e] = p; + }); + + d.offsetWidth = $E.innerWidth(); // offsetWidth is used in calc when doing manual resize + d.offsetHeight = $E.innerHeight(); // ditto + d.outerWidth = $E.outerWidth(); + d.outerHeight = $E.outerHeight(); + d.innerWidth = max(0, d.outerWidth - i.Left - i.Right); + d.innerHeight = max(0, d.outerHeight - i.Top - i.Bottom); + + x.width = $E.width(); + x.height = $E.height(); + x.top = N($E,"top",true); + x.bottom = N($E,"bottom",true); + x.left = N($E,"left",true); + x.right = N($E,"right",true); + + //d.visible = $E.is(":visible");// && x.width > 0 && x.height > 0; + + return d; + } + +, getElementCSS: function ($E, list) { + var + CSS = {} + , style = $E[0].style + , props = list.split(",") + , sides = "Top,Bottom,Left,Right".split(",") + , attrs = "Color,Style,Width".split(",") + , p, s, a, i, j, k + ; + for (i=0; i < props.length; i++) { + p = props[i]; + if (p.match(/(border|padding|margin)$/)) + for (j=0; j < 4; j++) { + s = sides[j]; + if (p === "border") + for (k=0; k < 3; k++) { + a = attrs[k]; + CSS[p+s+a] = style[p+s+a]; + } + else + CSS[p+s] = style[p+s]; + } + else + CSS[p] = style[p]; + }; + return CSS + } + + /** + * Return the innerWidth for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerWidth (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerWidth of the elem by subtracting padding and borders + */ +, cssWidth: function ($E, outerWidth) { + var + b = $.layout.borderWidth + , n = $.layout.cssNum + ; + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerWidth <= 0) return 0; + + if (!$.support.boxModel) return outerWidth; + + // strip border and padding from outerWidth to get CSS Width + var W = outerWidth + - b($E, "Left") + - b($E, "Right") + - n($E, "paddingLeft") + - n($E, "paddingRight") + ; + + return max(0,W); + } + + /** + * Return the innerHeight for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerHeight (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerHeight of the elem by subtracting padding and borders + */ +, cssHeight: function ($E, outerHeight) { + var + b = $.layout.borderWidth + , n = $.layout.cssNum + ; + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerHeight <= 0) return 0; + + if (!$.support.boxModel) return outerHeight; + + // strip border and padding from outerHeight to get CSS Height + var H = outerHeight + - b($E, "Top") + - b($E, "Bottom") + - n($E, "paddingTop") + - n($E, "paddingBottom") + ; + + return max(0,H); + } + + /** + * Returns the 'current CSS numeric value' for a CSS property - 0 if property does not exist + * + * @see Called by many methods + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {string} prop The name of the CSS property, eg: top, width, etc. + * @param {boolean=} [allowAuto=false] true = return 'auto' if that is value; false = return 0 + * @return {(string|number)} Usually used to get an integer value for position (top, left) or size (height, width) + */ +, cssNum: function ($E, prop, allowAuto) { + if (!$E.jquery) $E = $($E); + var CSS = $.layout.showInvisibly($E) + , p = $.curCSS($E[0], prop, true) + , v = allowAuto && p=="auto" ? p : (parseInt(p, 10) || 0); + $E.css( CSS ); // RESET + return v; + } + +, borderWidth: function (el, side) { + if (el.jquery) el = el[0]; + var b = "border"+ side.substr(0,1).toUpperCase() + side.substr(1); // left => Left + return $.curCSS(el, b+"Style", true) === "none" ? 0 : (parseInt($.curCSS(el, b+"Width", true), 10) || 0); + } + + /** + * Mouse-tracking utility - FUTURE REFERENCE + * + * init: if (!window.mouse) { + * window.mouse = { x: 0, y: 0 }; + * $(document).mousemove( $.layout.trackMouse ); + * } + * + * @param {Object} evt + * +, trackMouse: function (evt) { + window.mouse = { x: evt.clientX, y: evt.clientY }; + } + */ + + /** + * SUBROUTINE for preventPrematureSlideClose option + * + * @param {Object} evt + * @param {Object=} el + */ +, isMouseOverElem: function (evt, el) { + var + $E = $(el || this) + , d = $E.offset() + , T = d.top + , L = d.left + , R = L + $E.outerWidth() + , B = T + $E.outerHeight() + , x = evt.pageX // evt.clientX ? + , y = evt.pageY // evt.clientY ? + ; + // if X & Y are < 0, probably means is over an open SELECT + return ($.layout.browser.msie && x < 0 && y < 0) || ((x >= L && x <= R) && (y >= T && y <= B)); + } + + /** + * Message/Logging Utility + * + * @example $.layout.msg("My message"); // log text + * @example $.layout.msg("My message", true); // alert text + * @example $.layout.msg({ foo: "bar" }, "Title"); // log hash-data, with custom title + * @example $.layout.msg({ foo: "bar" }, true, "Title", { sort: false }); -OR- + * @example $.layout.msg({ foo: "bar" }, "Title", { sort: false, display: true }); // alert hash-data + * + * @param {(Object|string)} info String message OR Hash/Array + * @param {(Boolean|string|Object)=} [popup=false] True means alert-box - can be skipped + * @param {(Object|string)=} [debugTitle=""] Title for Hash data - can be skipped + * @param {Object=} [debutOpts={}] Extra options for debug output + */ +, msg: function (info, popup, debugTitle, debugOpts) { + if ($.isPlainObject(info) && window.debugData) { + if (typeof popup === "string") { + debugOpts = debugTitle; + debugTitle = popup; + } + else if (typeof debugTitle === "object") { + debugOpts = debugTitle; + debugTitle = null; + } + var t = debugTitle || "log( )" + , o = $.extend({ sort: false, returnHTML: false, display: false }, debugOpts); + if (popup === true || o.display) + debugData( info, t, o ); + else if (window.console) + console.log(debugData( info, t, o )); + } + else if (popup) + alert(info); + else if (window.console) + console.log(info); + else { + var id = "#layoutLogger" + , $l = $(id); + if (!$l.length) + $l = createLog(); + $l.children("ul").append('
  • '+ info.replace(/\/g,">") +'
  • '); + } + + function createLog () { + var pos = $.support.fixedPosition ? 'fixed' : 'absolute' + , $e = $('
    ' + + '
    ' + + 'XLayout console.log
    ' + + '
      ' + + '
      ' + ).appendTo("body"); + $e.css('left', $(window).width() - $e.outerWidth() - 5) + if ($.ui.draggable) $e.draggable({ handle: ':first-child' }); + return $e; + }; + } + +}; + +var lang = $.layout.language; // alias used in defaults... + +// DEFAULT OPTIONS - CHANGE IF DESIRED +$.layout.defaults = { +/* + * LAYOUT & LAYOUT-CONTAINER OPTIONS + * - none of these options are applicable to individual panes + */ + name: "" // Not required, but useful for buttons and used for the state-cookie +, containerSelector: "" // ONLY used when specifying a childOptions - to find container-element that is NOT directly-nested +, containerClass: "ui-layout-container" // layout-container element +, scrollToBookmarkOnLoad: true // after creating a layout, scroll to bookmark in URL (.../page.htm#myBookmark) +, resizeWithWindow: true // bind thisLayout.resizeAll() to the window.resize event +, resizeWithWindowDelay: 200 // delay calling resizeAll because makes window resizing very jerky +, resizeWithWindowMaxDelay: 0 // 0 = none - force resize every XX ms while window is being resized +, onresizeall_start: null // CALLBACK when resizeAll() STARTS - NOT pane-specific +, onresizeall_end: null // CALLBACK when resizeAll() ENDS - NOT pane-specific +, onload_start: null // CALLBACK when Layout inits - after options initialized, but before elements +, onload_end: null // CALLBACK when Layout inits - after EVERYTHING has been initialized +, onunload_start: null // CALLBACK when Layout is destroyed OR onWindowUnload +, onunload_end: null // CALLBACK when Layout is destroyed OR onWindowUnload +, autoBindCustomButtons: false // search for buttons with ui-layout-button class and auto-bind them +, initPanes: true // false = DO NOT initialize the panes onLoad - will init later +, showErrorMessages: true // enables fatal error messages to warn developers of common errors +, showDebugMessages: false // display console-and-alert debug msgs - IF this Layout version _has_ debugging code! +// Changing this zIndex value will cause other zIndex values to automatically change +, zIndex: null // the PANE zIndex - resizers and masks will be +1 +// DO NOT CHANGE the zIndex values below unless you clearly understand their relationships +, zIndexes: { // set _default_ z-index values here... + pane_normal: 0 // normal z-index for panes + , content_mask: 1 // applied to overlays used to mask content INSIDE panes during resizing + , resizer_normal: 2 // normal z-index for resizer-bars + , pane_sliding: 100 // applied to *BOTH* the pane and its resizer when a pane is 'slid open' + , pane_animate: 1000 // applied to the pane when being animated - not applied to the resizer + , resizer_drag: 10000 // applied to the CLONED resizer-bar when being 'dragged' + } +/* + * PANE DEFAULT SETTINGS + * - settings under the 'panes' key become the default settings for *all panes* + * - ALL pane-options can also be set specifically for each panes, which will override these 'default values' + */ +, panes: { // default options for 'all panes' - will be overridden by 'per-pane settings' + applyDemoStyles: false // NOTE: renamed from applyDefaultStyles for clarity + , closable: true // pane can open & close + , resizable: true // when open, pane can be resized + , slidable: true // when closed, pane can 'slide open' over other panes - closes on mouse-out + , initClosed: false // true = init pane as 'closed' + , initHidden: false // true = init pane as 'hidden' - no resizer-bar/spacing + // SELECTORS + //, paneSelector: "" // MUST be pane-specific - jQuery selector for pane + , contentSelector: ".ui-layout-content" // INNER div/element to auto-size so only it scrolls, not the entire pane! + , contentIgnoreSelector: ".ui-layout-ignore" // element(s) to 'ignore' when measuring 'content' + , findNestedContent: false // true = $P.find(contentSelector), false = $P.children(contentSelector) + // GENERIC ROOT-CLASSES - for auto-generated classNames + , paneClass: "ui-layout-pane" // Layout Pane + , resizerClass: "ui-layout-resizer" // Resizer Bar + , togglerClass: "ui-layout-toggler" // Toggler Button + , buttonClass: "ui-layout-button" // CUSTOM Buttons - eg: '[ui-layout-button]-toggle/-open/-close/-pin' + // ELEMENT SIZE & SPACING + //, size: 100 // MUST be pane-specific -initial size of pane + , minSize: 0 // when manually resizing a pane + , maxSize: 0 // ditto, 0 = no limit + , spacing_open: 6 // space between pane and adjacent panes - when pane is 'open' + , spacing_closed: 6 // ditto - when pane is 'closed' + , togglerLength_open: 50 // Length = WIDTH of toggler button on north/south sides - HEIGHT on east/west sides + , togglerLength_closed: 50 // 100% OR -1 means 'full height/width of resizer bar' - 0 means 'hidden' + , togglerAlign_open: "center" // top/left, bottom/right, center, OR... + , togglerAlign_closed: "center" // 1 => nn = offset from top/left, -1 => -nn == offset from bottom/right + , togglerTip_open: lang.Close // Toggler tool-tip (title) + , togglerTip_closed: lang.Open // ditto + , togglerContent_open: "" // text or HTML to put INSIDE the toggler + , togglerContent_closed: "" // ditto + // RESIZING OPTIONS + , resizerDblClickToggle: true // + , autoResize: true // IF size is 'auto' or a percentage, then recalc 'pixel size' whenever the layout resizes + , autoReopen: true // IF a pane was auto-closed due to noRoom, reopen it when there is room? False = leave it closed + , resizerDragOpacity: 1 // option for ui.draggable + //, resizerCursor: "" // MUST be pane-specific - cursor when over resizer-bar + , maskContents: false // true = add DIV-mask over-or-inside this pane so can 'drag' over IFRAMES + , maskObjects: false // true = add IFRAME-mask over-or-inside this pane to cover objects/applets - content-mask will overlay this mask + , maskZindex: null // will override zIndexes.content_mask if specified - not applicable to iframe-panes + , resizingGrid: false // grid size that the resizers will snap-to during resizing, eg: [20,20] + , livePaneResizing: false // true = LIVE Resizing as resizer is dragged + , liveContentResizing: false // true = re-measure header/footer heights as resizer is dragged + , liveResizingTolerance: 1 // how many px change before pane resizes, to control performance + // TIPS & MESSAGES - also see lang object + , noRoomToOpenTip: lang.noRoomToOpenTip + , resizerTip: lang.Resize // Resizer tool-tip (title) + , sliderTip: lang.Slide // resizer-bar triggers 'sliding' when pane is closed + , sliderCursor: "pointer" // cursor when resizer-bar will trigger 'sliding' + , slideTrigger_open: "click" // click, dblclick, mouseenter + , slideTrigger_close: "mouseleave"// click, mouseleave + , slideDelay_open: 300 // applies only for mouseenter event - 0 = instant open + , slideDelay_close: 300 // applies only for mouseleave event (300ms is the minimum!) + , hideTogglerOnSlide: false // when pane is slid-open, should the toggler show? + , preventQuickSlideClose: $.layout.browser.webkit // Chrome triggers slideClosed as it is opening + , preventPrematureSlideClose: false // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + // HOT-KEYS & MISC + , showOverflowOnHover: false // will bind allowOverflow() utility to pane.onMouseOver + , enableCursorHotkey: true // enabled 'cursor' hotkeys + //, customHotkey: "" // MUST be pane-specific - EITHER a charCode OR a character + , customHotkeyModifier: "SHIFT" // either 'SHIFT', 'CTRL' or 'CTRL+SHIFT' - NOT 'ALT' + // PANE ANIMATION + // NOTE: fxSss_open, fxSss_close & fxSss_size options (eg: fxName_open) are auto-generated if not passed + , fxName: "slide" // ('none' or blank), slide, drop, scale -- only relevant to 'open' & 'close', NOT 'size' + , fxSpeed: null // slow, normal, fast, 200, nnn - if passed, will OVERRIDE fxSettings.duration + , fxSettings: {} // can be passed, eg: { easing: "easeOutBounce", duration: 1500 } + , fxOpacityFix: true // tries to fix opacity in IE to restore anti-aliasing after animation + , animatePaneSizing: false // true = animate resizing after dragging resizer-bar OR sizePane() is called + /* NOTE: Action-specific FX options are auto-generated from the options above if not specifically set: + fxName_open: "slide" // 'Open' pane animation + fnName_close: "slide" // 'Close' pane animation + fxName_size: "slide" // 'Size' pane animation - when animatePaneSizing = true + fxSpeed_open: null + fxSpeed_close: null + fxSpeed_size: null + fxSettings_open: {} + fxSettings_close: {} + fxSettings_size: {} + */ + // CHILD/NESTED LAYOUTS + , childOptions: null // Layout-options for nested/child layout - even {} is valid as options + , initChildLayout: true // true = child layout will be created as soon as _this_ layout completes initialization + , destroyChildLayout: true // true = destroy child-layout if this pane is destroyed + , resizeChildLayout: true // true = trigger child-layout.resizeAll() when this pane is resized + // PANE CALLBACKS + , triggerEventsOnLoad: false // true = trigger onopen OR onclose callbacks when layout initializes + , triggerEventsDuringLiveResize: true // true = trigger onresize callback REPEATEDLY if livePaneResizing==true + , onshow_start: null // CALLBACK when pane STARTS to Show - BEFORE onopen/onhide_start + , onshow_end: null // CALLBACK when pane ENDS being Shown - AFTER onopen/onhide_end + , onhide_start: null // CALLBACK when pane STARTS to Close - BEFORE onclose_start + , onhide_end: null // CALLBACK when pane ENDS being Closed - AFTER onclose_end + , onopen_start: null // CALLBACK when pane STARTS to Open + , onopen_end: null // CALLBACK when pane ENDS being Opened + , onclose_start: null // CALLBACK when pane STARTS to Close + , onclose_end: null // CALLBACK when pane ENDS being Closed + , onresize_start: null // CALLBACK when pane STARTS being Resized ***FOR ANY REASON*** + , onresize_end: null // CALLBACK when pane ENDS being Resized ***FOR ANY REASON*** + , onsizecontent_start: null // CALLBACK when sizing of content-element STARTS + , onsizecontent_end: null // CALLBACK when sizing of content-element ENDS + , onswap_start: null // CALLBACK when pane STARTS to Swap + , onswap_end: null // CALLBACK when pane ENDS being Swapped + , ondrag_start: null // CALLBACK when pane STARTS being ***MANUALLY*** Resized + , ondrag_end: null // CALLBACK when pane ENDS being ***MANUALLY*** Resized + } +/* + * PANE-SPECIFIC SETTINGS + * - options listed below MUST be specified per-pane - they CANNOT be set under 'panes' + * - all options under the 'panes' key can also be set specifically for any pane + * - most options under the 'panes' key apply only to 'border-panes' - NOT the the center-pane + */ +, north: { + paneSelector: ".ui-layout-north" + , size: "auto" // eg: "auto", "30%", .30, 200 + , resizerCursor: "n-resize" // custom = url(myCursor.cur) + , customHotkey: "" // EITHER a charCode (43) OR a character ("o") + } +, south: { + paneSelector: ".ui-layout-south" + , size: "auto" + , resizerCursor: "s-resize" + , customHotkey: "" + } +, east: { + paneSelector: ".ui-layout-east" + , size: 200 + , resizerCursor: "e-resize" + , customHotkey: "" + } +, west: { + paneSelector: ".ui-layout-west" + , size: 200 + , resizerCursor: "w-resize" + , customHotkey: "" + } +, center: { + paneSelector: ".ui-layout-center" + , minWidth: 0 + , minHeight: 0 + } +}; + +$.layout.optionsMap = { + // layout/global options - NOT pane-options + layout: ("stateManagement,effects,zIndexes," + + "name,zIndex,scrollToBookmarkOnLoad,showErrorMessages," + + "resizeWithWindow,resizeWithWindowDelay,resizeWithWindowMaxDelay," + + "onresizeall,onresizeall_start,onresizeall_end,onload,onunload,autoBindCustomButtons").split(",") +// borderPanes: [ ALL options that are NOT specified as 'layout' ] + // default.panes options that apply to the center-pane (most options apply _only_ to border-panes) +, center: ("paneClass,contentSelector,contentIgnoreSelector,findNestedContent,applyDemoStyles,triggerEventsOnLoad," + + "showOverflowOnHover,maskContents,maskObjects,liveContentResizing," + + "childOptions,initChildLayout,resizeChildLayout,destroyChildLayout," + + "onresize,onresize_start,onresize_end,onsizecontent,onsizecontent_start,onsizecontent_end").split(",") + // options that MUST be specifically set 'per-pane' - CANNOT set in the panes (defaults) key +, noDefault: ("paneSelector,resizerCursor,customHotkey").split(",") +}; + +/** + * Processes options passed in converts flat-format data into subkey (JSON) format + * In flat-format, subkeys are _currently_ separated with 2 underscores, like north__optName + * Plugins may also call this method so they can transform their own data + * + * @param {!Object} hash Data/options passed by user - may be a single level or nested levels + * @return {Object} Returns hash of minWidth & minHeight + */ +$.layout.transformData = function (hash) { + var json = { panes: {}, center: {} } // init return object + , data, branch, optKey, keys, key, val, i, c; + + if (typeof hash !== "object") return json; // no options passed + + // convert all 'flat-keys' to 'sub-key' format + for (optKey in hash) { + branch = json; + data = $.layout.optionsMap.layout; + val = hash[ optKey ]; + keys = optKey.split("__"); // eg: west__size or north__fxSettings__duration + c = keys.length - 1; + // convert underscore-delimited to subkeys + for (i=0; i <= c; i++) { + key = keys[i]; + if (i === c) + branch[key] = val; + else if (!branch[key]) + branch[key] = {}; // create the subkey + // recurse to sub-key for next loop - if not done + branch = branch[key]; + } + } + + return json; +} + +// INTERNAL CONFIG DATA - DO NOT CHANGE THIS! +$.layout.backwardCompatibility = { + // data used by renameOldOptions() + map: { + // OLD Option Name: NEW Option Name + applyDefaultStyles: "applyDemoStyles" + , resizeNestedLayout: "resizeChildLayout" + , resizeWhileDragging: "livePaneResizing" + , resizeContentWhileDragging: "liveContentResizing" + , triggerEventsWhileDragging: "triggerEventsDuringLiveResize" + , maskIframesOnResize: "maskContents" + , useStateCookie: "stateManagement.enabled" + , "cookie.autoLoad": "stateManagement.autoLoad" + , "cookie.autoSave": "stateManagement.autoSave" + , "cookie.keys": "stateManagement.stateKeys" + , "cookie.name": "stateManagement.cookie.name" + , "cookie.domain": "stateManagement.cookie.domain" + , "cookie.path": "stateManagement.cookie.path" + , "cookie.expires": "stateManagement.cookie.expires" + , "cookie.secure": "stateManagement.cookie.secure" + } + /** + * @param {Object} opts + */ +, renameOptions: function (opts) { + var map = $.layout.backwardCompatibility.map + , oldData, newData, value + ; + for (var itemPath in map) { + oldData = getBranch( itemPath ); + value = oldData.branch[ oldData.key ] + if (value !== undefined) { + newData = getBranch( map[itemPath], true ) + newData.branch[ newData.key ] = value; + delete oldData.branch[ oldData.key ]; + } + } + + /** + * @param {string} path + * @param {boolean=} [create=false] Create path if does not exist + */ + function getBranch (path, create) { + var a = path.split(".") // split keys into array + , c = a.length - 1 + , D = { branch: opts, key: a[c] } // init branch at top & set key (last item) + , i = 0, k, undef; + for (; i 0) { + if (autoHide && $E.data('autoHidden') && $E.innerHeight() > 0) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + // make hidden, then visible to 'refresh' display after animation + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerHeight + * @param {boolean=} [autoHide=false] + */ +, setOuterHeight = function (el, outerHeight, autoHide) { + var $E = el, h; + if (isStr(el)) $E = $Ps[el]; // west + else if (!el.jquery) $E = $(el); + h = cssH($E, outerHeight); + $E.css({ height: h, visibility: "visible" }); // may have been 'hidden' by sizeContent + if (h > 0 && $E.innerWidth() > 0) { + if (autoHide && $E.data('autoHidden')) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerSize + * @param {boolean=} [autoHide=false] + */ +, setOuterSize = function (el, outerSize, autoHide) { + if (_c[pane].dir=="horz") // pane = north or south + setOuterHeight(el, outerSize, autoHide); + else // pane = east or west + setOuterWidth(el, outerSize, autoHide); + } + + + /** + * Converts any 'size' params to a pixel/integer size, if not already + * If 'auto' or a decimal/percentage is passed as 'size', a pixel-size is calculated + * + /** + * @param {string} pane + * @param {(string|number)=} size + * @param {string=} [dir] + * @return {number} + */ +, _parseSize = function (pane, size, dir) { + if (!dir) dir = _c[pane].dir; + + if (isStr(size) && size.match(/%/)) + size = (size === '100%') ? -1 : parseInt(size, 10) / 100; // convert % to decimal + + if (size === 0) + return 0; + else if (size >= 1) + return parseInt(size, 10); + + var o = options, avail = 0; + if (dir=="horz") // north or south or center.minHeight + avail = sC.innerHeight - ($Ps.north ? o.north.spacing_open : 0) - ($Ps.south ? o.south.spacing_open : 0); + else if (dir=="vert") // east or west or center.minWidth + avail = sC.innerWidth - ($Ps.west ? o.west.spacing_open : 0) - ($Ps.east ? o.east.spacing_open : 0); + + if (size === -1) // -1 == 100% + return avail; + else if (size > 0) // percentage, eg: .25 + return round(avail * size); + else if (pane=="center") + return 0; + else { // size < 0 || size=='auto' || size==Missing || size==Invalid + // auto-size the pane + var dim = (dir === "horz" ? "height" : "width") + , $P = $Ps[pane] + , $C = dim === 'height' ? $Cs[pane] : false + , vis = $.layout.showInvisibly($P) // show pane invisibly if hidden + , szP = $P.css(dim) // SAVE current pane size + , szC = $C ? $C.css(dim) : 0 // SAVE current content size + ; + $P.css(dim, "auto"); + if ($C) $C.css(dim, "auto"); + size = (dim === "height") ? $P.outerHeight() : $P.outerWidth(); // MEASURE + $P.css(dim, szP).css(vis); // RESET size & visibility + if ($C) $C.css(dim, szC); + return size; + } + } + + /** + * Calculates current 'size' (outer-width or outer-height) of a border-pane - optionally with 'pane-spacing' added + * + * @param {(string|!Object)} pane + * @param {boolean=} [inclSpace=false] + * @return {number} Returns EITHER Width for east/west panes OR Height for north/south panes - adjusted for boxModel & browser + */ +, getPaneSize = function (pane, inclSpace) { + var + $P = $Ps[pane] + , o = options[pane] + , s = state[pane] + , oSp = (inclSpace ? o.spacing_open : 0) + , cSp = (inclSpace ? o.spacing_closed : 0) + ; + if (!$P || s.isHidden) + return 0; + else if (s.isClosed || (s.isSliding && inclSpace)) + return cSp; + else if (_c[pane].dir === "horz") + return $P.outerHeight() + oSp; + else // dir === "vert" + return $P.outerWidth() + oSp; + } + + /** + * Calculate min/max pane dimensions and limits for resizing + * + * @param {string} pane + * @param {boolean=} [slide=false] + */ +, setSizeLimits = function (pane, slide) { + if (!isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , dir = c.dir + , side = c.side.toLowerCase() + , type = c.sizeType.toLowerCase() + , isSliding = (slide != undefined ? slide : s.isSliding) // only open() passes 'slide' param + , $P = $Ps[pane] + , paneSpacing = o.spacing_open + // measure the pane on the *opposite side* from this pane + , altPane = _c.oppositeEdge[pane] + , altS = state[altPane] + , $altP = $Ps[altPane] + , altPaneSize = (!$altP || altS.isVisible===false || altS.isSliding ? 0 : (dir=="horz" ? $altP.outerHeight() : $altP.outerWidth())) + , altPaneSpacing = ((!$altP || altS.isHidden ? 0 : options[altPane][ altS.isClosed !== false ? "spacing_closed" : "spacing_open" ]) || 0) + // limitSize prevents this pane from 'overlapping' opposite pane + , containerSize = (dir=="horz" ? sC.innerHeight : sC.innerWidth) + , minCenterDims = cssMinDims("center") + , minCenterSize = dir=="horz" ? max(options.center.minHeight, minCenterDims.minHeight) : max(options.center.minWidth, minCenterDims.minWidth) + // if pane is 'sliding', then ignore center and alt-pane sizes - because 'overlays' them + , limitSize = (containerSize - paneSpacing - (isSliding ? 0 : (_parseSize("center", minCenterSize, dir) + altPaneSize + altPaneSpacing))) + , minSize = s.minSize = max( _parseSize(pane, o.minSize), cssMinDims(pane).minSize ) + , maxSize = s.maxSize = min( (o.maxSize ? _parseSize(pane, o.maxSize) : 100000), limitSize ) + , r = s.resizerPosition = {} // used to set resizing limits + , top = sC.insetTop + , left = sC.insetLeft + , W = sC.innerWidth + , H = sC.innerHeight + , rW = o.spacing_open // subtract resizer-width to get top/left position for south/east + ; + switch (pane) { + case "north": r.min = top + minSize; + r.max = top + maxSize; + break; + case "west": r.min = left + minSize; + r.max = left + maxSize; + break; + case "south": r.min = top + H - maxSize - rW; + r.max = top + H - minSize - rW; + break; + case "east": r.min = left + W - maxSize - rW; + r.max = left + W - minSize - rW; + break; + }; + } + + /** + * Returns data for setting the size/position of center pane. Also used to set Height for east/west panes + * + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, (outer) width and (outer) height + */ +, calcNewCenterPaneDims = function () { + var d = { + top: getPaneSize("north", true) // true = include 'spacing' value for pane + , bottom: getPaneSize("south", true) + , left: getPaneSize("west", true) + , right: getPaneSize("east", true) + , width: 0 + , height: 0 + }; + + // NOTE: sC = state.container + // calc center-pane outer dimensions + d.width = sC.innerWidth - d.left - d.right; // outerWidth + d.height = sC.innerHeight - d.bottom - d.top; // outerHeight + // add the 'container border/padding' to get final positions relative to the container + d.top += sC.insetTop; + d.bottom += sC.insetBottom; + d.left += sC.insetLeft; + d.right += sC.insetRight; + + return d; + } + + + /** + * @param {!Object} el + * @param {boolean=} [allStates=false] + */ +, getHoverClasses = function (el, allStates) { + var + $El = $(el) + , type = $El.data("layoutRole") + , pane = $El.data("layoutEdge") + , o = options[pane] + , root = o[type +"Class"] + , _pane = "-"+ pane // eg: "-west" + , _open = "-open" + , _closed = "-closed" + , _slide = "-sliding" + , _hover = "-hover " // NOTE the trailing space + , _state = $El.hasClass(root+_closed) ? _closed : _open + , _alt = _state === _closed ? _open : _closed + , classes = (root+_hover) + (root+_pane+_hover) + (root+_state+_hover) + (root+_pane+_state+_hover) + ; + if (allStates) // when 'removing' classes, also remove alternate-state classes + classes += (root+_alt+_hover) + (root+_pane+_alt+_hover); + + if (type=="resizer" && $El.hasClass(root+_slide)) + classes += (root+_slide+_hover) + (root+_pane+_slide+_hover); + + return $.trim(classes); + } +, addHover = function (evt, el) { + var $E = $(el || this); + if (evt && $E.data("layoutRole") === "toggler") + evt.stopPropagation(); // prevent triggering 'slide' on Resizer-bar + $E.addClass( getHoverClasses($E) ); + } +, removeHover = function (evt, el) { + var $E = $(el || this); + $E.removeClass( getHoverClasses($E, true) ); + } + +, onResizerEnter = function (evt) { // ALSO called by toggler.mouseenter + if ($.fn.disableSelection) + $("body").disableSelection(); + } +, onResizerLeave = function (evt, el) { + var + e = el || this // el is only passed when called by the timer + , pane = $(e).data("layoutEdge") + , name = pane +"ResizerLeave" + ; + timer.clear(pane+"_openSlider"); // cancel slideOpen timer, if set + timer.clear(name); // cancel enableSelection timer - may re/set below + // this method calls itself on a timer because it needs to allow + // enough time for dragging to kick-in and set the isResizing flag + // dragging has a 100ms delay set, so this delay must be >100 + if (!el) // 1st call - mouseleave event + timer.set(name, function(){ onResizerLeave(evt, e); }, 200); + // if user is resizing, then dragStop will enableSelection(), so can skip it here + else if (!state[pane].isResizing && $.fn.enableSelection) // 2nd call - by timer + $("body").enableSelection(); + } + +/* + * ########################### + * INITIALIZATION METHODS + * ########################### + */ + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see none - triggered onInit + * @return mixed true = fully initialized | false = panes not initialized (yet) | 'cancel' = abort + */ +, _create = function () { + // initialize config/options + initOptions(); + var o = options; + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // init plugins for this layout, if there are any (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onCreate ); + + // options & state have been initialized, so now run beforeLoad callback + // onload will CANCEL layout creation if it returns false + if (false === _runCallbacks("onload_start")) + return 'cancel'; + + // initialize the container element + _initContainer(); + + // bind hotkey function - keyDown - if required + initHotkeys(); + + // bind window.onunload + $(window).bind("unload."+ sID, unload); + + // init plugins for this layout, if there are any (eg: customButtons) + runPluginCallbacks( Instance, $.layout.onLoad ); + + // if layout elements are hidden, then layout WILL NOT complete initialization! + // initLayoutElements will set initialized=true and run the onload callback IF successful + if (o.initPanes) _initLayoutElements(); + + delete state.creatingLayout; + + return state.initialized; + } + + /** + * Initialize the layout IF not already + * + * @see All methods in Instance run this test + * @return boolean true = layoutElements have been initialized | false = panes are not initialized (yet) + */ +, isInitialized = function () { + if (state.initialized || state.creatingLayout) return true; // already initialized + else return _initLayoutElements(); // try to init panes NOW + } + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see _create() & isInitialized + * @return An object pointer to the instance created + */ +, _initLayoutElements = function (retry) { + // initialize config/options + var o = options; + + // CANNOT init panes inside a hidden container! + if (!$N.is(":visible")) { + // handle Chrome bug where popup window 'has no height' + // if layout is BODY element, try again in 50ms + // SEE: http://layout.jquery-dev.net/samples/test_popup_window.html + if ( !retry && browser.webkit && $N[0].tagName === "BODY" ) + setTimeout(function(){ _initLayoutElements(true); }, 50); + return false; + } + + // a center pane is required, so make sure it exists + if (!getPane("center").length) { + if (options.showErrorMessages) + _log( lang.errCenterPaneMissing, true ); + return false; + } + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // update Container dims + $.extend(sC, elDims( $N )); + + // initialize all layout elements + initPanes(); // size & position panes - calls initHandles() - which calls initResizable() + + if (o.scrollToBookmarkOnLoad) { + var l = self.location; + if (l.hash) l.replace( l.hash ); // scrollTo Bookmark + } + + // check to see if this layout 'nested' inside a pane + if (Instance.hasParentLayout) + o.resizeWithWindow = false; + // bind resizeAll() for 'this layout instance' to window.resize event + else if (o.resizeWithWindow) + $(window).bind("resize."+ sID, windowResize); + + delete state.creatingLayout; + state.initialized = true; + + // init plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onReady ); + + // now run the onload callback, if exists + _runCallbacks("onload_end"); + + return true; // elements initialized successfully + } + + /** + * Initialize nested layouts - called when _initLayoutElements completes + * + * NOT CURRENTLY USED + * + * @see _initLayoutElements + * @return An object pointer to the instance created + */ +, _initChildLayouts = function () { + $.each(_c.allPanes, function (idx, pane) { + if (options[pane].initChildLayout) + createChildLayout( pane ); + }); + } + + /** + * Initialize nested layouts for a specific pane - can optionally pass layout-options + * + * @see _initChildLayouts + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {Object=} [opts] Layout-options - if passed, will OVERRRIDE options[pane].childOptions + * @return An object pointer to the layout instance created - or null + */ +, createChildLayout = function (evt_or_pane, opts) { + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , C = children + ; + if ($P) { + var $C = $Cs[pane] + , o = opts || options[pane].childOptions + , d = "layout" + // determine which element is supposed to be the 'child container' + // if pane has a 'containerSelector' OR a 'content-div', use those instead of the pane + , $Cont = o.containerSelector ? $P.find( o.containerSelector ) : ($C || $P) + , containerFound = $Cont.length + // see if a child-layout ALREADY exists on this element + , child = containerFound ? (C[pane] = $Cont.data(d) || null) : null + ; + // if no layout exists, but childOptions are set, try to create the layout now + if (!child && containerFound && o) + child = C[pane] = $Cont.eq(0).layout(o) || null; + if (child) + child.hasParentLayout = true; // set parent-flag in child + } + Instance[pane].child = C[pane]; // ALWAYS set pane-object pointer, even if null + } + +, windowResize = function () { + var delay = Number(options.resizeWithWindowDelay); + if (delay < 10) delay = 100; // MUST have a delay! + // resizing uses a delay-loop because the resize event fires repeatly - except in FF, but delay anyway + timer.clear("winResize"); // if already running + timer.set("winResize", function(){ + timer.clear("winResize"); + timer.clear("winResizeRepeater"); + var dims = elDims( $N ); + // only trigger resizeAll() if container has changed size + if (dims.innerWidth !== sC.innerWidth || dims.innerHeight !== sC.innerHeight) + resizeAll(); + }, delay); + // ALSO set fixed-delay timer, if not already running + if (!timer.data["winResizeRepeater"]) setWindowResizeRepeater(); + } + +, setWindowResizeRepeater = function () { + var delay = Number(options.resizeWithWindowMaxDelay); + if (delay > 0) + timer.set("winResizeRepeater", function(){ setWindowResizeRepeater(); resizeAll(); }, delay); + } + +, unload = function () { + var o = options; + + _runCallbacks("onunload_start"); + + // trigger plugin callabacks for this layout (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onUnload ); + + _runCallbacks("onunload_end"); + } + + /** + * Validate and initialize container CSS and events + * + * @see _create() + */ +, _initContainer = function () { + var + N = $N[0] + , tag = sC.tagName = N.tagName + , id = sC.id = N.id + , cls = sC.className = N.className + , o = options + , name = o.name + , fullPage= (tag === "BODY") + , props = "overflow,position,margin,padding,border" + , css = "layoutCSS" + , CSS = {} + , hid = "hidden" // used A LOT! + // see if this container is a 'pane' inside an outer-layout + , parent = $N.data("parentLayout") // parent-layout Instance + , pane = $N.data("layoutEdge") // pane-name in parent-layout + , isChild = parent && pane + ; + // sC -> state.container + sC.selector = $N.selector.split(".slice")[0]; + sC.ref = (o.name ? o.name +' layout / ' : '') + tag + (id ? "#"+id : cls ? '.['+cls+']' : ''); // used in messages + + $N .data({ + layout: Instance + , layoutContainer: sID // FLAG to indicate this is a layout-container - contains unique internal ID + }) + .addClass(o.containerClass) + ; + var layoutMethods = { + destroy: '' + , initPanes: '' + , resizeAll: 'resizeAll' + , resize: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in layoutMethods) { + $N.bind("layout"+ name.toLowerCase() +"."+ sID, Instance[ layoutMethods[name] || name ]); + } + + // if this container is another layout's 'pane', then set child/parent pointers + if (isChild) { + // update parent flag + Instance.hasParentLayout = true; + // set pointers to THIS child-layout (Instance) in parent-layout + // NOTE: parent.PANE.child is an ALIAS to parent.children.PANE + parent[pane].child = parent.children[pane] = $N.data("layout"); + } + + // SAVE original container CSS for use in destroy() + if (!$N.data(css)) { + // handle props like overflow different for BODY & HTML - has 'system default' values + if (fullPage) { + CSS = $.extend( elCSS($N, props), { + height: $N.css("height") + , overflow: $N.css("overflow") + , overflowX: $N.css("overflowX") + , overflowY: $N.css("overflowY") + }); + // ALSO SAVE CSS + var $H = $("html"); + $H.data(css, { + height: "auto" // FF would return a fixed px-size! + , overflow: $H.css("overflow") + , overflowX: $H.css("overflowX") + , overflowY: $H.css("overflowY") + }); + } + else // handle props normally for non-body elements + CSS = elCSS($N, props+",top,bottom,left,right,width,height,overflow,overflowX,overflowY"); + + $N.data(css, CSS); + } + + try { // format html/body if this is a full page layout + if (fullPage) { + $("html").css({ + height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + }); + $("body").css({ + position: "relative" + , height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + , margin: 0 + , padding: 0 // TODO: test whether body-padding could be handled? + , border: "none" // a body-border creates problems because it cannot be measured! + }); + + // set current layout-container dimensions + $.extend(sC, elDims( $N )); + } + else { // set required CSS for overflow and position + // ENSURE container will not 'scroll' + CSS = { overflow: hid, overflowX: hid, overflowY: hid } + var + p = $N.css("position") + , h = $N.css("height") + ; + // if this is a NESTED layout, then container/outer-pane ALREADY has position and height + if (!isChild) { + if (!p || !p.match(/fixed|absolute|relative/)) + CSS.position = "relative"; // container MUST have a 'position' + /* + if (!h || h=="auto") + CSS.height = "100%"; // container MUST have a 'height' + */ + } + $N.css( CSS ); + + // set current layout-container dimensions + if ( $N.is(":visible") ) { + $.extend(sC, elDims( $N )); + if (o.showErrorMessages && sC.innerHeight < 1) + _log( lang.errContainerHeight.replace(/CONTAINER/, sC.ref), true ); + } + } + } catch (ex) {} + } + + /** + * Bind layout hotkeys - if options enabled + * + * @see _create() and addPane() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHotkeys = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + // bind keyDown to capture hotkeys, if option enabled for ANY pane + $.each(panes, function (i, pane) { + var o = options[pane]; + if (o.enableCursorHotkey || o.customHotkey) { + $(document).bind("keydown."+ sID, keyDown); // only need to bind this ONCE + return false; // BREAK - binding was done + } + }); + } + + /** + * Build final OPTIONS data + * + * @see _create() + */ +, initOptions = function () { + var data, d, pane, key, val, i, c, o; + + // reprocess user's layout-options to have correct options sub-key structure + opts = $.layout.transformData( opts ); // panes = default subkey + + // auto-rename old options for backward compatibility + opts = $.layout.backwardCompatibility.renameAllOptions( opts ); + + // if user-options has 'panes' key (pane-defaults), process it... + if (!$.isEmptyObject(opts.panes)) { + // REMOVE any pane-defaults that MUST be set per-pane + data = $.layout.optionsMap.noDefault; + for (i=0, c=data.length; i 0) { + z.pane_normal = zo; + z.content_mask = max(zo+1, z.content_mask); // MIN = +1 + z.resizer_normal = max(zo+2, z.resizer_normal); // MIN = +2 + } + + function createFxOptions ( pane ) { + var o = options[pane] + , d = options.panes; + // ensure fxSettings key to avoid errors + if (!o.fxSettings) o.fxSettings = {}; + if (!d.fxSettings) d.fxSettings = {}; + + $.each(["_open","_close","_size"], function (i,n) { + var + sName = "fxName"+ n + , sSpeed = "fxSpeed"+ n + , sSettings = "fxSettings"+ n + // recalculate fxName according to specificity rules + , fxName = o[sName] = + o[sName] // options.west.fxName_open + || d[sName] // options.panes.fxName_open + || o.fxName // options.west.fxName + || d.fxName // options.panes.fxName + || "none" // MEANS $.layout.defaults.panes.fxName == "" || false || null || 0 + ; + // validate fxName to ensure is valid effect - MUST have effect-config data in options.effects + if (fxName === "none" || !$.effects || !$.effects[fxName] || !options.effects[fxName]) + fxName = o[sName] = "none"; // effect not loaded OR unrecognized fxName + + // set vars for effects subkeys to simplify logic + var fx = options.effects[fxName] || {} // effects.slide + , fx_all = fx.all || null // effects.slide.all + , fx_pane = fx[pane] || null // effects.slide.west + ; + // create fxSpeed[_open|_close|_size] + o[sSpeed] = + o[sSpeed] // options.west.fxSpeed_open + || d[sSpeed] // options.west.fxSpeed_open + || o.fxSpeed // options.west.fxSpeed + || d.fxSpeed // options.panes.fxSpeed + || null // DEFAULT - let fxSetting.duration control speed + ; + // create fxSettings[_open|_close|_size] + o[sSettings] = $.extend( + {} + , fx_all // effects.slide.all + , fx_pane // effects.slide.west + , d.fxSettings // options.panes.fxSettings + , o.fxSettings // options.west.fxSettings + , d[sSettings] // options.panes.fxSettings_open + , o[sSettings] // options.west.fxSettings_open + ); + }); + + // DONE creating action-specific-settings for this pane, + // so DELETE generic options - are no longer meaningful + delete o.fxName; + delete o.fxSpeed; + delete o.fxSettings; + } + + // DELETE 'panes' key now that we are done - values were copied to EACH pane + delete options.panes; + } + + /** + * Initialize module objects, styling, size and position for all panes + * + * @see _initElements() + * @param {string} pane The pane to process + */ +, getPane = function (pane) { + var sel = options[pane].paneSelector + if (sel.substr(0,1)==="#") // ID selector + // NOTE: elements selected 'by ID' DO NOT have to be 'children' + return $N.find(sel).eq(0); + else { // class or other selector + var $P = $N.children(sel).eq(0); + // look for the pane nested inside a 'form' element + return $P.length ? $P : $N.children("form:first").children(sel).eq(0); + } + } + +, initPanes = function () { + // NOTE: do north & south FIRST so we can measure their height - do center LAST + $.each(_c.allPanes, function (idx, pane) { + addPane( pane, true ); + }); + + // init the pane-handles NOW in case we have to hide or close the pane below + initHandles(); + + // now that all panes have been initialized and initially-sized, + // make sure there is really enough space available for each pane + $.each(_c.borderPanes, function (i, pane) { + if ($Ps[pane] && state[pane].isVisible) { // pane is OPEN + setSizeLimits(pane); + makePaneFit(pane); // pane may be Closed, Hidden or Resized by makePaneFit() + } + }); + // size center-pane AGAIN in case we 'closed' a border-pane in loop above + sizeMidPanes("center"); + + // Chrome/Webkit sometimes fires callbacks BEFORE it completes resizing! + // Before RC30.3, there was a 10ms delay here, but that caused layout + // to load asynchrously, which is BAD, so try skipping delay for now + + // process pane contents and callbacks, and init/resize child-layout if exists + $.each(_c.allPanes, function (i, pane) { + var o = options[pane]; + if ($Ps[pane]) { + if (state[pane].isVisible) { // pane is OPEN + sizeContent(pane); + // trigger pane.onResize if triggerEventsOnLoad = true + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); + } + // init childLayout - even if pane is not visible + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + }); + } + + /** + * Add a pane to the layout - subroutine of initPanes() + * + * @see initPanes() + * @param {string} pane The pane to process + * @param {boolean=} [force=false] Size content after init + */ +, addPane = function (pane, force) { + if (!force && !isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , fx = s.fx + , dir = c.dir + , spacing = o.spacing_open || 0 + , isCenter = (pane === "center") + , CSS = {} + , $P = $Ps[pane] + , size, minSize, maxSize + ; + // if pane-pointer already exists, remove the old one first + if ($P) + removePane( pane, false, true, false ); + else + $Cs[pane] = false; // init + + $P = $Ps[pane] = getPane(pane); + if (!$P.length) { + $Ps[pane] = false; // logic + return; + } + + // SAVE original Pane CSS + if (!$P.data("layoutCSS")) { + var props = "position,top,left,bottom,right,width,height,overflow,zIndex,display,backgroundColor,padding,margin,border"; + $P.data("layoutCSS", elCSS($P, props)); + } + + // create alias for pane data in Instance - initHandles will add more + Instance[pane] = { name: pane, pane: $Ps[pane], content: $Cs[pane], options: options[pane], state: state[pane], child: children[pane] }; + + // add classes, attributes & events + $P .data({ + parentLayout: Instance // pointer to Layout Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "pane" + }) + .css(c.cssReq).css("zIndex", options.zIndexes.pane_normal) + .css(o.applyDemoStyles ? c.cssDemo : {}) // demo styles + .addClass( o.paneClass +" "+ o.paneClass+"-"+pane ) // default = "ui-layout-pane ui-layout-pane-west" - may be a dupe of 'paneSelector' + .bind("mouseenter."+ sID, addHover ) + .bind("mouseleave."+ sID, removeHover ) + ; + var paneMethods = { + hide: '' + , show: '' + , toggle: '' + , close: '' + , open: '' + , slideOpen: '' + , slideClose: '' + , slideToggle: '' + , size: 'manualSizePane' + , sizePane: 'manualSizePane' + , sizeContent: '' + , sizeHandles: '' + , enableClosable: '' + , disableClosable: '' + , enableSlideable: '' + , disableSlideable: '' + , enableResizable: '' + , disableResizable: '' + , swapPanes: 'swapPanes' + , swap: 'swapPanes' + , move: 'swapPanes' + , removePane: 'removePane' + , remove: 'removePane' + , createChildLayout: '' + , resizeChildLayout: '' + , resizeAll: 'resizeAll' + , resizeLayout: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in paneMethods) { + $P.bind("layoutpane"+ name.toLowerCase() +"."+ sID, Instance[ paneMethods[name] || name ]); + } + + // see if this pane has a 'scrolling-content element' + initContent(pane, false); // false = do NOT sizeContent() - called later + + if (!isCenter) { + // call _parseSize AFTER applying pane classes & styles - but before making visible (if hidden) + // if o.size is auto or not valid, then MEASURE the pane and use that as its 'size' + size = s.size = _parseSize(pane, o.size); + minSize = _parseSize(pane,o.minSize) || 1; + maxSize = _parseSize(pane,o.maxSize) || 100000; + if (size > 0) size = max(min(size, maxSize), minSize); + + // state for border-panes + s.isClosed = false; // true = pane is closed + s.isSliding = false; // true = pane is currently open by 'sliding' over adjacent panes + s.isResizing= false; // true = pane is in process of being resized + s.isHidden = false; // true = pane is hidden - no spacing, resizer or toggler is visible! + + // array for 'pin buttons' whose classNames are auto-updated on pane-open/-close + if (!s.pins) s.pins = []; + } + // states common to ALL panes + s.tagName = $P[0].tagName; + s.edge = pane; // useful if pane is (or about to be) 'swapped' - easy find out where it is (or is going) + s.noRoom = false; // true = pane 'automatically' hidden due to insufficient room - will unhide automatically + s.isVisible = true; // false = pane is invisible - closed OR hidden - simplify logic + + // set css-position to account for container borders & padding + switch (pane) { + case "north": CSS.top = sC.insetTop; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "south": CSS.bottom = sC.insetBottom; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "west": CSS.left = sC.insetLeft; // top, bottom & height set by sizeMidPanes() + break; + case "east": CSS.right = sC.insetRight; // ditto + break; + case "center": // top, left, width & height set by sizeMidPanes() + } + + if (dir === "horz") // north or south pane + CSS.height = cssH($P, size); + else if (dir === "vert") // east or west pane + CSS.width = cssW($P, size); + //else if (isCenter) {} + + $P.css(CSS); // apply size -- top, bottom & height will be set by sizeMidPanes + if (dir != "horz") sizeMidPanes(pane, true); // true = skipCallback + + // close or hide the pane if specified in settings + if (o.initClosed && o.closable && !o.initHidden) + close(pane, true, true); // true, true = force, noAnimation + else if (o.initHidden || o.initClosed) + hide(pane); // will be completely invisible - no resizer or spacing + else if (!s.noRoom) + // make the pane visible - in case was initially hidden + $P.css("display","block"); + // ELSE setAsOpen() - called later by initHandles() + + // RESET visibility now - pane will appear IF display:block + $P.css("visibility","visible"); + + // check option for auto-handling of pop-ups & drop-downs + if (o.showOverflowOnHover) + $P.hover( allowOverflow, resetOverflow ); + + // if manually adding a pane AFTER layout initialization, then... + if (state.initialized) { + initHandles( pane ); + initHotkeys( pane ); + resizeAll(); // will sizeContent if pane is visible + if (s.isVisible) { // pane is OPEN + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); // a previously existing childLayout + } + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + } + + /** + * Initialize module objects, styling, size and position for all resize bars and toggler buttons + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHandles = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + + // create toggler DIVs for each pane, and set object pointers for them, eg: $R.north = north toggler DIV + $.each(panes, function (i, pane) { + var $P = $Ps[pane]; + $Rs[pane] = false; // INIT + $Ts[pane] = false; + if (!$P) return; // pane does not exist - skip + + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , rClass = o.resizerClass + , tClass = o.togglerClass + , side = c.side.toLowerCase() + , spacing = (s.isVisible ? o.spacing_open : o.spacing_closed) + , _pane = "-"+ pane // used for classNames + , _state = (s.isVisible ? "-open" : "-closed") // used for classNames + , I = Instance[pane] + // INIT RESIZER BAR + , $R = I.resizer = $Rs[pane] = $("
      ") + // INIT TOGGLER BUTTON + , $T = I.toggler = (o.closable ? $Ts[pane] = $("
      ") : false) + ; + + //if (s.isVisible && o.resizable) ... handled by initResizable + if (!s.isVisible && o.slidable) + $R.attr("title", o.sliderTip).css("cursor", o.sliderCursor); + + $R // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "paneLeft-resizer" + .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-resizer" : "")) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "resizer" + }) + .css(_c.resizers.cssReq).css("zIndex", options.zIndexes.resizer_normal) + .css(o.applyDemoStyles ? _c.resizers.cssDemo : {}) // add demo styles + .addClass(rClass +" "+ rClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if resizing is not enabled - handle with CSS instead + .hover(onResizerEnter, onResizerLeave) // ALWAYS NEED resizer.mouseleave to balance toggler.mouseenter + .appendTo($N) // append DIV to container + ; + + if ($T) { + $T // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "#paneLeft-toggler" + .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-toggler" : "")) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "toggler" + }) + .css(_c.togglers.cssReq) // add base/required styles + .css(o.applyDemoStyles ? _c.togglers.cssDemo : {}) // add demo styles + .addClass(tClass +" "+ tClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if toggling is not enabled - handle with CSS instead + .bind("mouseenter", onResizerEnter) // NEED toggler.mouseenter because mouseenter MAY NOT fire on resizer + .appendTo($R) // append SPAN to resizer DIV + ; + // ADD INNER-SPANS TO TOGGLER + if (o.togglerContent_open) // ui-layout-open + $(""+ o.togglerContent_open +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .data("layoutRole", "togglerContent") + .data("layoutEdge", pane) + .addClass("content content-open") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-open instead! + ; + if (o.togglerContent_closed) // ui-layout-closed + $(""+ o.togglerContent_closed +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .addClass("content content-closed") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-closed instead! + ; + // ADD TOGGLER.click/.hover + enableClosable(pane); + } + + // add Draggable events + initResizable(pane); + + // ADD CLASSNAMES & SLIDE-BINDINGS - eg: class="resizer resizer-west resizer-open" + if (s.isVisible) + setAsOpen(pane); // onOpen will be called, but NOT onResize + else { + setAsClosed(pane); // onClose will be called + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + }); + + // SET ALL HANDLE DIMENSIONS + sizeHandles(); + } + + + /** + * Initialize scrolling ui-layout-content div - if exists + * + * @see initPane() - or externally after an Ajax injection + * @param {string} [pane] The pane to process + * @param {boolean=} [resize=true] Size content after init + */ +, initContent = function (pane, resize) { + if (!isInitialized()) return; + var + o = options[pane] + , sel = o.contentSelector + , I = Instance[pane] + , $P = $Ps[pane] + , $C + ; + if (sel) $C = I.content = $Cs[pane] = (o.findNestedContent) + ? $P.find(sel).eq(0) // match 1-element only + : $P.children(sel).eq(0) + ; + if ($C && $C.length) { + $C.data("layoutRole", "content"); + // SAVE original Pane CSS + if (!$C.data("layoutCSS")) + $C.data("layoutCSS", elCSS($C, "height")); + $C.css( _c.content.cssReq ); + if (o.applyDemoStyles) { + $C.css( _c.content.cssDemo ); // add padding & overflow: auto to content-div + $P.css( _c.content.cssDemoPane ); // REMOVE padding/scrolling from pane + } + state[pane].content = {}; // init content state + if (resize !== false) sizeContent(pane); + // sizeContent() is called AFTER init of all elements + } + else + I.content = $Cs[pane] = false; + } + + + /** + * Add resize-bars to all panes that specify it in options + * -dependancy: $.fn.resizable - will skip if not found + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initResizable = function (panes) { + var draggingAvailable = $.layout.plugins.draggable + , side // set in start() + ; + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (idx, pane) { + var o = options[pane]; + if (!draggingAvailable || !$Ps[pane] || !o.resizable) { + o.resizable = false; + return true; // skip to next + } + + var s = state[pane] + , z = options.zIndexes + , c = _c[pane] + , side = c.dir=="horz" ? "top" : "left" + , opEdge = _c.oppositeEdge[pane] + , masks = pane +",center,"+ opEdge + (c.dir=="horz" ? ",west,east" : "") + , $P = $Ps[pane] + , $R = $Rs[pane] + , base = o.resizerClass + , lastPos = 0 // used when live-resizing + , r, live // set in start because may change + // 'drag' classes are applied to the ORIGINAL resizer-bar while dragging is in process + , resizerClass = base+"-drag" // resizer-drag + , resizerPaneClass = base+"-"+pane+"-drag" // resizer-north-drag + // 'helper' class is applied to the CLONED resizer-bar while it is being dragged + , helperClass = base+"-dragging" // resizer-dragging + , helperPaneClass = base+"-"+pane+"-dragging" // resizer-north-dragging + , helperLimitClass = base+"-dragging-limit" // resizer-drag + , helperPaneLimitClass = base+"-"+pane+"-dragging-limit" // resizer-north-drag + , helperClassesSet = false // logic var + ; + + if (!s.isClosed) + $R.attr("title", o.resizerTip) + .css("cursor", o.resizerCursor); // n-resize, s-resize, etc + + $R.draggable({ + containment: $N[0] // limit resizing to layout container + , axis: (c.dir=="horz" ? "y" : "x") // limit resizing to horz or vert axis + , delay: 0 + , distance: 1 + , grid: o.resizingGrid + // basic format for helper - style it using class: .ui-draggable-dragging + , helper: "clone" + , opacity: o.resizerDragOpacity + , addClasses: false // avoid ui-state-disabled class when disabled + //, iframeFix: o.draggableIframeFix // TODO: consider using when bug is fixed + , zIndex: z.resizer_drag + + , start: function (e, ui) { + // REFRESH options & state pointers in case we used swapPanes + o = options[pane]; + s = state[pane]; + // re-read options + live = o.livePaneResizing; + + // ondrag_start callback - will CANCEL hide if returns false + // TODO: dragging CANNOT be cancelled like this, so see if there is a way? + if (false === _runCallbacks("ondrag_start", pane)) return false; + + s.isResizing = true; // prevent pane from closing while resizing + timer.clear(pane+"_closeSlider"); // just in case already triggered + + // SET RESIZER LIMITS - used in drag() + setSizeLimits(pane); // update pane/resizer state + r = s.resizerPosition; + lastPos = ui.position[ side ] + + $R.addClass( resizerClass +" "+ resizerPaneClass ); // add drag classes + helperClassesSet = false; // reset logic var - see drag() + + // DISABLE TEXT SELECTION (probably already done by resizer.mouseOver) + $('body').disableSelection(); + + // MASK PANES CONTAINING IFRAMES, APPLETS OR OTHER TROUBLESOME ELEMENTS + showMasks( masks ); + } + + , drag: function (e, ui) { + if (!helperClassesSet) { // can only add classes after clone has been added to the DOM + //$(".ui-draggable-dragging") + ui.helper + .addClass( helperClass +" "+ helperPaneClass ) // add helper classes + .css({ right: "auto", bottom: "auto" }) // fix dir="rtl" issue + .children().css("visibility","hidden") // hide toggler inside dragged resizer-bar + ; + helperClassesSet = true; + // draggable bug!? RE-SET zIndex to prevent E/W resize-bar showing through N/S pane! + if (s.isSliding) $Ps[pane].css("zIndex", z.pane_sliding); + } + // CONTAIN RESIZER-BAR TO RESIZING LIMITS + var limit = 0; + if (ui.position[side] < r.min) { + ui.position[side] = r.min; + limit = -1; + } + else if (ui.position[side] > r.max) { + ui.position[side] = r.max; + limit = 1; + } + // ADD/REMOVE dragging-limit CLASS + if (limit) { + ui.helper.addClass( helperLimitClass +" "+ helperPaneLimitClass ); // at dragging-limit + window.defaultStatus = (limit>0 && pane.match(/north|west/)) || (limit<0 && pane.match(/south|east/)) ? lang.maxSizeWarning : lang.minSizeWarning; + } + else { + ui.helper.removeClass( helperLimitClass +" "+ helperPaneLimitClass ); // not at dragging-limit + window.defaultStatus = ""; + } + // DYNAMICALLY RESIZE PANES IF OPTION ENABLED + // won't trigger unless resizer has actually moved! + if (live && Math.abs(ui.position[side] - lastPos) >= o.liveResizingTolerance) { + lastPos = ui.position[side]; + resizePanes(e, ui, pane) + } + } + + , stop: function (e, ui) { + $('body').enableSelection(); // RE-ENABLE TEXT SELECTION + window.defaultStatus = ""; // clear 'resizing limit' message from statusbar + $R.removeClass( resizerClass +" "+ resizerPaneClass ); // remove drag classes from Resizer + s.isResizing = false; + resizePanes(e, ui, pane, true, masks); // true = resizingDone + } + + }); + }); + + /** + * resizePanes + * + * Sub-routine called from stop() - and drag() if livePaneResizing + * + * @param {!Object} evt + * @param {!Object} ui + * @param {string} pane + * @param {boolean=} [resizingDone=false] + */ + var resizePanes = function (evt, ui, pane, resizingDone, masks) { + var dragPos = ui.position + , c = _c[pane] + , o = options[pane] + , s = state[pane] + , resizerPos + ; + switch (pane) { + case "north": resizerPos = dragPos.top; break; + case "west": resizerPos = dragPos.left; break; + case "south": resizerPos = sC.offsetHeight - dragPos.top - o.spacing_open; break; + case "east": resizerPos = sC.offsetWidth - dragPos.left - o.spacing_open; break; + }; + // remove container margin from resizer position to get the pane size + var newSize = resizerPos - sC["inset"+ c.side]; + + // Disable OR Resize Mask(s) created in drag.start + if (!resizingDone) { + // ensure we meet liveResizingTolerance criteria + if (Math.abs(newSize - s.size) < o.liveResizingTolerance) + return; // SKIP resize this time + // resize the pane + manualSizePane(pane, newSize, false, true); // true = noAnimation + sizeMasks(); // resize all visible masks + } + else { // resizingDone + // ondrag_end callback + if (false !== _runCallbacks("ondrag_end", pane)) + manualSizePane(pane, newSize, false, true); // true = noAnimation + hideMasks(); // hide all masks, which include panes with 'content/iframe-masks' + if (s.isSliding && masks) // RE-SHOW only 'object-masks' so objects won't show through sliding pane + showMasks( masks, true ); // true = onlyForObjects + } + }; + } + + /** + * sizeMask + * + * Needed to overlay a DIV over an IFRAME-pane because mask CANNOT be *inside* the pane + * Called when mask created, and during livePaneResizing + */ +, sizeMask = function () { + var $M = $(this) + , pane = $M.data("layoutMask") // eg: "west" + , s = state[pane] + ; + // only masks over an IFRAME-pane need manual resizing + if (s.tagName == "IFRAME" && s.isVisible) // no need to mask closed/hidden panes + $M.css({ + top: s.offsetTop + , left: s.offsetLeft + , width: s.outerWidth + , height: s.outerHeight + }); + /* ALT Method... + var $P = $Ps[pane]; + $M.css( $P.position() ).css({ width: $P[0].offsetWidth, height: $P[0].offsetHeight }); + */ + } +, sizeMasks = function () { + $Ms.each( sizeMask ); // resize all 'visible' masks + } + +, showMasks = function (panes, onlyForObjects) { + var a = panes ? panes.split(",") : $.layout.config.allPanes + , z = options.zIndexes + , o, s; + $.each(a, function(i,p){ + s = state[p]; + o = options[p]; + if (s.isVisible && ( (!onlyForObjects && o.maskContents) || o.maskObjects )) { + getMasks(p).each(function(){ + sizeMask.call(this); + this.style.zIndex = s.isSliding ? z.pane_sliding+1 : z.pane_normal+1 + this.style.display = "block"; + }); + } + }); + } + +, hideMasks = function () { + // ensure no pane is resizing - could be a timing issue + var skip; + $.each( $.layout.config.borderPanes, function(i,p){ + if (state[p].isResizing) { + skip = true; + return false; // BREAK + } + }); + if (!skip) + $Ms.hide(); // hide ALL masks + } + +, getMasks = function (pane) { + var $Masks = $([]) + , $M, i = 0, c = $Ms.length + ; + for (; i CSS + if (sC.tagName === "BODY" && ($N = $("html")).data(css)) // RESET CSS + $N.css( $N.data(css) ).removeData(css); + + // trigger plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onDestroy ); + + // trigger state-management and onunload callback + unload(); + + // clear the Instance of everything except for container & options (so could recreate) + // RE-CREATE: myLayout = myLayout.container.layout( myLayout.options ); + for (n in Instance) + if (!n.match(/^(container|options)$/)) delete Instance[ n ]; + // add a 'destroyed' flag to make it easy to check + Instance.destroyed = true; + + // if this is a child layout, CLEAR the child-pointer in the parent + /* for now the pointer REMAINS, but with only container, options and destroyed keys + if (parentPane) { + var layout = parentPane.pane.data("parentLayout"); + parentPane.child = layout.children[ parentPane.name ] = null; + } + */ + + return Instance; // for coding convenience + } + + /** + * Remove a pane from the layout - subroutine of destroy() + * + * @see destroy() + * @param {string} pane The pane to process + * @param {boolean=} [remove=false] Remove the DOM element? + * @param {boolean=} [skipResize=false] Skip calling resizeAll()? + */ +, removePane = function (evt_or_pane, remove, skipResize, destroyChild) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $C = $Cs[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + ; + //alert( '$P.length = '+ $P.length ); + // NOTE: elements can still exist even after remove() + // so check for missing data(), which is cleared by removed() + if ($P && $.isEmptyObject( $P.data() )) $P = false; + if ($C && $.isEmptyObject( $C.data() )) $C = false; + if ($R && $.isEmptyObject( $R.data() )) $R = false; + if ($T && $.isEmptyObject( $T.data() )) $T = false; + + if ($P) $P.stop(true, true); + + // check for a child layout + var o = options[pane] + , s = state[pane] + , d = "layout" + , css = "layoutCSS" + , child = children[pane] || ($P ? $P.data(d) : 0) || ($C ? $C.data(d) : 0) || null + , destroy = destroyChild !== undefined ? destroyChild : o.destroyChildLayout + ; + + // FIRST destroy the child-layout(s) + if (destroy && child && !child.destroyed) { + child.destroy(true); // tell child-layout to destroy ALL its child-layouts too + if (child.destroyed) // destroy was successful + child = null; // clear pointer for logic below + } + + if ($P && remove && !child) + $P.remove(); + else if ($P && $P[0]) { + // create list of ALL pane-classes that need to be removed + var root = o.paneClass // default="ui-layout-pane" + , pRoot = root +"-"+ pane // eg: "ui-layout-pane-west" + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + , classes = [ root, root+_open, root+_closed, root+_sliding, // generic classes + pRoot, pRoot+_open, pRoot+_closed, pRoot+_sliding ] // pane-specific classes + ; + $.merge(classes, getHoverClasses($P, true)); // ADD hover-classes + // remove all Layout classes from pane-element + $P .removeClass( classes.join(" ") ) // remove ALL pane-classes + .removeData("parentLayout") + .removeData("layoutPane") + .removeData("layoutRole") + .removeData("layoutEdge") + .removeData("autoHidden") // in case set + .unbind("."+ sID) // remove ALL Layout events + // TODO: remove these extra unbind commands when jQuery is fixed + //.unbind("mouseenter"+ sID) + //.unbind("mouseleave"+ sID) + ; + // do NOT reset CSS if this pane/content is STILL the container of a nested layout! + // the nested layout will reset its 'container' CSS when/if it is destroyed + if ($C && $C.data(d)) { + // a content-div may not have a specific width, so give it one to contain the Layout + $C.width( $C.width() ); + child.resizeAll(); // now resize the Layout + } + else if ($C) + $C.css( $C.data(css) ).removeData(css).removeData("layoutRole"); + // remove pane AFTER content in case there was a nested layout + if (!$P.data(d)) + $P.css( $P.data(css) ).removeData(css); + } + + // REMOVE pane resizer and toggler elements + if ($T) $T.remove(); + if ($R) $R.remove(); + + // CLEAR all pointers and state data + Instance[pane] = $Ps[pane] = $Cs[pane] = $Rs[pane] = $Ts[pane] = children[pane] = false; + s = { removed: true }; + + if (!skipResize) + resizeAll(); + } + + +/* + * ########################### + * ACTION METHODS + * ########################### + */ + +, _hidePane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , s = $P[0].style + ; + if (o.useOffscreenClose) { + if (!$P.data(_c.offscreenReset)) + $P.data(_c.offscreenReset, { left: s.left, right: s.right }); + $P.css( _c.offscreenCSS ); + } + else + $P.hide().removeData(_c.offscreenReset); + } + +, _showPane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , off = _c.offscreenCSS + , old = $P.data(_c.offscreenReset) + , s = $P[0].style + ; + $P .show() // ALWAYS show, just in case + .removeData(_c.offscreenReset); + if (o.useOffscreenClose && old) { + if (s.left == off.left) + s.left = old.left; + if (s.right == off.right) + s.right = old.right; + } + } + + + /** + * Completely 'hides' a pane, including its spacing - as if it does not exist + * The pane is not actually 'removed' from the source, so can use 'show' to un-hide it + * + * @param {string} pane The pane being hidden, ie: north, south, east, or west + * @param {boolean=} [noAnimation=false] + */ +, hide = function (evt_or_pane, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || s.isHidden) return; // pane does not exist OR is already hidden + + // onhide_start callback - will CANCEL hide if returns false + if (state.initialized && false === _runCallbacks("onhide_start", pane)) return; + + s.isSliding = false; // just in case + + // now hide the elements + if ($R) $R.hide(); // hide resizer-bar + if (!state.initialized || s.isClosed) { + s.isClosed = true; // to trigger open-animation on show() + s.isHidden = true; + s.isVisible = false; + if (!state.initialized) + _hidePane(pane); // no animation when loading page + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center"); + if (state.initialized || o.triggerEventsOnLoad) + _runCallbacks("onhide_end", pane); + } + else { + s.isHiding = true; // used by onclose + close(pane, false, noAnimation); // adjust all panes to fit + } + } + + /** + * Show a hidden pane - show as 'closed' by default unless openPane = true + * + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [openPane=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, show = function (evt_or_pane, openPane, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || !s.isHidden) return; // pane does not exist OR is not hidden + + // onshow_start callback - will CANCEL show if returns false + if (false === _runCallbacks("onshow_start", pane)) return; + + s.isSliding = false; // just in case + s.isShowing = true; // used by onopen/onclose + //s.isHidden = false; - will be set by open/close - if not cancelled + + // now show the elements + //if ($R) $R.show(); - will be shown by open/close + if (openPane === false) + close(pane, true); // true = force + else + open(pane, false, noAnimation, noAlert); // adjust all panes to fit + } + + + /** + * Toggles a pane open/closed by calling either open or close + * + * @param {string} pane The pane being toggled, ie: north, south, east, or west + * @param {boolean=} [slide=false] + */ +, toggle = function (evt_or_pane, slide) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + ; + if (evt) // called from to $R.dblclick OR triggerPaneEvent + evt.stopImmediatePropagation(); + if (s.isHidden) + show(pane); // will call 'open' after unhiding it + else if (s.isClosed) + open(pane, !!slide); + else + close(pane); + } + + + /** + * Utility method used during init or other auto-processes + * + * @param {string} pane The pane being closed + * @param {boolean=} [setHandles=false] + */ +, _closePane = function (pane, setHandles) { + var + $P = $Ps[pane] + , s = state[pane] + ; + _hidePane(pane); + s.isClosed = true; + s.isVisible = false; + // UNUSED: if (setHandles) setAsClosed(pane, true); // true = force + } + + /** + * Close the specified pane (animation optional), and resize all other panes as needed + * + * @param {string} pane The pane being closed, ie: north, south, east, or west + * @param {boolean=} [force=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [skipCallback=false] + */ +, close = function (evt_or_pane, force, noAnimation, skipCallback) { + var pane = evtPane.call(this, evt_or_pane); + // if pane has been initialized, but NOT the complete layout, close pane instantly + if (!state.initialized && $Ps[pane]) { + _closePane(pane); // INIT pane as closed + return; + } + if (!isInitialized()) return; + + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing, isHiding, wasSliding; + + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.closable && !s.isShowing && !s.isHiding) // invalid request // (!o.resizable && !o.closable) ??? + || (!force && s.isClosed && !s.isShowing) // already closed + ) return queueNext(); + + // onclose_start callback - will CANCEL hide if returns false + // SKIP if just 'showing' a hidden pane as 'closed' + var abort = !s.isShowing && false === _runCallbacks("onclose_start", pane); + + // transfer logic vars to temp vars + isShowing = s.isShowing; + isHiding = s.isHiding; + wasSliding = s.isSliding; + // now clear the logic vars (REQUIRED before aborting) + delete s.isShowing; + delete s.isHiding; + + if (abort) return queueNext(); + + doFX = !noAnimation && !s.isClosed && (o.fxName_close != "none"); + s.isMoving = true; + s.isClosed = true; + s.isVisible = false; + // update isHidden BEFORE sizing panes + if (isHiding) s.isHidden = true; + else if (isShowing) s.isHidden = false; + + if (s.isSliding) // pane is being closed, so UNBIND trigger events + bindStopSlidingEvents(pane, false); // will set isSliding=false + else // resize panes adjacent to this one + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center", false); // false = NOT skipCallback + + // if this pane has a resizer bar, move it NOW - before animation + setAsClosed(pane); + + // CLOSE THE PANE + if (doFX) { // animate the close + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.hide( o.fxName_close, o.fxSettings_close, o.fxSpeed_close, function () { + lockPaneForFX(pane, false); // undo + if (s.isClosed) close_2(); + queueNext(); + }); + } + else { // hide the pane without animation + _hidePane(pane); + close_2(); + queueNext(); + }; + }); + + // SUBROUTINE + function close_2 () { + s.isMoving = false; + bindStartSlidingEvent(pane, true); // will enable if o.slidable = true + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane ); + } + + // hide any masks shown while closing + hideMasks(); + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad)) { + // onclose callback - UNLESS just 'showing' a hidden pane as 'closed' + if (!isShowing) _runCallbacks("onclose_end", pane); + // onhide OR onshow callback + if (isShowing) _runCallbacks("onshow_end", pane); + if (isHiding) _runCallbacks("onhide_end", pane); + } + } + } + + /** + * @param {string} pane The pane just closed, ie: north, south, east, or west + */ +, setAsClosed = function (pane) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + ; + $R + .css(side, sC[inset]) // move the resizer + .removeClass( rClass+_open +" "+ rClass+_pane+_open ) + .removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + .addClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .unbind("dblclick."+ sID) + ; + // DISABLE 'resizing' when closed - do this BEFORE bindStartSlidingEvent? + if (o.resizable && $.layout.plugins.draggable) + $R + .draggable("disable") + .removeClass("ui-state-disabled") // do NOT apply disabled styling - not suitable here + .css("cursor", "default") + .attr("title","") + ; + + // if pane has a toggler button, adjust that too + if ($T) { + $T + .removeClass( tClass+_open +" "+ tClass+_pane+_open ) + .addClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .attr("title", o.togglerTip_closed) // may be blank + ; + // toggler-content - if exists + $T.children(".content-open").hide(); + $T.children(".content-closed").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, false); + + if (state.initialized) { + // resize 'length' and position togglers for adjacent panes + sizeHandles(); + } + } + + /** + * Open the specified pane (animation optional), and resize all other panes as needed + * + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [slide=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, open = function (evt_or_pane, slide, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.resizable && !o.closable && !s.isShowing) // invalid request + || (s.isVisible && !s.isSliding) // already open + ) return queueNext(); + + // pane can ALSO be unhidden by just calling show(), so handle this scenario + if (s.isHidden && !s.isShowing) { + queueNext(); // call before show() because it needs the queue free + show(pane, true); + return; + } + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else + // make sure there is enough space available to open the pane + setSizeLimits(pane, slide); + + // onopen_start callback - will CANCEL open if returns false + var cbReturn = _runCallbacks("onopen_start", pane); + + if (cbReturn === "abort") + return queueNext(); + + // update pane-state again in case options were changed in onopen_start + if (cbReturn !== "NC") // NC = "No Callback" + setSizeLimits(pane, slide); + + if (s.minSize > s.maxSize) { // INSUFFICIENT ROOM FOR PANE TO OPEN! + syncPinBtns(pane, false); // make sure pin-buttons are reset + if (!noAlert && o.noRoomToOpenTip) + alert(o.noRoomToOpenTip); + return queueNext(); // ABORT + } + + if (slide) // START Sliding - will set isSliding=true + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (s.isSliding) // PIN PANE (stop sliding) - open pane 'normally' instead + bindStopSlidingEvents(pane, false); // UNBIND trigger events - will set isSliding=false + else if (o.slidable) + bindStartSlidingEvent(pane, false); // UNBIND trigger events + + s.noRoom = false; // will be reset by makePaneFit if 'noRoom' + makePaneFit(pane); + + // transfer logic var to temp var + isShowing = s.isShowing; + // now clear the logic var + delete s.isShowing; + + doFX = !noAnimation && s.isClosed && (o.fxName_open != "none"); + s.isMoving = true; + s.isVisible = true; + s.isClosed = false; + // update isHidden BEFORE sizing panes - WHY??? Old? + if (isShowing) s.isHidden = false; + + if (doFX) { // ANIMATE + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + if (s.isSliding) masks += ","+ _c.oppositeEdge[pane]; + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.show( o.fxName_open, o.fxSettings_open, o.fxSpeed_open, function() { + lockPaneForFX(pane, false); // undo + if (s.isVisible) open_2(); // continue + queueNext(); + }); + } + else { // no animation + _showPane(pane);// just show pane and... + open_2(); // continue + queueNext(); + }; + }); + + // SUBROUTINE + function open_2 () { + s.isMoving = false; + + // cure iframe display issues + _fixIframe(pane); + + // NOTE: if isSliding, then other panes are NOT 'resized' + if (!s.isSliding) { // resize all panes adjacent to this one + hideMasks(); // remove any masks shown while opening + sizeMidPanes(_c[pane].dir=="vert" ? "center" : "", false); // false = NOT skipCallback + } + + // set classes, position handles and execute callbacks... + setAsOpen(pane); + }; + + } + + /** + * @param {string} pane The pane just opened, ie: north, south, east, or west + * @param {boolean=} [skipCallback=false] + */ +, setAsOpen = function (pane, skipCallback) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _closed = "-closed" + , _sliding= "-sliding" + ; + $R + .css(side, sC[inset] + getPaneSize(pane)) // move the resizer + .removeClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .addClass( rClass+_open +" "+ rClass+_pane+_open ) + ; + if (s.isSliding) + $R.addClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + else // in case 'was sliding' + $R.removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + + if (o.resizerDblClickToggle) + $R.bind("dblclick", toggle ); + removeHover( 0, $R ); // remove hover classes + if (o.resizable && $.layout.plugins.draggable) + $R .draggable("enable") + .css("cursor", o.resizerCursor) + .attr("title", o.resizerTip); + else if (!s.isSliding) + $R.css("cursor", "default"); // n-resize, s-resize, etc + + // if pane also has a toggler button, adjust that too + if ($T) { + $T .removeClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .addClass( tClass+_open +" "+ tClass+_pane+_open ) + .attr("title", o.togglerTip_open); // may be blank + removeHover( 0, $T ); // remove hover classes + // toggler-content - if exists + $T.children(".content-closed").hide(); + $T.children(".content-open").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, !s.isSliding); + + // update pane-state dimensions - BEFORE resizing content + $.extend(s, elDims($P)); + + if (state.initialized) { + // resize resizer & toggler sizes for all panes + sizeHandles(); + // resize content every time pane opens - to be sure + sizeContent(pane, true); // true = remeasure headers/footers, even if 'pane.isMoving' + } + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad) && $P.is(":visible")) { + // onopen callback + _runCallbacks("onopen_end", pane); + // onshow callback - TODO: should this be here? + if (s.isShowing) _runCallbacks("onshow_end", pane); + + // ALSO call onresize because layout-size *may* have changed while pane was closed + if (state.initialized) + _runCallbacks("onresize_end", pane); + } + + // TODO: Somehow sizePane("north") is being called after this point??? + } + + + /** + * slideOpen / slideClose / slideToggle + * + * Pass-though methods for sliding + */ +, slideOpen = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + , delay = options[pane].slideDelay_open + ; + // prevent event from triggering on NEW resizer binding created below + if (evt) evt.stopImmediatePropagation(); + + if (s.isClosed && evt && evt.type === "mouseenter" && delay > 0) + // trigger = mouseenter - use a delay + timer.set(pane+"_openSlider", open_NOW, delay); + else + open_NOW(); // will unbind events if is already open + + /** + * SUBROUTINE for timed open + */ + function open_NOW () { + if (!s.isClosed) // skip if no longer closed! + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (!s.isMoving) + open(pane, true); // true = slide - open() will handle binding + }; + } + +, slideClose = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , delay = s.isMoving ? 1000 : 300 // MINIMUM delay - option may override + ; + if (s.isClosed || s.isResizing) + return; // skip if already closed OR in process of resizing + else if (o.slideTrigger_close === "click") + close_NOW(); // close immediately onClick + else if (o.preventQuickSlideClose && s.isMoving) + return; // handle Chrome quick-close on slide-open + else if (o.preventPrematureSlideClose && evt && $.layout.isMouseOverElem(evt, $Ps[pane])) + return; // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + else if (evt) // trigger = mouseleave - use a delay + // 1 sec delay if 'opening', else .3 sec + timer.set(pane+"_closeSlider", close_NOW, max(o.slideDelay_close, delay)); + else // called programically + close_NOW(); + + /** + * SUBROUTINE for timed close + */ + function close_NOW () { + if (s.isClosed) // skip 'close' if already closed! + bindStopSlidingEvents(pane, false); // UNBIND trigger events - TODO: is this needed here? + else if (!s.isMoving) + close(pane); // close will handle unbinding + }; + } + + /** + * @param {string} pane The pane being opened, ie: north, south, east, or west + */ +, slideToggle = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + toggle(pane, true); + } + + + /** + * Must set left/top on East/South panes so animation will work properly + * + * @param {string} pane The pane to lock, 'east' or 'south' - any other is ignored! + * @param {boolean} doLock true = set left/top, false = remove + */ +, lockPaneForFX = function (pane, doLock) { + var $P = $Ps[pane] + , s = state[pane] + , o = options[pane] + , z = options.zIndexes + ; + if (doLock) { + $P.css({ zIndex: z.pane_animate }); // overlay all elements during animation + if (pane=="south") + $P.css({ top: sC.insetTop + sC.innerHeight - $P.outerHeight() }); + else if (pane=="east") + $P.css({ left: sC.insetLeft + sC.innerWidth - $P.outerWidth() }); + } + else { // animation DONE - RESET CSS + // TODO: see if this can be deleted. It causes a quick-close when sliding in Chrome + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + if (pane=="south") + $P.css({ top: "auto" }); + // if pane is positioned 'off-screen', then DO NOT screw with it! + else if (pane=="east" && !$P.css("left").match(/\-99999/)) + $P.css({ left: "auto" }); + // fix anti-aliasing in IE - only needed for animations that change opacity + if (browser.msie && o.fxOpacityFix && o.fxName_open != "slide" && $P.css("filter") && $P.css("opacity") == 1) + $P[0].style.removeAttribute('filter'); + } + } + + + /** + * Toggle sliding functionality of a specific pane on/off by adding removing 'slide open' trigger + * + * @see open(), close() + * @param {string} pane The pane to enable/disable, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable sliding? + */ +, bindStartSlidingEvent = function (pane, enable) { + var o = options[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , evtName = o.slideTrigger_open.toLowerCase() + ; + if (!$R || (enable && !o.slidable)) return; + + // make sure we have a valid event + if (evtName.match(/mouseover/)) + evtName = o.slideTrigger_open = "mouseenter"; + else if (!evtName.match(/click|dblclick|mouseenter/)) + evtName = o.slideTrigger_open = "click"; + + $R + // add or remove event + [enable ? "bind" : "unbind"](evtName +'.'+ sID, slideOpen) + // set the appropriate cursor & title/tip + .css("cursor", enable ? o.sliderCursor : "default") + .attr("title", enable ? o.sliderTip : "") + ; + } + + /** + * Add or remove 'mouseleave' events to 'slide close' when pane is 'sliding' open or closed + * Also increases zIndex when pane is sliding open + * See bindStartSlidingEvent for code to control 'slide open' + * + * @see slideOpen(), slideClose() + * @param {string} pane The pane to process, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable events? + */ +, bindStopSlidingEvents = function (pane, enable) { + var o = options[pane] + , s = state[pane] + , c = _c[pane] + , z = options.zIndexes + , evtName = o.slideTrigger_close.toLowerCase() + , action = (enable ? "bind" : "unbind") + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + s.isSliding = enable; // logic + timer.clear(pane+"_closeSlider"); // just in case + + // remove 'slideOpen' event from resizer + // ALSO will raise the zIndex of the pane & resizer + if (enable) bindStartSlidingEvent(pane, false); + + // RE/SET zIndex - increases when pane is sliding-open, resets to normal when not + $P.css("zIndex", enable ? z.pane_sliding : z.pane_normal); + $R.css("zIndex", enable ? z.pane_sliding+2 : z.resizer_normal); // NOTE: mask = pane_sliding+1 + + // make sure we have a valid event + if (!evtName.match(/click|mouseleave/)) + evtName = o.slideTrigger_close = "mouseleave"; // also catches 'mouseout' + + // add/remove slide triggers + $R[action](evtName, slideClose); // base event on resize + // need extra events for mouseleave + if (evtName === "mouseleave") { + // also close on pane.mouseleave + $P[action]("mouseleave."+ sID, slideClose); + // cancel timer when mouse moves between 'pane' and 'resizer' + $R[action]("mouseenter."+ sID, cancelMouseOut); + $P[action]("mouseenter."+ sID, cancelMouseOut); + } + + if (!enable) + timer.clear(pane+"_closeSlider"); + else if (evtName === "click" && !o.resizable) { + // IF pane is not resizable (which already has a cursor and tip) + // then set the a cursor & title/tip on resizer when sliding + $R.css("cursor", enable ? o.sliderCursor : "default"); + $R.attr("title", enable ? o.togglerTip_open : ""); // use Toggler-tip, eg: "Close Pane" + } + + // SUBROUTINE for mouseleave timer clearing + function cancelMouseOut (evt) { + timer.clear(pane+"_closeSlider"); + evt.stopPropagation(); + } + } + + + /** + * Hides/closes a pane if there is insufficient room - reverses this when there is room again + * MUST have already called setSizeLimits() before calling this method + * + * @param {string} pane The pane being resized + * @param {boolean=} [isOpening=false] Called from onOpen? + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, makePaneFit = function (pane, isOpening, skipCallback, force) { + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isSidePane = c.dir==="vert" + , hasRoom = false + ; + // special handling for center & east/west panes + if (pane === "center" || (isSidePane && s.noVerticalRoom)) { + // see if there is enough room to display the pane + // ERROR: hasRoom = s.minHeight <= s.maxHeight && (isSidePane || s.minWidth <= s.maxWidth); + hasRoom = (s.maxHeight >= 0); + if (hasRoom && s.noRoom) { // previously hidden due to noRoom, so show now + _showPane(pane); + if ($R) $R.show(); + s.isVisible = true; + s.noRoom = false; + if (isSidePane) s.noVerticalRoom = false; + _fixIframe(pane); + } + else if (!hasRoom && !s.noRoom) { // not currently hidden, so hide now + _hidePane(pane); + if ($R) $R.hide(); + s.isVisible = false; + s.noRoom = true; + } + } + + // see if there is enough room to fit the border-pane + if (pane === "center") { + // ignore center in this block + } + else if (s.minSize <= s.maxSize) { // pane CAN fit + hasRoom = true; + if (s.size > s.maxSize) // pane is too big - shrink it + sizePane(pane, s.maxSize, skipCallback, force, true); // true = noAnimation + else if (s.size < s.minSize) // pane is too small - enlarge it + sizePane(pane, s.minSize, skipCallback, force, true); + // need s.isVisible because new pseudoClose method keeps pane visible, but off-screen + else if ($R && s.isVisible && $P.is(":visible")) { + // make sure resizer-bar is positioned correctly + // handles situation where nested layout was 'hidden' when initialized + var side = c.side.toLowerCase() + , pos = s.size + sC["inset"+ c.side] + ; + if ($.layout.cssNum($R, side) != pos) $R.css( side, pos ); + } + + // if was previously hidden due to noRoom, then RESET because NOW there is room + if (s.noRoom) { + // s.noRoom state will be set by open or show + if (s.wasOpen && o.closable) { + if (o.autoReopen) + open(pane, false, true, true); // true = noAnimation, true = noAlert + else // leave the pane closed, so just update state + s.noRoom = false; + } + else + show(pane, s.wasOpen, true, true); // true = noAnimation, true = noAlert + } + } + else { // !hasRoom - pane CANNOT fit + if (!s.noRoom) { // pane not set as noRoom yet, so hide or close it now... + s.noRoom = true; // update state + s.wasOpen = !s.isClosed && !s.isSliding; + if (s.isClosed){} // SKIP + else if (o.closable) // 'close' if possible + close(pane, true, true); // true = force, true = noAnimation + else // 'hide' pane if cannot just be closed + hide(pane, true); // true = noAnimation + } + } + } + + + /** + * sizePane / manualSizePane + * sizePane is called only by internal methods whenever a pane needs to be resized + * manualSizePane is an exposed flow-through method allowing extra code when pane is 'manually resized' + * + * @param {string} pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [noAnimation=false] + */ +, manualSizePane = function (evt_or_pane, size, skipCallback, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + // if resizing callbacks have been delayed and resizing is now DONE, force resizing to complete... + , forceResize = o.livePaneResizing && !s.isResizing + ; + // ANY call to manualSizePane disables autoResize - ie, percentage sizing + o.autoResize = false; + // flow-through... + sizePane(pane, size, skipCallback, forceResize, noAnimation); // will animate resize if option enabled + } + + /** + * @param {string} pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] Force resizing even if does not seem necessary + * @param {boolean=} [noAnimation=false] + */ +, sizePane = function (evt_or_pane, size, skipCallback, force, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) // probably NEVER called from event? + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , side = _c[pane].side.toLowerCase() + , dimName = _c[pane].sizeType.toLowerCase() + , inset = "inset"+ _c[pane].side + , skipResizeWhileDragging = s.isResizing && !o.triggerEventsDuringLiveResize + , doFX = noAnimation !== true && o.animatePaneSizing + , oldSize, newSize + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + // calculate 'current' min/max sizes + setSizeLimits(pane); // update pane-state + oldSize = s.size; + size = _parseSize(pane, size); // handle percentages & auto + size = max(size, _parseSize(pane, o.minSize)); + size = min(size, s.maxSize); + if (size < s.minSize) { // not enough room for pane! + queueNext(); // call before makePaneFit() because it needs the queue free + makePaneFit(pane, false, skipCallback); // will hide or close pane + return; + } + + // IF newSize is same as oldSize, then nothing to do - abort + if (!force && size === oldSize) + return queueNext(); + + // onresize_start callback CANNOT cancel resizing because this would break the layout! + if (!skipCallback && state.initialized && s.isVisible) + _runCallbacks("onresize_start", pane); + + // resize the pane, and make sure its visible + newSize = cssSize(pane, size); + + if (doFX && $P.is(":visible")) { // ANIMATE + var fx = $.layout.effects.size[pane] || $.layout.effects.size.all + , easing = o.fxSettings_size.easing || fx.easing + , z = options.zIndexes + , props = {}; + props[ dimName ] = newSize +'px'; + s.isMoving = true; + // overlay all elements during animation + $P.css({ zIndex: z.pane_animate }) + .show().animate( props, o.fxSpeed_size, easing, function(){ + // reset zIndex after animation + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + s.isMoving = false; + sizePane_2(); // continue + queueNext(); + }); + } + else { // no animation + $P.css( dimName, newSize ); // resize pane + // if pane is visible, then + if ($P.is(":visible")) + sizePane_2(); // continue + else { + // pane is NOT VISIBLE, so just update state data... + // when pane is *next opened*, it will have the new size + s.size = size; // update state.size + $.extend(s, elDims($P)); // update state dimensions + } + queueNext(); + }; + + }); + + // SUBROUTINE + function sizePane_2 () { + /* Panes are sometimes not sized precisely in some browsers!? + * This code will resize the pane up to 3 times to nudge the pane to the correct size + */ + var actual = dimName==='width' ? $P.outerWidth() : $P.outerHeight() + , tries = [{ + pane: pane + , count: 1 + , target: size + , actual: actual + , correct: (size === actual) + , attempt: size + , cssSize: newSize + }] + , lastTry = tries[0] + , msg = 'Inaccurate size after resizing the '+ pane +'-pane.' + ; + while ( !lastTry.correct ) { + thisTry = { pane: pane, count: lastTry.count+1, target: size }; + + if (lastTry.actual > size) + thisTry.attempt = max(0, lastTry.attempt - (lastTry.actual - size)); + else // lastTry.actual < size + thisTry.attempt = max(0, lastTry.attempt + (size - lastTry.actual)); + + thisTry.cssSize = cssSize(pane, thisTry.attempt); + $P.css( dimName, thisTry.cssSize ); + + thisTry.actual = dimName=='width' ? $P.outerWidth() : $P.outerHeight(); + thisTry.correct = (size === thisTry.actual); + + // if showDebugMessages, log attempts and alert the user of this *non-fatal error* + if (options.showDebugMessages) { + if ( tries.length === 1) { + _log(msg, false); + _log(lastTry, false); + } + _log(thisTry, false); + } + + // after 4 tries, is as close as its gonna get! + if (tries.length > 3) break; + + tries.push( thisTry ); + lastTry = tries[ tries.length - 1 ]; + } + // END TESTING CODE + + // update pane-state dimensions + s.size = size; + $.extend(s, elDims($P)); + + if (s.isVisible && $P.is(":visible")) { + // reposition the resizer-bar + if ($R) $R.css( side, size + sC[inset] ); + // resize the content-div + sizeContent(pane); + } + + if (!skipCallback && !skipResizeWhileDragging && state.initialized && s.isVisible) + _runCallbacks("onresize_end", pane); + + // resize all the adjacent panes, and adjust their toggler buttons + // when skipCallback passed, it means the controlling method will handle 'other panes' + if (!skipCallback) { + // also no callback if live-resize is in progress and NOT triggerEventsDuringLiveResize + if (!s.isSliding) sizeMidPanes(_c[pane].dir=="horz" ? "" : "center", skipResizeWhileDragging, force); + sizeHandles(); + } + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (size < oldSize && state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane, false, skipCallback ); + } + + // DEBUG - ALERT user/developer so they know there was a sizing problem + if (options.showDebugMessages && tries.length > 1) + _log(msg +'\nSee the Error Console for details.', true); + } + } + + /** + * @see initPanes(), sizePane(), resizeAll(), open(), close(), hide() + * @param {string} panes The pane(s) being resized, comma-delmited string + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, sizeMidPanes = function (panes, skipCallback, force) { + panes = (panes ? panes : "east,west,center").split(","); + + $.each(panes, function (i, pane) { + if (!$Ps[pane]) return; // NO PANE - skip + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isCenter= (pane=="center") + , hasRoom = true + , CSS = {} + , newCenter = calcNewCenterPaneDims() + ; + // update pane-state dimensions + $.extend(s, elDims($P)); + + if (pane === "center") { + if (!force && s.isVisible && newCenter.width === s.outerWidth && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // set state for makePaneFit() logic + $.extend(s, cssMinDims(pane), { + maxWidth: newCenter.width + , maxHeight: newCenter.height + }); + CSS = newCenter; + // convert OUTER width/height to CSS width/height + CSS.width = cssW($P, CSS.width); + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, CSS.height); + hasRoom = CSS.width >= 0 && CSS.height >= 0; // height >= 0 = ALWAYS TRUE NOW + // during layout init, try to shrink east/west panes to make room for center + if (!state.initialized && o.minWidth > s.outerWidth) { + var + reqPx = o.minWidth - s.outerWidth + , minE = options.east.minSize || 0 + , minW = options.west.minSize || 0 + , sizeE = state.east.size + , sizeW = state.west.size + , newE = sizeE + , newW = sizeW + ; + if (reqPx > 0 && state.east.isVisible && sizeE > minE) { + newE = max( sizeE-minE, sizeE-reqPx ); + reqPx -= sizeE-newE; + } + if (reqPx > 0 && state.west.isVisible && sizeW > minW) { + newW = max( sizeW-minW, sizeW-reqPx ); + reqPx -= sizeW-newW; + } + // IF we found enough extra space, then resize the border panes as calculated + if (reqPx === 0) { + if (sizeE != minE) + sizePane('east', newE, true, force, true); // true = skipCallback/noAnimation - initPanes will handle when done + if (sizeW != minW) + sizePane('west', newW, true, force, true); + // now start over! + sizeMidPanes('center', skipCallback, force); + return; // abort this loop + } + } + } + else { // for east and west, set only the height, which is same as center height + // set state.min/maxWidth/Height for makePaneFit() logic + if (s.isVisible && !s.noVerticalRoom) + $.extend(s, elDims($P), cssMinDims(pane)) + if (!force && !s.noVerticalRoom && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // east/west have same top, bottom & height as center + CSS.top = newCenter.top; + CSS.bottom = newCenter.bottom; + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, newCenter.height); + s.maxHeight = CSS.height; + hasRoom = (s.maxHeight >= 0); // ALWAYS TRUE NOW + if (!hasRoom) s.noVerticalRoom = true; // makePaneFit() logic + } + + if (hasRoom) { + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_start", pane); + + $P.css(CSS); // apply the CSS to pane + sizeHandles(pane); // also update resizer length + if (s.noRoom && !s.isClosed && !s.isHidden) + makePaneFit(pane); // will re-open/show auto-closed/hidden pane + if (s.isVisible) { + $.extend(s, elDims($P)); // update pane dimensions + if (state.initialized) sizeContent(pane); // also resize the contents, if exists + } + } + else if (!s.noRoom && s.isVisible) // no room for pane + makePaneFit(pane); // will hide or close pane + + if (!s.isVisible) + return true; // DONE - next pane + + /* + * Extra CSS for IE6 or IE7 in Quirks-mode - add 'width' to NORTH/SOUTH panes + * Normally these panes have only 'left' & 'right' positions so pane auto-sizes + * ALSO required when pane is an IFRAME because will NOT default to 'full width' + */ + if (pane === "center") { // finished processing midPanes + var b = $.layout.browser; + var fix = b.isIE6 || (b.msie && !$.support.boxModel); + if ($Ps.north && (fix || state.north.tagName=="IFRAME")) + $Ps.north.css("width", cssW($Ps.north, sC.innerWidth)); + if ($Ps.south && (fix || state.south.tagName=="IFRAME")) + $Ps.south.css("width", cssW($Ps.south, sC.innerWidth)); + } + + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_end", pane); + }); + } + + + /** + * @see window.onresize(), callbacks or custom code + */ +, resizeAll = function () { + if (!state.initialized) { + _initLayoutElements(); + return; // no need to resize since we just initialized! + } + var oldW = sC.innerWidth + , oldH = sC.innerHeight + ; + // cannot size layout when 'container' is hidden or collapsed + if (!$N.is(":visible:") ) return; + $.extend( state.container, elDims( $N ) ); // UPDATE container dimensions + if (!sC.outerHeight) return; + + // onresizeall_start will CANCEL resizing if returns false + // state.container has already been set, so user can access this info for calcuations + if (false === _runCallbacks("onresizeall_start")) return false; + + var // see if container is now 'smaller' than before + shrunkH = (sC.innerHeight < oldH) + , shrunkW = (sC.innerWidth < oldW) + , $P, o, s, dir + ; + // NOTE special order for sizing: S-N-E-W + $.each(["south","north","east","west"], function (i, pane) { + if (!$Ps[pane]) return; // no pane - SKIP + s = state[pane]; + o = options[pane]; + dir = _c[pane].dir; + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else { + setSizeLimits(pane); + makePaneFit(pane, false, true, true); // true=skipCallback/forceResize + } + }); + + sizeMidPanes("", true, true); // true=skipCallback, true=forceResize + sizeHandles(); // reposition the toggler elements + + // trigger all individual pane callbacks AFTER layout has finished resizing + o = options; // reuse alias + $.each(_c.allPanes, function (i, pane) { + $P = $Ps[pane]; + if (!$P) return; // SKIP + if (state[pane].isVisible) // undefined for non-existent panes + _runCallbacks("onresize_end", pane); // callback - if exists + }); + + _runCallbacks("onresizeall_end"); + //_triggerLayoutEvent(pane, 'resizeall'); + } + + /** + * Whenever a pane resizes or opens that has a nested layout, trigger resizeAll + * + * @param {string} pane The pane just resized or opened + */ +, resizeChildLayout = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + if (!options[pane].resizeChildLayout) return; + var $P = $Ps[pane] + , $C = $Cs[pane] + , d = "layout" + , P = Instance[pane] + , L = children[pane] + ; + // user may have manually set EITHER instance pointer, so handle that + if (P.child && !L) { + // have to reverse the pointers! + var el = P.child.container; + L = children[pane] = (el ? el.data(d) : 0) || null; // set pointer _directly_ to layout instance + } + + // if a layout-pointer exists, see if child has been destroyed + if (L && L.destroyed) + L = children[pane] = null; // clear child pointers + // no child layout pointer is set - see if there is a child layout NOW + if (!L) L = children[pane] = $P.data(d) || ($C ? $C.data(d) : 0) || null; // set/update child pointers + + // ALWAYS refresh the pane.child alias + P.child = children[pane]; + + if (L) L.resizeAll(); + } + + + /** + * IF pane has a content-div, then resize all elements inside pane to fit pane-height + * + * @param {string=} [panes=""] The pane(s) being resized + * @param {boolean=} [remeasure=false] Should the content (header/footer) be remeasured? + */ +, sizeContent = function (evt_or_panes, remeasure) { + if (!isInitialized()) return; + + var panes = evtPane.call(this, evt_or_panes); + panes = panes ? panes.split(",") : _c.allPanes; + + $.each(panes, function (idx, pane) { + var + $P = $Ps[pane] + , $C = $Cs[pane] + , o = options[pane] + , s = state[pane] + , m = s.content // m = measurements + ; + if (!$P || !$C || !$P.is(":visible")) return true; // NOT VISIBLE - skip + + // if content-element was REMOVED, update OR remove the pointer + if (!$C.length) { + initContent(pane, false); // false = do NOT sizeContent() - already there! + if (!$C) return; // no replacement element found - pointer have been removed + } + + // onsizecontent_start will CANCEL resizing if returns false + if (false === _runCallbacks("onsizecontent_start", pane)) return; + + // skip re-measuring offsets if live-resizing + if ((!s.isMoving && !s.isResizing) || o.liveContentResizing || remeasure || m.top == undefined) { + _measure(); + // if any footers are below pane-bottom, they may not measure correctly, + // so allow pane overflow and re-measure + if (m.hiddenFooters > 0 && $P.css("overflow") === "hidden") { + $P.css("overflow", "visible"); + _measure(); // remeasure while overflowing + $P.css("overflow", "hidden"); + } + } + // NOTE: spaceAbove/Below *includes* the pane paddingTop/Bottom, but not pane.borders + var newH = s.innerHeight - (m.spaceAbove - s.css.paddingTop) - (m.spaceBelow - s.css.paddingBottom); + + if (!$C.is(":visible") || m.height != newH) { + // size the Content element to fit new pane-size - will autoHide if not enough room + setOuterHeight($C, newH, true); // true=autoHide + m.height = newH; // save new height + }; + + if (state.initialized) + _runCallbacks("onsizecontent_end", pane); + + function _below ($E) { + return max(s.css.paddingBottom, (parseInt($E.css("marginBottom"), 10) || 0)); + }; + + function _measure () { + var + ignore = options[pane].contentIgnoreSelector + , $Fs = $C.nextAll().not(ignore || ':lt(0)') // not :lt(0) = ALL + , $Fs_vis = $Fs.filter(':visible') + , $F = $Fs_vis.filter(':last') + ; + m = { + top: $C[0].offsetTop + , height: $C.outerHeight() + , numFooters: $Fs.length + , hiddenFooters: $Fs.length - $Fs_vis.length + , spaceBelow: 0 // correct if no content footer ($E) + } + m.spaceAbove = m.top; // just for state - not used in calc + m.bottom = m.top + m.height; + if ($F.length) + //spaceBelow = (LastFooter.top + LastFooter.height) [footerBottom] - Content.bottom + max(LastFooter.marginBottom, pane.paddingBotom) + m.spaceBelow = ($F[0].offsetTop + $F.outerHeight()) - m.bottom + _below($F); + else // no footer - check marginBottom on Content element itself + m.spaceBelow = _below($C); + }; + }); + } + + + /** + * Called every time a pane is opened, closed, or resized to slide the togglers to 'center' and adjust their length if necessary + * + * @see initHandles(), open(), close(), resizeAll() + * @param {string=} [panes=""] The pane(s) being resized + */ +, sizeHandles = function (evt_or_panes) { + var panes = evtPane.call(this, evt_or_panes) + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (i, pane) { + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , $TC + ; + if (!$P || !$R) return; + + var + dir = _c[pane].dir + , _state = (s.isClosed ? "_closed" : "_open") + , spacing = o["spacing"+ _state] + , togAlign = o["togglerAlign"+ _state] + , togLen = o["togglerLength"+ _state] + , paneLen + , left + , offset + , CSS = {} + ; + + if (spacing === 0) { + $R.hide(); + return; + } + else if (!s.noRoom && !s.isHidden) // skip if resizer was hidden for any reason + $R.show(); // in case was previously hidden + + // Resizer Bar is ALWAYS same width/height of pane it is attached to + if (dir === "horz") { // north/south + //paneLen = $P.outerWidth(); // s.outerWidth || + paneLen = sC.innerWidth; // handle offscreen-panes + s.resizerLength = paneLen; + left = $.layout.cssNum($P, "left") + $R.css({ + width: cssW($R, paneLen) // account for borders & padding + , height: cssH($R, spacing) // ditto + , left: left > -9999 ? left : sC.insetLeft // handle offscreen-panes + }); + } + else { // east/west + paneLen = $P.outerHeight(); // s.outerHeight || + s.resizerLength = paneLen; + $R.css({ + height: cssH($R, paneLen) // account for borders & padding + , width: cssW($R, spacing) // ditto + , top: sC.insetTop + getPaneSize("north", true) // TODO: what if no North pane? + //, top: $.layout.cssNum($Ps["center"], "top") + }); + } + + // remove hover classes + removeHover( o, $R ); + + if ($T) { + if (togLen === 0 || (s.isSliding && o.hideTogglerOnSlide)) { + $T.hide(); // always HIDE the toggler when 'sliding' + return; + } + else + $T.show(); // in case was previously hidden + + if (!(togLen > 0) || togLen === "100%" || togLen > paneLen) { + togLen = paneLen; + offset = 0; + } + else { // calculate 'offset' based on options.PANE.togglerAlign_open/closed + if (isStr(togAlign)) { + switch (togAlign) { + case "top": + case "left": offset = 0; + break; + case "bottom": + case "right": offset = paneLen - togLen; + break; + case "middle": + case "center": + default: offset = round((paneLen - togLen) / 2); // 'default' catches typos + } + } + else { // togAlign = number + var x = parseInt(togAlign, 10); // + if (togAlign >= 0) offset = x; + else offset = paneLen - togLen + x; // NOTE: x is negative! + } + } + + if (dir === "horz") { // north/south + var width = cssW($T, togLen); + $T.css({ + width: width // account for borders & padding + , height: cssH($T, spacing) // ditto + , left: offset // TODO: VERIFY that toggler positions correctly for ALL values + , top: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginLeft", round((width-$TC.outerWidth())/2)); // could be negative + }); + } + else { // east/west + var height = cssH($T, togLen); + $T.css({ + height: height // account for borders & padding + , width: cssW($T, spacing) // ditto + , top: offset // POSITION the toggler + , left: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginTop", round((height-$TC.outerHeight())/2)); // could be negative + }); + } + + // remove ALL hover classes + removeHover( 0, $T ); + } + + // DONE measuring and sizing this resizer/toggler, so can be 'hidden' now + if (!state.initialized && (o.initHidden || s.noRoom)) { + $R.hide(); + if ($T) $T.hide(); + } + }); + } + + + /** + * @param {string} pane + */ +, enableClosable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + , o = options[pane] + ; + if (!$T) return; + o.closable = true; + $T .bind("click."+ sID, function(evt){ evt.stopPropagation(); toggle(pane); }) + .css("visibility", "visible") + .css("cursor", "pointer") + .attr("title", state[pane].isClosed ? o.togglerTip_closed : o.togglerTip_open) // may be blank + .show(); + } + /** + * @param {string} pane + * @param {boolean=} [hide=false] + */ +, disableClosable = function (evt_or_pane, hide) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + ; + if (!$T) return; + options[pane].closable = false; + // is closable is disable, then pane MUST be open! + if (state[pane].isClosed) open(pane, false, true); + $T .unbind("."+ sID) + .css("visibility", hide ? "hidden" : "visible") // instead of hide(), which creates logic issues + .css("cursor", "default") + .attr("title", ""); + } + + + /** + * @param {string} pane + */ +, enableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].slidable = true; + if (s.isClosed) + bindStartSlidingEvent(pane, true); + } + /** + * @param {string} pane + */ +, disableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R) return; + options[pane].slidable = false; + if (state[pane].isSliding) + close(pane, false, true); + else { + bindStartSlidingEvent(pane, false); + $R .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + } + + + /** + * @param {string} pane + */ +, enableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + , o = options[pane] + ; + if (!$R || !$R.data('draggable')) return; + o.resizable = true; + $R.draggable("enable"); + if (!state[pane].isClosed) + $R .css("cursor", o.resizerCursor) + .attr("title", o.resizerTip); + } + /** + * @param {string} pane + */ +, disableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].resizable = false; + $R .draggable("disable") + .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + + + /** + * Move a pane from source-side (eg, west) to target-side (eg, east) + * If pane exists on target-side, move that to source-side, ie, 'swap' the panes + * + * @param {string} pane1 The pane/edge being swapped + * @param {string} pane2 ditto + */ +, swapPanes = function (evt_or_pane1, pane2) { + if (!isInitialized()) return; + var pane1 = evtPane.call(this, evt_or_pane1); + // change state.edge NOW so callbacks can know where pane is headed... + state[pane1].edge = pane2; + state[pane2].edge = pane1; + // run these even if NOT state.initialized + if (false === _runCallbacks("onswap_start", pane1) + || false === _runCallbacks("onswap_start", pane2) + ) { + state[pane1].edge = pane1; // reset + state[pane2].edge = pane2; + return; + } + + var + oPane1 = copy( pane1 ) + , oPane2 = copy( pane2 ) + , sizes = {} + ; + sizes[pane1] = oPane1 ? oPane1.state.size : 0; + sizes[pane2] = oPane2 ? oPane2.state.size : 0; + + // clear pointers & state + $Ps[pane1] = false; + $Ps[pane2] = false; + state[pane1] = {}; + state[pane2] = {}; + + // ALWAYS remove the resizer & toggler elements + if ($Ts[pane1]) $Ts[pane1].remove(); + if ($Ts[pane2]) $Ts[pane2].remove(); + if ($Rs[pane1]) $Rs[pane1].remove(); + if ($Rs[pane2]) $Rs[pane2].remove(); + $Rs[pane1] = $Rs[pane2] = $Ts[pane1] = $Ts[pane2] = false; + + // transfer element pointers and data to NEW Layout keys + move( oPane1, pane2 ); + move( oPane2, pane1 ); + + // cleanup objects + oPane1 = oPane2 = sizes = null; + + // make panes 'visible' again + if ($Ps[pane1]) $Ps[pane1].css(_c.visible); + if ($Ps[pane2]) $Ps[pane2].css(_c.visible); + + // fix any size discrepancies caused by swap + resizeAll(); + + // run these even if NOT state.initialized + _runCallbacks("onswap_end", pane1); + _runCallbacks("onswap_end", pane2); + + return; + + function copy (n) { // n = pane + var + $P = $Ps[n] + , $C = $Cs[n] + ; + return !$P ? false : { + pane: n + , P: $P ? $P[0] : false + , C: $C ? $C[0] : false + , state: $.extend(true, {}, state[n]) + , options: $.extend(true, {}, options[n]) + } + }; + + function move (oPane, pane) { + if (!oPane) return; + var + P = oPane.P + , C = oPane.C + , oldPane = oPane.pane + , c = _c[pane] + , side = c.side.toLowerCase() + , inset = "inset"+ c.side + // save pane-options that should be retained + , s = $.extend({}, state[pane]) + , o = options[pane] + // RETAIN side-specific FX Settings - more below + , fx = { resizerCursor: o.resizerCursor } + , re, size, pos + ; + $.each("fxName,fxSpeed,fxSettings".split(","), function (i, k) { + fx[k +"_open"] = o[k +"_open"]; + fx[k +"_close"] = o[k +"_close"]; + fx[k +"_size"] = o[k +"_size"]; + }); + + // update object pointers and attributes + $Ps[pane] = $(P) + .data({ + layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + }) + .css(_c.hidden) + .css(c.cssReq) + ; + $Cs[pane] = C ? $(C) : false; + + // set options and state + options[pane] = $.extend({}, oPane.options, fx); + state[pane] = $.extend({}, oPane.state); + + // change classNames on the pane, eg: ui-layout-pane-east ==> ui-layout-pane-west + re = new RegExp(o.paneClass +"-"+ oldPane, "g"); + P.className = P.className.replace(re, o.paneClass +"-"+ pane); + + // ALWAYS regenerate the resizer & toggler elements + initHandles(pane); // create the required resizer & toggler + + // if moving to different orientation, then keep 'target' pane size + if (c.dir != _c[oldPane].dir) { + size = sizes[pane] || 0; + setSizeLimits(pane); // update pane-state + size = max(size, state[pane].minSize); + // use manualSizePane to disable autoResize - not useful after panes are swapped + manualSizePane(pane, size, true, true); // true/true = skipCallback/noAnimation + } + else // move the resizer here + $Rs[pane].css(side, sC[inset] + (state[pane].isVisible ? getPaneSize(pane) : 0)); + + + // ADD CLASSNAMES & SLIDE-BINDINGS + if (oPane.state.isVisible && !s.isVisible) + setAsOpen(pane, true); // true = skipCallback + else { + setAsClosed(pane); + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + // DESTROY the object + oPane = null; + }; + } + + + /** + * INTERNAL method to sync pin-buttons when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), setAsOpen(), setAsClosed() + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns = function (pane, doPin) { + if ($.layout.plugins.buttons) + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(Instance, $(selector), pane, doPin); + }); + } + +; // END var DECLARATIONS + + /** + * Capture keys when enableCursorHotkey - toggle pane if hotkey pressed + * + * @see document.keydown() + */ + function keyDown (evt) { + if (!evt) return true; + var code = evt.keyCode; + if (code < 33) return true; // ignore special keys: ENTER, TAB, etc + + var + PANE = { + 38: "north" // Up Cursor - $.ui.keyCode.UP + , 40: "south" // Down Cursor - $.ui.keyCode.DOWN + , 37: "west" // Left Cursor - $.ui.keyCode.LEFT + , 39: "east" // Right Cursor - $.ui.keyCode.RIGHT + } + , ALT = evt.altKey // no worky! + , SHIFT = evt.shiftKey + , CTRL = evt.ctrlKey + , CURSOR = (CTRL && code >= 37 && code <= 40) + , o, k, m, pane + ; + + if (CURSOR && options[PANE[code]].enableCursorHotkey) // valid cursor-hotkey + pane = PANE[code]; + else if (CTRL || SHIFT) // check to see if this matches a custom-hotkey + $.each(_c.borderPanes, function (i, p) { // loop each pane to check its hotkey + o = options[p]; + k = o.customHotkey; + m = o.customHotkeyModifier; // if missing or invalid, treated as "CTRL+SHIFT" + if ((SHIFT && m=="SHIFT") || (CTRL && m=="CTRL") || (CTRL && SHIFT)) { // Modifier matches + if (k && code === (isNaN(k) || k <= 9 ? k.toUpperCase().charCodeAt(0) : k)) { // Key matches + pane = p; + return false; // BREAK + } + } + }); + + // validate pane + if (!pane || !$Ps[pane] || !options[pane].closable || state[pane].isHidden) + return true; + + toggle(pane); + + evt.stopPropagation(); + evt.returnValue = false; // CANCEL key + return false; + }; + + +/* + * ###################################### + * UTILITY METHODS + * called externally or by initButtons + * ###################################### + */ + + /** + * Change/reset a pane overflow setting & zIndex to allow popups/drop-downs to work + * + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function allowOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + ; + + // if pane is already raised, then reset it before doing it again! + // this would happen if allowOverflow is attached to BOTH the pane and an element + if (s.cssSaved) + resetOverflow(pane); // reset previous CSS before continuing + + // if pane is raised by sliding or resizing, or its closed, then abort + if (s.isSliding || s.isResizing || s.isClosed) { + s.cssSaved = false; + return; + } + + var + newCSS = { zIndex: (options.zIndexes.resizer_normal + 1) } + , curCSS = {} + , of = $P.css("overflow") + , ofX = $P.css("overflowX") + , ofY = $P.css("overflowY") + ; + // determine which, if any, overflow settings need to be changed + if (of != "visible") { + curCSS.overflow = of; + newCSS.overflow = "visible"; + } + if (ofX && !ofX.match(/visible|auto/)) { + curCSS.overflowX = ofX; + newCSS.overflowX = "visible"; + } + if (ofY && !ofY.match(/visible|auto/)) { + curCSS.overflowY = ofX; + newCSS.overflowY = "visible"; + } + + // save the current overflow settings - even if blank! + s.cssSaved = curCSS; + + // apply new CSS to raise zIndex and, if necessary, make overflow 'visible' + $P.css( newCSS ); + + // make sure the zIndex of all other panes is normal + $.each(_c.allPanes, function(i, p) { + if (p != pane) resetOverflow(p); + }); + + }; + /** + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function resetOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + , CSS = s.cssSaved || {} + ; + // reset the zIndex + if (!s.isSliding && !s.isResizing) + $P.css("zIndex", options.zIndexes.pane_normal); + + // reset Overflow - if necessary + $P.css( CSS ); + + // clear var + s.cssSaved = false; + }; + +/* + * ##################### + * CREATE/RETURN LAYOUT + * ##################### + */ + + // validate that container exists + var $N = $(this).eq(0); // FIRST matching Container element + if (!$N.length) { + if (options.showErrorMessages) + _log( lang.errContainerMissing, true ); + return null; + }; + + // Users retrieve Instance of a layout with: $N.layout() OR $N.data("layout") + // return the Instance-pointer if layout has already been initialized + if ($N.data("layoutContainer") && $N.data("layout")) + return $N.data("layout"); // cached pointer + + // init global vars + var + $Ps = {} // Panes x5 - set in initPanes() + , $Cs = {} // Content x5 - set in initPanes() + , $Rs = {} // Resizers x4 - set in initHandles() + , $Ts = {} // Togglers x4 - set in initHandles() + , $Ms = $([]) // Masks - up to 2 masks per pane (IFRAME + DIV) + // aliases for code brevity + , sC = state.container // alias for easy access to 'container dimensions' + , sID = state.id // alias for unique layout ID/namespace - eg: "layout435" + ; + + // create Instance object to expose data & option Properties, and primary action Methods + var Instance = { + // layout data + options: options // property - options hash + , state: state // property - dimensions hash + // object pointers + , container: $N // property - object pointers for layout container + , panes: $Ps // property - object pointers for ALL Panes: panes.north, panes.center + , contents: $Cs // property - object pointers for ALL Content: contents.north, contents.center + , resizers: $Rs // property - object pointers for ALL Resizers, eg: resizers.north + , togglers: $Ts // property - object pointers for ALL Togglers, eg: togglers.north + // border-pane open/close + , hide: hide // method - ditto + , show: show // method - ditto + , toggle: toggle // method - pass a 'pane' ("north", "west", etc) + , open: open // method - ditto + , close: close // method - ditto + , slideOpen: slideOpen // method - ditto + , slideClose: slideClose // method - ditto + , slideToggle: slideToggle // method - ditto + // pane actions + , setSizeLimits: setSizeLimits // method - pass a 'pane' - update state min/max data + , _sizePane: sizePane // method -intended for user by plugins only! + , sizePane: manualSizePane // method - pass a 'pane' AND an 'outer-size' in pixels or percent, or 'auto' + , sizeContent: sizeContent // method - pass a 'pane' + , swapPanes: swapPanes // method - pass TWO 'panes' - will swap them + // pane element methods + , initContent: initContent // method - ditto + , addPane: addPane // method - pass a 'pane' + , removePane: removePane // method - pass a 'pane' to remove from layout, add 'true' to delete the pane-elem + , createChildLayout: createChildLayout// method - pass a 'pane' and (optional) layout-options (OVERRIDES options[pane].childOptions + // special pane option setting + , enableClosable: enableClosable // method - pass a 'pane' + , disableClosable: disableClosable // method - ditto + , enableSlidable: enableSlidable // method - ditto + , disableSlidable: disableSlidable // method - ditto + , enableResizable: enableResizable // method - ditto + , disableResizable: disableResizable// method - ditto + // utility methods for panes + , allowOverflow: allowOverflow // utility - pass calling element (this) + , resetOverflow: resetOverflow // utility - ditto + // layout control + , destroy: destroy // method - no parameters + , initPanes: isInitialized // method - no parameters + , resizeAll: resizeAll // method - no parameters + // callback triggering + , runCallbacks: _runCallbacks // method - pass evtName & pane (if a pane-event), eg: trigger("onopen", "west") + // alias collections of options, state and children - created in addPane and extended elsewhere + , hasParentLayout: false // set by initContainer() + , children: children // pointers to child-layouts, eg: Instance.children["west"] + , north: false // alias group: { name: pane, pane: $Ps[pane], options: options[pane], state: state[pane], child: children[pane] } + , south: false // ditto + , west: false // ditto + , east: false // ditto + , center: false // ditto + }; + + // create the border layout NOW + if (_create() === 'cancel') // onload_start callback returned false to CANCEL layout creation + return null; + else // true OR false -- if layout-elements did NOT init (hidden or do not exist), can auto-init later + return Instance; // return the Instance object + +} + + + + +/** + * jquery.layout.state 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * @dependancies: $.ui.cookie (above) + * + * @support: http://groups.google.com/group/jquery-ui-layout + */ +/* + * State-management options stored in options.stateManagement, which includes a .cookie hash + * Default options saves ALL KEYS for ALL PANES, ie: pane.size, pane.isClosed, pane.isHidden + * + * // STATE/COOKIE OPTIONS + * @example $(el).layout({ + stateManagement: { + enabled: true + , stateKeys: "east.size,west.size,east.isClosed,west.isClosed" + , cookie: { name: "appLayout", path: "/" } + } + }) + * @example $(el).layout({ stateManagement__enabled: true }) // enable auto-state-management using cookies + * @example $(el).layout({ stateManagement__cookie: { name: "appLayout", path: "/" } }) + * @example $(el).layout({ stateManagement__cookie__name: "appLayout", stateManagement__cookie__path: "/" }) + * + * // STATE/COOKIE METHODS + * @example myLayout.saveCookie( "west.isClosed,north.size,south.isHidden", {expires: 7} ); + * @example myLayout.loadCookie(); + * @example myLayout.deleteCookie(); + * @example var JSON = myLayout.readState(); // CURRENT Layout State + * @example var JSON = myLayout.readCookie(); // SAVED Layout State (from cookie) + * @example var JSON = myLayout.state.stateData; // LAST LOADED Layout State (cookie saved in layout.state hash) + * + * CUSTOM STATE-MANAGEMENT (eg, saved in a database) + * @example var JSON = myLayout.readState( "west.isClosed,north.size,south.isHidden" ); + * @example myLayout.loadState( JSON ); + */ + +/** + * UI COOKIE UTILITY + * + * A $.cookie OR $.ui.cookie namespace *should be standard*, but until then... + * This creates $.ui.cookie so Layout does not need the cookie.jquery.js plugin + * NOTE: This utility is REQUIRED by the layout.state plugin + * + * Cookie methods in Layout are created as part of State Management + */ +if (!$.ui) $.ui = {}; +$.ui.cookie = { + + // cookieEnabled is not in DOM specs, but DOES works in all browsers,including IE6 + acceptsCookies: !!navigator.cookieEnabled + +, read: function (name) { + var + c = document.cookie + , cs = c ? c.split(';') : [] + , pair // loop var + ; + for (var i=0, n=cs.length; i < n; i++) { + pair = $.trim(cs[i]).split('='); // name=value pair + if (pair[0] == name) // found the layout cookie + return decodeURIComponent(pair[1]); + + } + return null; + } + +, write: function (name, val, cookieOpts) { + var + params = '' + , date = '' + , clear = false + , o = cookieOpts || {} + , x = o.expires + ; + if (x && x.toUTCString) + date = x; + else if (x === null || typeof x === 'number') { + date = new Date(); + if (x > 0) + date.setDate(date.getDate() + x); + else { + date.setFullYear(1970); + clear = true; + } + } + if (date) params += ';expires='+ date.toUTCString(); + if (o.path) params += ';path='+ o.path; + if (o.domain) params += ';domain='+ o.domain; + if (o.secure) params += ';secure'; + document.cookie = name +'='+ (clear ? "" : encodeURIComponent( val )) + params; // write or clear cookie + } + +, clear: function (name) { + $.ui.cookie.write(name, '', {expires: -1}); + } + +}; +// if cookie.jquery.js is not loaded, create an alias to replicate it +// this may be useful to other plugins or code dependent on that plugin +if (!$.cookie) $.cookie = function (k, v, o) { + var C = $.ui.cookie; + if (v === null) + C.clear(k); + else if (v === undefined) + return C.read(k); + else + C.write(k, v, o); +}; + + +// tell Layout that the state plugin is available +$.layout.plugins.stateManagement = true; + +// Add State-Management options to layout.defaults +$.layout.config.optionRootKeys.push("stateManagement"); +$.layout.defaults.stateManagement = { + enabled: false // true = enable state-management, even if not using cookies +, autoSave: true // Save a state-cookie when page exits? +, autoLoad: true // Load the state-cookie when Layout inits? + // List state-data to save - must be pane-specific +, stateKeys: "north.size,south.size,east.size,west.size,"+ + "north.isClosed,south.isClosed,east.isClosed,west.isClosed,"+ + "north.isHidden,south.isHidden,east.isHidden,west.isHidden" +, cookie: { + name: "" // If not specified, will use Layout.name, else just "Layout" + , domain: "" // blank = current domain + , path: "" // blank = current page, '/' = entire website + , expires: "" // 'days' to keep cookie - leave blank for 'session cookie' + , secure: false + } +}; +// Set stateManagement as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("stateManagement"); + +/* + * State Management methods + */ +$.layout.state = { + + /** + * Get the current layout state and save it to a cookie + * + * myLayout.saveCookie( keys, cookieOpts ) + * + * @param {Object} inst + * @param {(string|Array)=} keys + * @param {Object=} opts + */ + saveCookie: function (inst, keys, cookieOpts) { + var o = inst.options + , oS = o.stateManagement + , oC = $.extend(true, {}, oS.cookie, cookieOpts || null) + , data = inst.state.stateData = inst.readState( keys || oS.stateKeys ) // read current panes-state + ; + $.ui.cookie.write( oC.name || o.name || "Layout", $.layout.state.encodeJSON(data), oC ); + return $.extend(true, {}, data); // return COPY of state.stateData data + } + + /** + * Remove the state cookie + * + * @param {Object} inst + */ +, deleteCookie: function (inst) { + var o = inst.options; + $.ui.cookie.clear( o.stateManagement.cookie.name || o.name || "Layout" ); + } + + /** + * Read & return data from the cookie - as JSON + * + * @param {Object} inst + */ +, readCookie: function (inst) { + var o = inst.options; + var c = $.ui.cookie.read( o.stateManagement.cookie.name || o.name || "Layout" ); + // convert cookie string back to a hash and return it + return c ? $.layout.state.decodeJSON(c) : {}; + } + + /** + * Get data from the cookie and USE IT to loadState + * + * @param {Object} inst + */ +, loadCookie: function (inst) { + var c = $.layout.state.readCookie(inst); // READ the cookie + if (c) { + inst.state.stateData = $.extend(true, {}, c); // SET state.stateData + inst.loadState(c); // LOAD the retrieved state + } + return c; + } + + /** + * Update layout options from the cookie, if one exists + * + * @param {Object} inst + * @param {Object=} stateData + * @param {boolean=} animate + */ +, loadState: function (inst, stateData, animate) { + stateData = $.layout.transformData( stateData ); // panes = default subkey + if ($.isEmptyObject( stateData )) return; + $.extend(true, inst.options, stateData); // update layout options + // if layout has already been initialized, then UPDATE layout state + if (inst.state.initialized) { + var pane, vis, o, s, h, c + , noAnimate = (animate===false) + ; + $.each($.layout.config.borderPanes, function (idx, pane) { + state = inst.state[pane]; + o = stateData[ pane ]; + if (typeof o != 'object') return; // no key, continue + s = o.size; + c = o.initClosed; + h = o.initHidden; + vis = state.isVisible; + // resize BEFORE opening + if (!vis) + inst.sizePane(pane, s, false, false); + if (h === true) inst.hide(pane, noAnimate); + else if (c === false) inst.open (pane, false, noAnimate); + else if (c === true) inst.close(pane, false, noAnimate); + else if (h === false) inst.show (pane, false, noAnimate); + // resize AFTER any other actions + if (vis) + inst.sizePane(pane, s, false, noAnimate); // animate resize if option passed + }); + }; + } + + /** + * Get the *current layout state* and return it as a hash + * + * @param {Object=} inst + * @param {(string|Array)=} keys + */ +, readState: function (inst, keys) { + var + data = {} + , alt = { isClosed: 'initClosed', isHidden: 'initHidden' } + , state = inst.state + , panes = $.layout.config.allPanes + , pair, pane, key, val + ; + if (!keys) keys = inst.options.stateManagement.stateKeys; // if called by user + if ($.isArray(keys)) keys = keys.join(","); + // convert keys to an array and change delimiters from '__' to '.' + keys = keys.replace(/__/g, ".").split(','); + // loop keys and create a data hash + for (var i=0, n=keys.length; i < n; i++) { + pair = keys[i].split("."); + pane = pair[0]; + key = pair[1]; + if ($.inArray(pane, panes) < 0) continue; // bad pane! + val = state[ pane ][ key ]; + if (val == undefined) continue; + if (key=="isClosed" && state[pane]["isSliding"]) + val = true; // if sliding, then *really* isClosed + ( data[pane] || (data[pane]={}) )[ alt[key] ? alt[key] : key ] = val; + } + return data; + } + + /** + * Stringify a JSON hash so can save in a cookie or db-field + */ +, encodeJSON: function (JSON) { + return parse(JSON); + function parse (h) { + var D=[], i=0, k, v, t; // k = key, v = value + for (k in h) { + v = h[k]; + t = typeof v; + if (t == 'string') // STRING - add quotes + v = '"'+ v +'"'; + else if (t == 'object') // SUB-KEY - recurse into it + v = parse(v); + D[i++] = '"'+ k +'":'+ v; + } + return '{'+ D.join(',') +'}'; + }; + } + + /** + * Convert stringified JSON back to a hash object + * @see $.parseJSON(), adding in jQuery 1.4.1 + */ +, decodeJSON: function (str) { + try { return $.parseJSON ? $.parseJSON(str) : window["eval"]("("+ str +")") || {}; } + catch (e) { return {}; } + } + + +, _create: function (inst) { + var _ = $.layout.state; + // ADD State-Management plugin methods to inst + $.extend( inst, { + // readCookie - update options from cookie - returns hash of cookie data + readCookie: function () { return _.readCookie(inst); } + // deleteCookie + , deleteCookie: function () { _.deleteCookie(inst); } + // saveCookie - optionally pass keys-list and cookie-options (hash) + , saveCookie: function (keys, cookieOpts) { return _.saveCookie(inst, keys, cookieOpts); } + // loadCookie - readCookie and use to loadState() - returns hash of cookie data + , loadCookie: function () { return _.loadCookie(inst); } + // loadState - pass a hash of state to use to update options + , loadState: function (stateData, animate) { _.loadState(inst, stateData, animate); } + // readState - returns hash of current layout-state + , readState: function (keys) { return _.readState(inst, keys); } + // add JSON utility methods too... + , encodeJSON: _.encodeJSON + , decodeJSON: _.decodeJSON + }); + + // init state.stateData key, even if plugin is initially disabled + inst.state.stateData = {}; + + // read and load cookie-data per options + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoLoad) // update the options from the cookie + inst.loadCookie(); + else // don't modify options - just store cookie data in state.stateData + inst.state.stateData = inst.readCookie(); + } + } + +, _unload: function (inst) { + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoSave) // save a state-cookie automatically + inst.saveCookie(); + else // don't save a cookie, but do store state-data in state.stateData key + inst.state.stateData = inst.readState(); + } + } + +}; + +// add state initialization method to Layout's onCreate array of functions +$.layout.onCreate.push( $.layout.state._create ); +$.layout.onUnload.push( $.layout.state._unload ); + + + + +/** + * jquery.layout.buttons 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * Docs: [ to come ] + * Tips: [ to come ] + */ + +// tell Layout that the state plugin is available +$.layout.plugins.buttons = true; + +// Add buttons options to layout.defaults +$.layout.defaults.autoBindCustomButtons = false; +// Specify autoBindCustomButtons as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("autoBindCustomButtons"); + +var lang = $.layout.language; + +/* + * Button methods + */ +$.layout.buttons = { + + /** + * Searches for .ui-layout-button-xxx elements and auto-binds them as layout-buttons + * + * @see _create() + * + * @param {Object} inst Layout Instance object + */ + init: function (inst) { + var pre = "ui-layout-button-" + , layout = inst.options.name || "" + , name; + $.each("toggle,open,close,pin,toggle-slide,open-slide".split(","), function (i, action) { + $.each($.layout.config.borderPanes, function (ii, pane) { + $("."+pre+action+"-"+pane).each(function(){ + // if button was previously 'bound', data.layoutName was set, but is blank if layout has no 'name' + name = $(this).data("layoutName") || $(this).attr("layoutName"); + if (name == undefined || name === layout) + inst.bindButton(this, action, pane); + }); + }); + }); + } + + /** + * Helper function to validate params received by addButton utilities + * + * Two classes are added to the element, based on the buttonClass... + * The type of button is appended to create the 2nd className: + * - ui-layout-button-pin // action btnClass + * - ui-layout-button-pin-west // action btnClass + pane + * - ui-layout-button-toggle + * - ui-layout-button-open + * - ui-layout-button-close + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * + * @return {Array.} If both params valid, the element matching 'selector' in a jQuery wrapper - otherwise returns null + */ +, get: function (inst, selector, pane, action) { + var $E = $(selector) + , o = inst.options + , err = o.showErrorMessages + ; + if (!$E.length) { // element not found + if (err) $.layout.msg(lang.errButton + lang.selector +": "+ selector, true); + } + else if ($.inArray(pane, $.layout.config.borderPanes) < 0) { // invalid 'pane' sepecified + if (err) $.layout.msg(lang.errButton + lang.pane +": "+ pane, true); + $E = $(""); // NO BUTTON + } + else { // VALID + var btn = o[pane].buttonClass +"-"+ action; + $E .addClass( btn +" "+ btn +"-"+ pane ) + .data("layoutName", o.name); // add layout identifier - even if blank! + } + return $E; + } + + + /** + * NEW syntax for binding layout-buttons - will eventually replace addToggle, addOpen, etc. + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} action + * @param {string} pane + */ +, bind: function (inst, selector, action, pane) { + var _ = $.layout.buttons; + switch (action.toLowerCase()) { + case "toggle": _.addToggle (inst, selector, pane); break; + case "open": _.addOpen (inst, selector, pane); break; + case "close": _.addClose (inst, selector, pane); break; + case "pin": _.addPin (inst, selector, pane); break; + case "toggle-slide": _.addToggle (inst, selector, pane, true); break; + case "open-slide": _.addOpen (inst, selector, pane, true); break; + } + return inst; + } + + /** + * Add a custom Toggler button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addToggle: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "toggle") + .click(function(evt){ + inst.toggle(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Open button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addOpen: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "open") + .attr("title", lang.Open) + .click(function (evt) { + inst.open(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Close button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + */ +, addClose: function (inst, selector, pane) { + $.layout.buttons.get(inst, selector, pane, "close") + .attr("title", lang.Close) + .click(function (evt) { + inst.close(pane); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Pin button for a pane + * + * Four classes are added to the element, based on the paneClass for the associated pane... + * Assuming the default paneClass and the pin is 'up', these classes are added for a west-pane pin: + * - ui-layout-pane-pin + * - ui-layout-pane-west-pin + * - ui-layout-pane-pin-up + * - ui-layout-pane-west-pin-up + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the pin is for: 'north', 'south', etc. + */ +, addPin: function (inst, selector, pane) { + var _ = $.layout.buttons + , $E = _.get(inst, selector, pane, "pin"); + if ($E.length) { + var s = inst.state[pane]; + $E.click(function (evt) { + _.setPinState(inst, $(this), pane, (s.isSliding || s.isClosed)); + if (s.isSliding || s.isClosed) inst.open( pane ); // change from sliding to open + else inst.close( pane ); // slide-closed + evt.stopPropagation(); + }); + // add up/down pin attributes and classes + _.setPinState(inst, $E, pane, (!s.isClosed && !s.isSliding)); + // add this pin to the pane data so we can 'sync it' automatically + // PANE.pins key is an array so we can store multiple pins for each pane + s.pins.push( selector ); // just save the selector string + } + return inst; + } + + /** + * Change the class of the pin button to make it look 'up' or 'down' + * + * @see addPin(), syncPins() + * + * @param {Object} inst Layout Instance object + * @param {Array.} $Pin The pin-span element in a jQuery wrapper + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin true = set the pin 'down', false = set it 'up' + */ +, setPinState: function (inst, $Pin, pane, doPin) { + var updown = $Pin.attr("pin"); + if (updown && doPin === (updown=="down")) return; // already in correct state + var + pin = inst.options[pane].buttonClass +"-pin" + , side = pin +"-"+ pane + , UP = pin +"-up "+ side +"-up" + , DN = pin +"-down "+side +"-down" + ; + $Pin + .attr("pin", doPin ? "down" : "up") // logic + .attr("title", doPin ? lang.Unpin : lang.Pin) + .removeClass( doPin ? UP : DN ) + .addClass( doPin ? DN : UP ) + ; + } + + /** + * INTERNAL function to sync 'pin buttons' when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), close() + * + * @param {Object} inst Layout Instance object + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns: function (inst, pane, doPin) { + // REAL METHOD IS _INSIDE_ LAYOUT - THIS IS HERE JUST FOR REFERENCE + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(inst, $(selector), pane, doPin); + }); + } + + +, _load: function (inst) { + var _ = $.layout.buttons; + // ADD Button methods to Layout Instance + // Note: sel = jQuery Selector string + $.extend( inst, { + bindButton: function (sel, action, pane) { return _.bind(inst, sel, action, pane); } + // DEPRECATED METHODS + , addToggleBtn: function (sel, pane, slide) { return _.addToggle(inst, sel, pane, slide); } + , addOpenBtn: function (sel, pane, slide) { return _.addOpen(inst, sel, pane, slide); } + , addCloseBtn: function (sel, pane) { return _.addClose(inst, sel, pane); } + , addPinBtn: function (sel, pane) { return _.addPin(inst, sel, pane); } + }); + + // init state array to hold pin-buttons + for (var i=0; i<4; i++) { + var pane = $.layout.config.borderPanes[i]; + inst.state[pane].pins = []; + } + + // auto-init buttons onLoad if option is enabled + if ( inst.options.autoBindCustomButtons ) + _.init(inst); + } + +, _unload: function (inst) { + // TODO: unbind all buttons??? + } + +}; + +// add initialization method to Layout's onLoad array of functions +$.layout.onLoad.push( $.layout.buttons._load ); +//$.layout.onUnload.push( $.layout.buttons._unload ); + + + +/** + * jquery.layout.browserZoom 1.0 + * $Date: 2011-12-29 08:00:00 (Thu, 29 Dec 2011) $ + * + * Copyright (c) 2012 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * @todo: Extend logic to handle other problematic zooming in browsers + * @todo: Add hotkey/mousewheel bindings to _instantly_ respond to these zoom event + */ + +// tell Layout that the plugin is available +$.layout.plugins.browserZoom = true; + +$.layout.defaults.browserZoomCheckInterval = 1000; +$.layout.optionsMap.layout.push("browserZoomCheckInterval"); + +/* + * browserZoom methods + */ +$.layout.browserZoom = { + + _init: function (inst) { + // abort if browser does not need this check + if ($.layout.browserZoom.ratio() !== false) + $.layout.browserZoom._setTimer(inst); + } + +, _setTimer: function (inst) { + // abort if layout destroyed or browser does not need this check + if (inst.destroyed) return; + var o = inst.options + , s = inst.state + // don't need check if inst has parentLayout, but check occassionally in case parent destroyed! + // MINIMUM 100ms interval, for performance + , ms = inst.hasParentLayout ? 5000 : Math.max( o.browserZoomCheckInterval, 100 ) + ; + // set the timer + setTimeout(function(){ + if (inst.destroyed || !o.resizeWithWindow) return; + var d = $.layout.browserZoom.ratio(); + if (d !== s.browserZoom) { + s.browserZoom = d; + inst.resizeAll(); + } + // set a NEW timeout + $.layout.browserZoom._setTimer(inst); + } + , ms ); + } + +, ratio: function () { + var w = window + , s = screen + , d = document + , dE = d.documentElement || d.body + , b = $.layout.browser + , v = b.version + , r, sW, cW + ; + // we can ignore all browsers that fire window.resize event onZoom + if ((b.msie && v > 8) + || !b.msie + ) return false; // don't need to track zoom + + if (s.deviceXDPI) + return calc(s.deviceXDPI, s.systemXDPI); + // everything below is just for future reference! + if (b.webkit && (r = d.body.getBoundingClientRect)) + return calc((r.left - r.right), d.body.offsetWidth); + if (b.webkit && (sW = w.outerWidth)) + return calc(sW, w.innerWidth); + if ((sW = s.width) && (cW = dE.clientWidth)) + return calc(sW, cW); + return false; // no match, so cannot - or don't need to - track zoom + + function calc (x,y) { return (parseInt(x,10) / parseInt(y,10) * 100).toFixed(); } + } + +}; +// add initialization method to Layout's onLoad array of functions +$.layout.onReady.push( $.layout.browserZoom._init ); + + + +})( jQuery ); \ No newline at end of file diff --git a/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/Thumbs.db b/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/Thumbs.db new file mode 100755 index 0000000000000000000000000000000000000000..f3fc95fed22a0e78541b513c09d04bb60b8e726a GIT binary patch literal 2560 zcmca`Uhu)fjZzO8(10BSGsD0CoD6J8;*3Bx2!nwD0|OI~0pkDr|NlQkkbwcn90fxt z1pWfu3W`4%9zsqZbt)A?Ac!F!2um0g7+e|hfOHW2Ee zk%IxJLNtk0gdB^e9v_z+`|+7asvITugMtB6j)UTa1&CRJ7*yti%7alb{6jzj7}ub< zp9IYhVz#=+F0pK%-5KEL&dVjm1(f3T^l%9R(!d&@L4X64IOIS7PXtno#X;^)4C~Ix zyaaMs(j9#r85lP9bN@*MCL%@~PZ!4!3;)*1j1yZ7cwA3g9$*sNz#!znBnCkTn1F1L z7f)G(5~k1oZCt<0bJiF2#JS)99n8J`#NynlRW*Sk_iFNMBu;Poq2g(y?&)_(VD^vb zh4MQ;9N4u^@BHV(9sSI2e!pv7Uh2s0F{%Ai)s<~)#a{l7)0gn*dmQb`ylIn8@XARw zp8a#b@vl{#T)VybaMuKjzT_9b{U+IUw=&4I9bBIIYZlM@PPeLWmrYv#xpYqc>YBBu zA#t9)Xd*Yy%iL4{nIx|-J9JqCAQ^{wW{aS`Ek3{aYVhpXAs=wj2 zRc+%=hd2|Xgm<%oq)R5G@%fn@RGp;Jb)Kt;Jxco)Q@nyp+GUenoQm64si?_MNshkO zmE&vv^@sihh3S!xU+yfhD~b|VO8LWD8Q8oc@VNM#->mGH`3iiikM? literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif b/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif new file mode 100755 index 0000000000000000000000000000000000000000..085ccaecaf5fa5c34bc14cd2c2ed5cbbd8e25dcb GIT binary patch literal 1553 zcma)+TTl~c6vwlh>nb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png b/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png b/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..47acaadd737478ddb090f47f618810712163317b GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*Fsaj7L$B>N1x91EQ8x$BA993)+ za~~)OO5|O5sDCi_{N8&XlRv*c;OQ6|AR59NN?mFzWBXJVGojypu|S6~c)I$ztaD0e F0syyrGF|`x literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png b/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..9d149b1c61fdee2de5cb342741c243abb9058bb3 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAGVZ#9R3S1u{Kd978O6pI&z4VlotPxp?2+ z_9ElQf7546?+BK3Q+%u|q&R!~TD`8c>Nm?7lq=+T^Fw3At=o;a{QQ?&v0rW43t78u zKLhT~Z`;~2oo9{ezlW>%eD?g@v!}03FhOcY)5-`I-U~CHGCzC3{y9?4*Y0Z~JJ3=F MPgg&ebxsLQ09`{nxc~qF literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png b/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..014951529c315d6042e72febc310a4d2db5b4a82 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq?|lm978O6-<~(*YA_IRxoBVf zfAX@vsV!R#l$@#*eLnw)_Sv|_?i7P!ORnX)SxaXh+BPpZ!Fw~yjr&#G|Jw^YMHDhV X&EsZx`7bsSXc~j3tDnm{r-UW|&(SK+ literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png b/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..4443fdc1a156babad4336f004eaf5ca5dfa0f9ab GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hIh978O6-<~(*YA|4MzBvER z|7}eQtdCVXoUc2b{PaWeaIKu7gJx>{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png b/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png new file mode 100755 index 0000000000000000000000000000000000000000..81ecc362d50ef5abbc0420aacd5345822f1f6098 GIT binary patch literal 3457 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png b/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..6f4bd87c041453ef037c4a9a1a698f0105d02eba GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png b/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png b/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..bd2cf079add1ca236adeb509698adabbffb08acb GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png b/DOCBOOK/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..c7c53cb11904843e176e4ce1f4e7247cd90b3590 GIT binary patch literal 5355 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 bWJe(9`>_6}!Jq?vF~;F5f2aR9d*HtSQ5`T@ literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/treeview/images/file.gif b/DOCBOOK/webhelp/docs/common/jquery/treeview/images/file.gif new file mode 100755 index 0000000000000000000000000000000000000000..bd4f965498fe51f34a1a12c3453a5d90798aeada GIT binary patch literal 1008 zcmeH`+e=dc9Dt9*Y?;BL9!z_fB}$T6Nsv}HL$Y-bF^C{$m?Q<6h|Y&_PNtb=Ivr+e z&d}V%Wu{IYi=8d?tjo0Kb(z~aZcfupPrJJ5{Dpr-FMa>O2OoUN%=0JX(r5?`adVN+ z3ZcjShtEC=<`y6XE+_eO^erZ3d-M{pDqy}DECVq25;pACB^>YBH z$E0&qu+(2*TfxCKvtSsM)-l0QW?!9?)ZPU0EBL%BX_c%g(X8RF&34*!)oZ4XRcVHz zBNsNkrnU@NXw#{3oo2bD=9*fZ3NF1;l!A5M0mnq2n1l7^fMeP`!W$bFVB+L)tQHnK zEXE<2tAp8M4>6z?rzl&Q9_MfHxh>ih= z$g;9=WKY7Gcj;;IBvRi{;JU9XEczB&?I**-v}RRRV9JKSlBGqT?n|hQV01IK)59a| t>_S@PWkKlK01oMw@pjEVpN literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/treeview/images/folder-closed.gif b/DOCBOOK/webhelp/docs/common/jquery/treeview/images/folder-closed.gif new file mode 100755 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/treeview/images/folder-closed2.gif b/DOCBOOK/webhelp/docs/common/jquery/treeview/images/folder-closed2.gif new file mode 100755 index 0000000000000000000000000000000000000000..541107888e6739a7b367ad3d208e1efa933f877d GIT binary patch literal 105 zcmZ?wbhEHb6ky4lrdiO0bk3ZcRLy6E?4f Hg~1vCyv-@{ literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/treeview/images/folder.gif b/DOCBOOK/webhelp/docs/common/jquery/treeview/images/folder.gif new file mode 100755 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/treeview/images/folder2.gif b/DOCBOOK/webhelp/docs/common/jquery/treeview/images/folder2.gif new file mode 100755 index 0000000000000000000000000000000000000000..2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18 GIT binary patch literal 106 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-gray-line.gif b/DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-gray-line.gif new file mode 100755 index 0000000000000000000000000000000000000000..37600447dc002bbc0dd16e1391b711360aae2e34 GIT binary patch literal 1877 zcmeH``8OK|0LL@bF~qSc#n50?JXNI+k>{#)#go3O{g`&sTA06+?`JRv{%1VB*=kSggPTmbZ?E2@Hm10RaqGJr~M_swEK9(fuU z9bXMur@nY#Xn3Qp;v6X2AT> zA>EM+>y@m1^a49s_E1X&+bZH^!_a=e{N6Su)s&U>sDnd!~=b?JFEB#FT8 zioZMFaK52~t&52oqdWW~2MJ1ue%%?en#qCfU7u!nC|sSJi5E`}X3h8)ly{+5*|mp+ zYqNE`8MkZN-)k};oze-j%*tB&sNuZif|=0wM%!=l0sXF(V)Zg+3_ zjbW;EBEX2ytHG=$Dx2Ha{HE%5V3a1hHnd2R32m%R*9#gFWf^4tEW&~!6yIiV)*e*l zireg~b4-8KL1b9Tn<4TQc-aUN7>=bBxE!0Aep)ES$dA>bZ zlac_>GSf$}Amq|xpG2f_X<$)PU0E=BExZ&}FuYP8&bwD%fgJCOsK5%!A}jIpO{>+( zGV75wBp|A>JOyOlNY1dq-7SE-P1iq3bVQx6%Yk<{*5}84F?-+_`Yq}S#U}_=SCzX? zX`+&GsCqhDsvFh7AWWM#ck=(Rps}W(-f3)-hf$w$i>58wymeug)RAsnbE^=j9L-?f zpi-Z);Tuuyqj4L}9YcZxTIWO&p4K%*X3?0-?f4ef8jtm%XgkyEBd6Ds8uOK?%`{)>0D(Cr`A4IcZoG`&U18YKqjoYtzQo|Dt=**7zk597IbK9sJXFyhNi zwtW@gRcSW?gGKMW@kxrlG#OY-do~qJ*-V&3Js8`Y3GYwom_@$iB+g=ml}U5>1u1QR zAzAiA(jrL>&74Uwwqm}`xJ1AT;O_GsONn5#!*ULyhq;oEIkp%2g#mF(6lf@Jxhn4i zV~t87;8y4{2KZG5ao+KL=SUTJlQq*4|E@_PjJ3`!o(GG)^}?JsMpy*)mQYPCf1;Sk`8-A8at@Xm#Gb>oe(v%3b{156)aykj?nu&|IbZfh z!lZx$?iVd}BHwuNSkmco3iwy5Drr$xV-lid6PqT(u95$N>8c#Jm2RMN_SB1WJe9Oq z(x$uU@TQLQX@QVr>U~Sa;vEmbZ_QL7odp^*-BsqVXSqmf)oqYES3tl*66F0YO=#d1 rlgk$~puxAlhuJ^ZHqgioD1o1DVtQEUit~KllU0$5nh)jV0N{TCC3Zqn literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-gray.gif b/DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-gray.gif new file mode 100755 index 0000000000000000000000000000000000000000..cfb8a2f0961b880d9ecc9e59f831d0c0bf9d06db GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5F}1vNN-#bFE}n2rob1X65+pkEe*DZwLSXy)sc-G6LrLE|#j%ny@ltx#{|>*k3`b zudj+f+$8$@s#fHh^zF++cYjOsT#=i)PgZ*SBbQFk<=6g7TzYe_x%fYqoR5WW_>5Nf zsIRkcJbHA@c(c>D3XzqU)=k#8J9nngIK5|{y|vw$2$RE?mT4~XtDRLEe|<_~c?_?$ zLGJZ!!S{W4%zp58Z=>w%X})`Qe0&`0sXRUALwVLJuj#KvHA1S2+ow&BYJYdfr2O^1 zna!)!@5=7^`T51=)#j2iwbhrWRX*39_q(R{^Y??#w#k`8!n#b?Ah=gT4^b_6Je!p-pqnUi6)T{Kw4)JLb3tD)cb}Z;R&ALM=NKo^J zQum3S7LQAK7iB!^v-vhdvhxz-&N&k%mqtvOXdV2 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-red-line.gif b/DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-red-line.gif new file mode 100755 index 0000000000000000000000000000000000000000..df9e749a8f1f58862588efc64988003efad01d51 GIT binary patch literal 1877 zcmeH``BxGK0LPh{$5cGF%CuRcF0W^1+Eb91Y0har@ns%QJPI-bCps}CP-u#GY96he zH{=x}8cR_?6wMSBHp}~@d8B5Ec_ztT`#0A2hwu02&*#0br`JzT&Np-c8>+j2FWJW9 z|J$$i)xiJGfXTkfHvoVFVDp9i%O?Qp3V=f6d5==7Sk4KMl>Ucik`YxtvJ<)$%#TPKR% zdeBegW3Nr-TZ$_DvX!7#=EQu`)|{{_NO4?Hnuz--`I}N3UjF&+?uwLk+=>GJd{B_Tc2OKbjN9H> z96NPSF%oo|+^NT@plDh-RsN>!ws$&N>eV+-RSK`GN-+xQlcpP|{VXMbZmGY?Sg+bE z&yqDeRb-m~Xn;($Rkc9os0lNWR0x7V&viYtFw425?`)O{#Xnxi^Z-rV%z`xuPf1K3U`ignx^9LiY{9RF`M1 z((4&CBBq9gRTxIqvdNQH4XvU-teM=&r#I{BRpE@Mf`UowW*aYDTj; zR~d}wJj7bmv%$EvhL%3@95+YnP@jZFjkyaK?LZqem&Cp}E@#J}7%>obDszfKXbSed{!N zqe%A5h1G9<<|OWgt(pyPNUi%mt_OllWQ$!DHV#9VzJogSLla83`aMi%;zcml$vXr7 zf<%YcL08HgN8s@2tufz(==0;jh0Ny@q4f1T-P5MdE9;FzHSA-Pm3Wn^KX5K-#%-h+YndE*c}A#} z97|nymmXX*xOhw~p_=<#*Rp;q1c;i_)TkyvQ;xgVtY5mTyh_&|ZEzU`%%?)%UDt;N sUpBjNE)^Df<9oQ%i{r+6SwTgJWAz*lYeQMK?>m|{T3!EviV6VoFXq=mv;Y7A literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-red.gif b/DOCBOOK/webhelp/docs/common/jquery/treeview/images/treeview-red.gif new file mode 100755 index 0000000000000000000000000000000000000000..3bbb3a157f1568d59d6db02b55a3b3fe9a1ff7a7 GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5q9rFMYXq;dkzBCUd%AXV z7f->2WoKqf=UU0E5MF-1&C2oHA5RfQ-wyu&du5`wWCYCfT`X0jHDP7Qa?|x$vA=>= zUtbk}xJmT)RjtT1>D!lu?*5kMxgs}ppRDxuM=qV7%dh>Fxb)^;bMb#JIUft%@ENV{ zQD0}@c=YI)@n)xQ6(TDyt(&ZGckWD~aeB`@duzKh5hjN(Ez?}&S39dT{`!=}@)%xg zgWT)eg75q8nEl}G-bUHi(|q^r`1m-~Q+ayKhw`jdUejNTYJ^l3w@;fM)&A~|N%`x2 zGn-ed-<93-^Ye?#tIZ{4YO60#t9-6I?{`h@=kEuf$II8+R(@HSYaUSgyf$2+OgK}0 zZsRjUi+L5dHILtK5edt9=qI|b{eIzIMl<7PRm>?O4!tnstX#kf7!b zrS20uEgqNfF3Nb+XY*}_WalNuopUBkE{&Kl(L5+ZuF(6`HI*Fyu5b4nE$kweHiYk+ hA)Dse=Ki!azG~*body { + font-size: 16px; + font-size: 68.75%; +} Reset Base Font Size */ + /* +body { + font-family: Verdana, helvetica, arial, sans-serif; + font-size: 68.75%; + background: #fff; + color: #333; +} */ + +a img { border: none; } \ No newline at end of file diff --git a/DOCBOOK/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js b/DOCBOOK/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js new file mode 100755 index 0000000..e693321 --- /dev/null +++ b/DOCBOOK/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js @@ -0,0 +1,16 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * kasunbg: changed the cookieid name + * + */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("

      ").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file diff --git a/DOCBOOK/webhelp/docs/common/main.js b/DOCBOOK/webhelp/docs/common/main.js new file mode 100755 index 0000000..5957fb4 --- /dev/null +++ b/DOCBOOK/webhelp/docs/common/main.js @@ -0,0 +1,276 @@ +/** + * Miscellaneous js functions for WebHelp + * Kasun Gajasinghe, http://kasunbg.blogspot.com + * David Cramer, http://www.thingbag.net + * + */ + +//Turn ON and OFF the animations for Show/Hide Sidebar. Extend this to other anime as well if any. +var noAnimations=false; + +$(document).ready(function() { + // When you click on a link to an anchor, scroll down + // 105 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link within a page. + $('a[href*=#]').click(function() { + if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') + && location.hostname == this.hostname) { + var $target = $(this.hash); + $target = $target.length && $target + || $('[name=' + this.hash.slice(1) +']'); + if (!(this.hash == "#searchDiv" || this.hash == "#treeDiv" || this.hash == "") && $target.length) { + var targetOffset = $target.offset().top - 120; + $('html,body') + .animate({scrollTop: targetOffset}, 200); + return false; + } + } + }); + + // $("#showHideHighlight").button(); //add jquery button styling to 'Go' button + //Generate tabs in nav-pane with JQuery + $(function() { + $("#tabs").tabs({ + cookie: { + expires: 2 // store cookie for 2 days. + } + }); + }); + + //Generate the tree + $("#ulTreeDiv").attr("style", ""); + $("#tree").treeview({ + collapsed: true, + animated: "medium", + control: "#sidetreecontrol", + persist: "cookie" + }); + + //after toc fully styled, display it. Until loading, a 'loading' image will be displayed + $("#tocLoading").attr("style", "display:none;"); + // $("#ulTreeDiv").attr("style","display:block;"); + + //.searchButton is the css class applied to 'Go' button + $(function() { + $("button", ".searchButton").button(); + + $("button", ".searchButton").click(function() { + return false; + }); + }); + + //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('ui-tabs-1') === '1') { //search tab is active + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('searchForm'); + searchHighlight($.cookie('textToSearch')); + $("#showHideHighlight").css("display", "block"); + } + } + + syncToc(); //Synchronize the toc tree with the content pane, when loading the page. + //$("#doSearch").button(); //add jquery button styling to 'Go' button + + // When you click on a link to an anchor, scroll down + // 120 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link from another page. + var hash = window.location.hash; + if(hash){ + var targetOffset = $(hash).offset().top - 120; + $('html,body').animate({scrollTop: targetOffset}, 200); + return false; + } +}); + + +/** + * If an user moved to another page by clicking on a toc link, and then clicked on #searchDiv, + * search should be performed if the cookie textToSearch is not empty. + */ +function doSearch() { +//'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('searchForm'); + } +} + +/** + * Synchronize with the tableOfContents + */ +function syncToc() { + var a = document.getElementById("webhelp-currentid"); + if (a != undefined) { + //Expanding the child sections of the selected node. + var nodeClass = a.getAttribute("class"); + if (nodeClass != null && !nodeClass.match(/collapsable/)) { + a.setAttribute("class", "collapsable"); + //remove display:none; css style from
        block in the selected node. + var ulNode = a.getElementsByTagName("ul")[0]; + if (ulNode != undefined) { + if (ulNode.hasAttribute("style")) { + ulNode.setAttribute("style", "display: block; background-color: #D8D8D8 !important;"); + } else { + var ulStyle = document.createAttribute("style"); + ulStyle.nodeValue = "display: block; background-color: #D8D8D8 !important;"; + ulNode.setAttributeNode(ulStyle); + } } + //adjust tree's + sign to - + var divNode = a.getElementsByTagName("div")[0]; + if (divNode != undefined) { + if (divNode.hasAttribute("class")) { + divNode.setAttribute("class", "hitarea collapsable-hitarea"); + } else { + var divClass = document.createAttribute("class"); + divClass.nodeValue = "hitarea collapsable-hitarea"; + divNode.setAttributeNode(divClass); + } } + //set persistence cookie when a node is auto expanded + // setCookieForExpandedNode("webhelp-currentid"); + } + var b = a.getElementsByTagName("a")[0]; + + if (b != undefined) { + //Setting the background for selected node. + var style = a.getAttribute("style", 2); + if (style != null && !style.match(/background-color: Background;/)) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else if (style != null) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else { + a.setAttribute("style", "background-color: #D8D8D8; "); + b.setAttribute("style", "color: black;"); + } + } + + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. + while (a.parentNode && a.parentNode.nodeName) { + var parentNode = a.parentNode; + var nodeName = parentNode.nodeName; + + if (nodeName.toLowerCase() == "ul") { + parentNode.setAttribute("style", "display: block;"); + } else if (nodeName.toLocaleLowerCase() == "li") { + parentNode.setAttribute("class", "collapsable"); + parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); + } + a = parentNode; +} } } +/* + function setCookieForExpandedNode(nodeName) { + var tocDiv = document.getElementById("tree"); //get table of contents Div + var divs = tocDiv.getElementsByTagName("div"); + var matchedDivNumber; + var i; + for (i = 0; i < divs.length; i++) { //1101001 + var div = divs[i]; + var liNode = div.parentNode; + } +//create a new cookie if a treeview does not exist + if ($.cookie(treeCookieId) == null || $.cookie(treeCookieId) == "") { + var branches = $("#tree").find("li");//.prepareBranches(treesettings); + var data = []; + branches.each(function(i, e) { + data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0; + }); + $.cookie(treeCookieId, data.join("")); + + } + + if (i < divs.length) { + var treeviewCookie = $.cookie(treeCookieId); + var tvCookie1 = treeviewCookie.substring(0, i); + var tvCookie2 = treeviewCookie.substring(i + 1); + var newTVCookie = tvCookie1 + "1" + tvCookie2; + $.cookie(treeCookieId, newTVCookie); + } + } */ + +/** + * Code for Show/Hide TOC + * + */ +function showHideToc() { + var showHideButton = $("#showHideButton"); + var leftNavigation = $("#sidebar"); //hide the parent div of leftnavigation, ie sidebar + var content = $("#content"); + var animeTime=75 + + if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) { + //Hide TOC + showHideButton.removeClass('pointLeft').addClass('pointRight'); + + if(noAnimations) { + leftNavigation.css("display", "none"); + content.css("margin", "125px 0 0 0"); + } else { + leftNavigation.hide(animeTime); + content.animate( { "margin-left": 0 }, animeTime); + } + showHideButton.attr("title", "Show Sidebar"); + } else { + //Show the TOC + showHideButton.removeClass('pointRight').addClass('pointLeft'); + if(noAnimations) { + content.css("margin", "125px 0 0 280px"); + leftNavigation.css("display", "block"); + } else { + content.animate( { "margin-left": '280px' }, animeTime); + leftNavigation.show(animeTime); + } + showHideButton.attr("title", "Hide Sidebar"); + } +} + +/** + * Code for search highlighting + */ +var highlightOn = true; +function searchHighlight(searchText) { + highlightOn = true; + if (searchText != undefined) { + var wList; + var sList = new Array(); //stem list + //Highlight the search terms + searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "I$N~E8N^zO~Pw;a^(H|lo|{Z2pXH!s%dfd}c>`i1a} zv}w~u+O=z^&ucH8I(3rHojXg{u3e>Dw{8*;5FkBz^pKuCdrDwnp!Dg}NBZ{dEB*TQ z6Nkeg0|pF`prAoAc<^8uHf*StVKRL9a2YvrgqD#qdh{p>4GoboW5&q%@jsOb6UNKL zi9gdaQ6^2AB$FpkmZ?*xNO*X-L`Fu+^y$Bp88fEKtXVU)%#sg3oF&oGQ8IgWw9KDB zPs@B+u;4ecaNzt(}+4YG0LAI0POlNOI`@@$gLn>WkWty^W=wr#RKF;TW}-yu78?2ylPeI~ni@0LA# z_Gn3xq&<5jDQSVbpHow1pOJmCZ{L2| zzkk0RI`n5Pha@d6P14fSB|SY&OS)uaWJqRaretMhNls3#g(&}#*G_t^X5&tb?cVgzI{vX-n}dL z?%k7bzx}s7cC;HDBDMsph1qdetv!((`o7b?{;YGKUdEz%jHZ6 zv#c$>;zP!+HFMWmmmYU{0=tATce>bbS#cp9huibSU}xwMrz7~gd6bnH)iEG2$gFd@ zJYy}(9nkA-M`D7<6YF#(>hm}CcMNiS65O6GA54gHMoozRU`S|`t|U=W6Bf^PyW`>( zeLUB_WbTqha~J)u9;eRs)-qNL_1FBx*pl^~qD_9e6q)zZbzybPEX?t%8DrUQ4=n@2+%jQeC=qF~Z#6-(P8( z8EMt3Rm1lV9Xgn2M%LTwSfl%vy7Bj$sjwu+5)t0_|^tKi_DDD!LDm;9u0$<-Bj83<2 z{nO;fh!O7^n~8(X74#qu#0<{kbJpWG+yB_D?;uL||3=v8fuD&b_Mtl?XJHfE!aj7t zFT6v*$M(K``SF#veRv1|N=c9=38e92+=rps~@$$0vM4h#9$K zV>5yYXQ)Ho`1o1hp_=e-#fs$$&VTYrywZ0!6MOQA*n^3!c1_@!c1W;jpi-y>abld`|wsL0|uqAHKRXC$EU7?Pv7BessvrZt61|tGN+O z&b)f{N&`M~@{t_zwVyNK1^$KG`Zs{dV`4~N!a??5yH@|&_LFxCvE>%RaKhWN1tyApEK|ee!F}3U#2dR zd-w!yk|#MiU%qrdXMkzyPr-lt&$@MM4ELz7-nzE*Tw8ltQJ2UA@Tm#Z2>j7p{JhTr zpZp}&S4!fq}EYe$PMg6A8HUafc_3w>BH~8Kgq12FTYML06*u; zye9ZI2W|c^k{9Sj{^MV`2ItU&e5AipH^D|t&;Dzc2r=hn#9|FL{OiV8S_c*tTt}sfFBI;6HkzJ9U&= zNPaP1tG{OKV&psc{O+*tKlqvc0k>M>Keo|t!Nf%1@CAb2oJntiTksWu>-Gp| zz&}~~b))+q^^+K*haG=!Kj^=Qn7bdorWbR^CMNg{{@HQIJ}`(Q@g-b#_ci}7F>~;LEW*zo0GUu5+Ji~wXu%D6o_uZcXzPI5&U0{b) literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/images/sample.jpg b/DOCBOOK/webhelp/docs/images/sample.jpg new file mode 100755 index 0000000000000000000000000000000000000000..d8ec5c311243ad66e28e8b86ee439db9ed6d5589 GIT binary patch literal 78931 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�lJnlbk@ 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docs/index.html b/DOCBOOK/webhelp/docs/index.html new file mode 100755 index 0000000..a0be769 --- /dev/null +++ b/DOCBOOK/webhelp/docs/index.html @@ -0,0 +1,179 @@ + + + + +README: Web-based Help from DocBook XML -
      +
      +

      README: Web-based Help from DocBook XML

      + +

      Kasun Gajasinghe

      +
      +

      Permission is hereby granted, free of charge, to any person obtaining a copy of this + software and associated documentation files (the “Softwareâ€), to deal in the + Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the following conditions:

      • The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software.

      • Except as contained in this notice, the names of individuals credited with + contribution to this software shall not be used in advertising or otherwise to promote + the sale, use or other dealings in this Software without prior written authorization + from the individuals in question.

      • Any stylesheet derived from this Software that is publicly distributed will be + identified with a different name and the version strings in any derived Software will + be changed so that no possibility of confusion between the derived package and this + Software will exist.

      Warranty: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DAVID CRAMER, KASUN GAJASINGHE, OR ANY + OTHER CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

      This package is maintained by Kasun Gajasinghe, + and David Cramer, + and with + contributions by Arun Bharadwaj and Visitha Baddegama. Please + direct support questions to the DocBook-apps + mailing list.

      This package also includes the following software written and copyrighted by others:

      • Files in template/common/jquery are + copyrighted by JQuery under the MIT License. + The file jquery.cookie.js Copyright (c) 2006 Klaus Hartl under + the MIT license.

      • Some files in the template/search and indexer directories were + originally part of N. Quaine's htmlsearch DITA plugin. + The htmlsearch DITA plugin is available from the files page of the DITA-users yahoogroup. The + htmlsearch plugin was released under a BSD-style + license. See indexer/license.txt + for details. +

      • Stemmers from the Snowball + project released under a BSD license.

      • Code from the Apache Lucene search + engine provides support for tokenizing Chinese, Japanese, and Korean content released + under the Apache 2.0 license.

      • Code that provides weighted search results and some + other improvements was graciously donated by SyncRO Soft + Ltd., the publishers of the oXygen XML + Editor.

      • TagSoup, released under the Apache 2.0 + license, makes it possible to index html instead of just + xhtml output.

      • Cosmetic improvements provided by OpenStack.

      Webhelp for DocBook was first developed as a Google Summer of Code project.

      +

      January 2012

      +
      +
      +
      +

      List of Figures

      1. Sample Image
      diff --git a/DOCBOOK/webhelp/docs/ix01.html b/DOCBOOK/webhelp/docs/ix01.html new file mode 100755 index 0000000..f0620d2 --- /dev/null +++ b/DOCBOOK/webhelp/docs/ix01.html @@ -0,0 +1,128 @@ + + + + +Index - - README: Web-based Help from DocBook XML
      diff --git a/DOCBOOK/webhelp/docs/search/default.props b/DOCBOOK/webhelp/docs/search/default.props new file mode 100755 index 0000000..22edf43 --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/default.props @@ -0,0 +1 @@ +DEF01=a \ No newline at end of file diff --git a/DOCBOOK/webhelp/docs/search/en-us.props b/DOCBOOK/webhelp/docs/search/en-us.props new file mode 100755 index 0000000..da284ce --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/en-us.props @@ -0,0 +1,45 @@ +DEF01=this +DEF02=is +DEF03=the +DEF04=in +DEF05=i +DEF06=on +DEF07=a +DEF08=about +DEF09=an +DEF10=are +DEF11=as +DEF12=at +DEF13=be +DEF14=by +DEF15=com +DEF16=de +DEF17=en +DEF18=for +DEF19=from +DEF20=how +DEF21=it +DEF22=la +DEF23=of +DEF24=on +DEF25=or +DEF26=that +DEF27=to +DEF28=was +DEF29=what +DEF30=when +DEF31=where +DEF32=who +DEF33=will +DEF34=with +DEF35=und +DEF36=Next +DEF37=Prev +DEF38=Home +DEF39=Motive +DEF40=Inc +DEF41=Copyright +DEF42=All +DEF43=rights +DEF44=reserved +DEF45=Up \ No newline at end of file diff --git a/DOCBOOK/webhelp/docs/search/es-es.props b/DOCBOOK/webhelp/docs/search/es-es.props new file mode 100755 index 0000000..fb73bdc --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/es-es.props @@ -0,0 +1,179 @@ +DEF01=un +DEF02=una +DEF03=unas +DEF04=unos +DEF05=uno +DEF06=sobre +DEF07=todo +DEF08=también +DEF09=tras +DEF10=otro +DEF11=algún +DEF12=alguno +DEF13=alguna +DEF14=algunos +DEF15=algunas +DEF16=ser +DEF17=es +DEF18=soy +DEF19=eres +DEF20=somos +DEF21=sois +DEF22=estoy +DEF23=esta +DEF24=estamos +DEF25=estais +DEF26=estan +DEF27=como +DEF28=en +DEF29=para +DEF30=atras +DEF31=porque +DEF32=por +DEF33=estado +DEF34=estaba +DEF35=ante +DEF36=antes +DEF37=siendo +DEF38=ambos +DEF39=pero +DEF40=por +DEF41=poder +DEF42=puede +DEF43=puedo +DEF44=podemos +DEF45=podeis +DEF46=pueden +DEF47=fui +DEF48=fue +DEF49=fuimos +DEF50=fueron +DEF51=hacer +DEF52=hago +DEF53=hace +DEF54=hacemos +DEF55=haceis +DEF56=hacen +DEF57=cada +DEF58=fin +DEF59=incluso +DEF60=primero +DEF61=desde +DEF62=conseguir +DEF63=consigo +DEF64=consigue +DEF65=consigues +DEF66=conseguimos +DEF67=consiguen +DEF68=ir +DEF69=voy +DEF70=va +DEF71=vamos +DEF72=vais +DEF73=van +DEF74=vaya +DEF75=gueno +DEF76=ha +DEF77=tener +DEF78=tengo +DEF79=tiene +DEF80=tenemos +DEF81=teneis +DEF82=tienen +DEF83=el +DEF84=la +DEF85=lo +DEF86=las +DEF87=los +DEF88=su +DEF89=aqui +DEF90=mio +DEF91=tuyo +DEF92=ellos +DEF93=ellas +DEF94=nos +DEF95=nosotros +DEF96=vosotros +DEF97=vosotras +DEF98=si +DEF99=dentro +DEF100=solo +DEF101=solamente +DEF102=saber +DEF103=sabes +DEF104=sabe +DEF105=sabemos +DEF106=sabeis +DEF107=saben +DEF108=ultimo +DEF109=largo +DEF110=bastante +DEF111=haces +DEF112=muchos +DEF113=aquellos +DEF114=aquellas +DEF115=sus +DEF116=entonces +DEF117=tiempo +DEF118=verdad +DEF119=verdadero +DEF120=verdadera +DEF121=cierto +DEF122=ciertos +DEF123=cierta +DEF124=ciertas +DEF125=intentar +DEF126=intento +DEF127=intenta +DEF128=intentas +DEF129=intentamos +DEF130=intentais +DEF131=intentan +DEF132=dos +DEF133=bajo +DEF134=arriba +DEF135=encima +DEF136=usar +DEF137=uso +DEF138=usas +DEF139=usa +DEF140=usamos +DEF141=usais +DEF142=usan +DEF143=emplear +DEF144=empleo +DEF145=empleas +DEF146=emplean +DEF147=ampleamos +DEF148=empleais +DEF149=valor +DEF150=muy +DEF151=era +DEF152=eras +DEF153=eramos +DEF154=eran +DEF155=modo +DEF156=bien +DEF157=cual +DEF158=cuando +DEF159=donde +DEF160=mientras +DEF161=quien +DEF162=con +DEF163=entre +DEF164=sin +DEF165=trabajo +DEF166=trabajar +DEF167=trabajas +DEF168=trabaja +DEF169=trabajamos +DEF170=trabajais +DEF171=trabajan +DEF172=podria +DEF173=podrias +DEF174=podriamos +DEF175=podrian +DEF176=podriais +DEF177=yo +DEF178=aquel +DEF179=qué \ No newline at end of file diff --git a/DOCBOOK/webhelp/docs/search/htmlFileInfoList.js b/DOCBOOK/webhelp/docs/search/htmlFileInfoList.js new file mode 100755 index 0000000..a5efebe --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/htmlFileInfoList.js @@ -0,0 +1,38 @@ +var doStem = true; +//List of indexed files. +fl = new Array(); +fl["0"]= "ch04.html"; +fl["1"]= "ch05s01.html"; +fl["2"]= "ch03s02.html"; +fl["3"]= "index.html"; +fl["4"]= "ch02s02s01.html"; +fl["5"]= "ch03s01.html"; +fl["6"]= "ch01.html"; +fl["7"]= "ch02.html"; +fl["8"]= "ch02s01.html"; +fl["9"]= "ch02s03.html"; +fl["10"]= "ch03s02s01.html"; +fl["11"]= "ch05.html"; +fl["12"]= "ch03.html"; +fl["13"]= "ch02s05.html"; +fl["14"]= "ch02s04.html"; +fl["15"]= "ch02s02.html"; +fl["16"]= "ch05s02.html"; +fil = new Array(); +fil["0"]= "ch04.html@@@FAQ@@@Frequently Asked Questions..."; +fil["1"]= "ch05s01.html@@@Some search words for testing@@@null"; +fil["2"]= "ch03s02.html@@@Search@@@Overview design of Search mechanism..."; +fil["3"]= "index.html@@@README: Web-based Help from DocBook XML@@@null"; +fil["4"]= "ch02s02s01.html@@@Recommended Apache configurations@@@null"; +fil["5"]= "ch03s01.html@@@Design@@@An overview of webhelp page structure..."; +fil["6"]= "ch01.html@@@Introduction@@@Overview of the package..."; +fil["7"]= "ch02.html@@@Using the package@@@java available in your PATH..."; +fil["8"]= "ch02s01.html@@@Generating webhelp output using the Ant build.xml file@@@Installation instructions..."; +fil["9"]= "ch02s03.html@@@Search indexing@@@To build the indexer, you must have installed the JDK version 1.5 or higher and set the ANT_HOME environment variable..."; +fil["10"]= "ch03s02s01.html@@@New Stemmers@@@Adding new Stemmers is very simple..."; +fil["11"]= "ch05.html@@@Test section@@@null"; +fil["12"]= "ch03.html@@@Developer Docs@@@This chapter provides an overview of how webhelp is implemented..."; +fil["13"]= "ch02s05.html@@@Adding images@@@null"; +fil["14"]= "ch02s04.html@@@Adding support for other (non-CJKV) languages@@@null"; +fil["15"]= "ch02s02.html@@@Using and customizing the output@@@null"; +fil["16"]= "ch05s02.html@@@Some search words for testing (inflected)@@@null"; diff --git a/DOCBOOK/webhelp/docs/search/index-1.js b/DOCBOOK/webhelp/docs/search/index-1.js new file mode 100755 index 0000000..096fcfb --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/index-1.js @@ -0,0 +1,391 @@ +var indexerLanguage="en"; +//Auto generated index for searching by xsl-webhelpindexer for DocBook Webhelp.# Kasun Gajasinghe, University of Moratuwa +w["-"]="0*2,1*2,2*7,3*1,5*2,6*3,7*2,8*2,9*4,10*2,11*2,12*2,13*2,14*2,15*2,16*2"; +w["-doutput-dir"]="8*1"; +w["-version"]="8*2"; +w["."]="2*5,3*2,4*3,5*5,6*1,7*1,8*11,9*3,10*8,13*2,14*1,15*3"; +w[".chm"]="6*1"; +w[".htaccess"]="4*1"; +w[".html"]="4*1"; +w[".js"]="2*2"; +w[".treeview"]="5*1"; +w["0"]="0*2,3*2,8*5,9*6"; +w["1"]="0*6,3*2,8*3,9*6"; +w["1."]="0*6,3*2"; +w["1.5"]="9*1"; +w["1.6"]="8*1"; +w["1.76.0"]="9*1"; +w["1.76.1"]="9*2"; +w["1.76.1."]="9*1"; +w["1.77.0"]="0*2"; +w["1.8.0"]="8*3,9*1"; +w["1.8.2.custom.css"]="15*1"; +w["172800"]="4*2"; +w["2"]="0*6,3*3,4*2,8*3,15*1"; +w["2."]="0*6,3*1"; +w["2.0"]="3*2"; +w["2006"]="3*1"; +w["2008"]="3*1"; +w["2008-2012"]="3*1"; +w["2012"]="3*2"; +w["290304000"]="4*2"; +w["2:"]="8*3"; +w["3"]="0*8,3*1"; +w["3."]="0*6,3*1"; +w["3.0.0.jar"]="9*2"; +w["3.x"]="0*1"; +w["4"]="0*7,2*1"; +w["4."]="0*6"; +w["480"]="4*1"; +w["5"]="0*8,6*1,8*13,9*1"; +w["5."]="0*6"; +w["596"]="0*2"; +w["596:"]="0*2"; +w["6"]="8*6"; +w["6.5"]="8*4"; +w["6.5.5.jar"]="0*1,8*3"; +w["6.5.x"]="8*1"; +w["7"]="0*1"; +w["7200"]="4*2"; +w["76"]="9*3"; +w["77"]="0*2"; +w["8"]="4*1,8*3,9*1,15*1"; +w[":"]="0*2,10*2,15*3"; +w["_stemmer"]="2*1,10*1"; +w["_stemmer.j"]="2*2,10*2"; +w["abandon"]="5*1"; +w["about"]="0*2,2*2,4*1,8*2,9*1"; +w["abov"]="3*1"; +w["abstract"]="15*1"; +w["accord"]="6*1"; +w["achiev"]="5*2"; +w["action"]="3*1"; +w["actual"]="2*1"; +w["ad"]="2*1,3*1,6*1,7*2,10*3,13*51,14*46,15*2"; +w["adapt"]="8*1"; +w["add"]="3*1,6*1,8*1,10*4,13*1,14*1,15*1"; +w["adddefaultcharset"]="4*1"; +w["addit"]="0*1,4*1,14*1"; +w["addoutputfilterbytyp"]="4*9"; +w["admon.g"]="8*1"; +w["admon.graph"]="8*1"; +w["advertis"]="3*1"; +w["after"]="6*1"; +w["against"]="8*2"; +w["age"]="4*3"; +w["al"]="10*1"; +w["algorithm"]="10*1"; +w["all"]="2*1,3*1,8*1,9*1,10*1"; +w["all."]="10*1"; +w["allow"]="8*1"; +w["alreadi"]="10*1"; +w["also"]="3*1,6*1,7*1,8*2"; +w["altern"]="6*1"; +w["analyz"]="9*1"; +w["ani"]="3*6,10*1,15*1"; +w["anim"]="5*1"; +w["animated:"]="5*1"; +w["anoth"]="8*2,10*1"; +w["ant"]="2*3,6*2,7*2,8*59,9*14,10*2,13*1"; +w["ant.file.dir"]="8*2"; +w["ant_hom"]="8*1,9*1"; +w["apach"]="3*3,4*41,7*1,8*3,15*1"; +w["apache-ant-1"]="8*2"; +w["apache-ant-1.8.0"]="8*2"; +w["apart"]="0*2"; +w["apis.jar"]="0*2,8*9,9*1"; +w["app"]="3*1"; +w["appear"]="6*2,15*1"; +w["appli"]="5*2"; +w["applic"]="4*5,6*1"; +w["applica"]="4*1"; +w["appropri"]="8*1,15*1"; +w["apps@lists.oasi"]="10*1"; +w["ar"]="3*1"; +w["arbitrari"]="8*1"; +w["argument"]="9*1"; +w["arguments:"]="9*1"; +w["aris"]="3*1"; +w["array"]="2*3,3*1,10*7"; +w["array."]="10*1"; +w["arsenal"]="1*1,16*1"; +w["arsenic"]="1*1,16*1"; +w["arun"]="3*1"; +w["ask"]="0*1"; +w["associ"]="3*1"; +w["asspath"]="8*5"; +w["assum"]="8*2,10*1"; +w["assumpt"]="2*1"; +w["attribut"]="0*2"; +w["author"]="3*1"; +w["auto"]="6*1"; +w["auto-synchron"]="6*1"; +w["autoidx"]="0*2"; +w["autoidx.xsl"]="0*2"; +w["autoidx.xsl:"]="0*4"; +w["automat"]="9*1"; +w["ava"]="7*1"; +w["avail"]="3*1,7*1,8*3,9*2,10*3"; +w["away"]="12*1"; +w["back"]="14*1"; +w["backward"]="6*1"; +w["baddegama"]="3*1"; +w["baddegama."]="3*1"; +w["bar."]="15*1"; +w["base"]="0*2,1*1,2*1,3*52,5*2,6*3,7*1,8*1,9*1,10*6,11*1,12*1,13*1,14*1,15*2,16*1"; +w["basedir"]="8*1"; +w["basic"]="0*1"; +w["be"]="8*1"; +w["been"]="8*1"; +w["behav"]="12*1"; +w["below"]="8*1"; +w["below."]="8*1,13*1"; +w["better"]="8*1"; +w["between"]="2*1,3*1"; +w["bharadwaj"]="3*1"; +w["bi"]="2*1"; +w["bi-gram"]="2*1"; +w["bin"]="8*4"; +w["binari"]="8*1"; +w["bit"]="9*1"; +w["bitmap"]="4*1"; +w["bits."]="9*1"; +w["bob"]="4*1,15*1"; +w["bold"]="6*1"; +w["book"]="4*1"; +w["both"]="14*1"; +w["box"]="6*1"; +w["break"]="2*1"; +w["brief"]="6*1,15*1"; +w["brower"]="4*1"; +w["browser"]="0*3,2*1,4*1,5*1,8*1"; +w["browser."]="8*1"; +w["bsd"]="3*2"; +w["bsd-style"]="3*1"; +w["build"]="0*3,1*1,5*1,6*3,7*3,8*59,9*1,10*3,13*1,16*1"; +w["build-index"]="10*1"; +w["build.properti"]="8*1,9*1,10*1,13*1"; +w["build.xml"]="1*1,7*1,8*56,16*1"; +w["build.xml."]="8*1"; +w["built"]="5*1"; +w["but"]="3*1,8*1,10*2"; +w["button"]="5*1"; +w["buy"]="1*1,16*1"; +w["c"]="0*2,3*1,8*3"; +w["c:"]="0*4,8*3"; +w["cach"]="4*5"; +w["cache-control"]="4*3"; +w["call"]="2*1,5*1"; +w["caus"]="4*3,15*1"; +w["certain"]="4*1"; +w["ch03"]="2*1"; +w["ch03.html"]="2*1"; +w["chang"]="2*1,3*1,4*1,8*1,9*1,10*3,15*3"; +w["chapter"]="2*1,12*1,15*1"; +w["chapterinfo"]="15*1"; +w["charact"]="4*1"; +w["charg"]="3*1"; +w["check"]="0*1"; +w["checkout"]="2*1"; +w["chines"]="2*1,3*1,6*1,8*1,10*2"; +w["chm"]="6*1"; +w["chrome"]="0*1"; +w["chunk"]="5*2,6*1,15*2"; +w["cjk"]="2*2,10*2"; +w["cjkv"]="7*1,10*1,14*2"; +w["cl"]="8*3"; +w["claim"]="3*1"; +w["class"]="9*1,10*1"; +w["classpath"]="0*1,8*2,9*2"; +w["classpath."]="9*1"; +w["click."]="2*1"; +w["client"]="2*2,6*1"; +w["client-sid"]="2*1,6*1"; +w["cn"]="10*2"; +w["co"]="3*1"; +w["code"]="0*1,2*1,3*4,5*1,6*1,10*9,13*6"; +w["code."]="10*1"; +w["code:"]="5*1"; +w["collaps"]="5*1,6*1"; +w["collapsed:"]="5*1"; +w["color"]="6*1,15*1"; +w["com"]="3*2,9*2,10*8"; +w["com.nexwave.nquindexer.indexermain"]="9*1"; +w["com.nexwave.nquindexer.indexertask"]="9*1"; +w["come"]="9*1,15*1"; +w["command"]="2*2,7*1,8*5,9*1"; +w["command-lin"]="9*1"; +w["command."]="2*1"; +w["comment"]="8*1"; +w["comments."]="8*1"; +w["common"]="2*1,3*1,6*1,15*7"; +w["commons:"]="8*3"; +w["compani"]="5*1"; +w["compar"]="2*1"; +w["compil"]="10*1"; +w["complet"]="4*3,15*1"; +w["compress"]="4*3"; +w["concern"]="9*1"; +w["condit"]="3*1"; +w["conditions:"]="3*1"; +w["conf"]="4*1"; +w["configur"]="4*40,7*1,15*1"; +w["confirm"]="8*3"; +w["confus"]="3*1"; +w["connect"]="3*1"; +w["consid"]="14*1"; +w["contact"]="10*1"; +w["contain"]="2*1,3*1,8*1,9*1,10*1"; +w["content"]="2*3,3*1,5*6,6*5,7*5,9*1,11*5,12*8"; +w["content."]="2*2,9*1"; +w["content:"]="5*1"; +w["contract"]="3*1"; +w["contribut"]="3*2,14*1"; +w["contributor"]="3*1"; +w["control"]="4*3,5*1,13*1,15*1"; +w["control:"]="5*1"; +w["conveni"]="8*3"; +w["cooki"]="3*1,5*1,12*2"; +w["copi"]="3*3,8*5,10*1,13*2"; +w["copyright"]="3*5"; +w["core"]="9*1"; +w["correct"]="0*1,3*1,8*1,10*5"; +w["cosmet"]="3*1"; +w["could"]="4*1,8*1"; +w["cramer"]="3*4"; +w["creat"]="2*1,6*1,7*1,8*5"; +w["credit"]="3*1"; +w["csrc"]="8*2"; +w["css"]="4*5,5*3,6*1,15*8"; +w["css-base"]="5*1,6*1"; +w["css-style"]="5*1"; +w["css."]="15*1"; +w["currenc"]="1*2,16*1"; +w["current"]="0*1,10*3,14*1"; +w["currently."]="0*1"; +w["custom"]="5*2,7*1,8*1,15*48"; +w["d"]="8*1"; +w["damag"]="3*1"; +w["danish"]="14*1"; +w["data"]="2*1"; +w["david"]="3*6"; +w["day"]="1*1,4*1,16*1"; +w["de"]="8*1,10*3"; +w["deal"]="3*3"; +w["deep"]="15*1"; +w["default"]="2*1,8*1,9*2,15*1"; +w["default."]="8*1"; +w["defin"]="2*1,8*1"; +w["deflat"]="4*10"; +w["delet"]="8*1"; +w["demo"]="0*4"; +w["deploy"]="0*3"; +w["deriv"]="3*3"; +w["describ"]="7*1"; +w["descript"]="6*1"; +w["description."]="6*1"; +w["design"]="2*1,5*47,12*1"; +w["desir"]="8*2"; +w["desired-output-dir"]="8*1"; +w["detail"]="0*1,2*2,3*1,8*1,9*2"; +w["details."]="0*1,3*1,8*1,9*1"; +w["develop"]="3*1,12*51"; +w["differ"]="3*1,8*1"; +w["dir"]="8*6,13*1"; +w["direct"]="3*1,9*1,15*1"; +w["directori"]="2*2,3*1,8*15,9*3,13*4"; +w["directory."]="2*1,8*4,13*1"; +w["disabl"]="8*1"; +w["display"]="2*1"; +w["distribut"]="3*2,8*3,9*1"; +w["dita"]="0*1,3*3"; +w["dita-us"]="3*1"; +w["dita."]="0*1"; +w["div"]="5*1,12*1,15*2"; +w["divid"]="5*1"; +w["do"]="2*2,3*1,8*2,9*1,14*1"; +w["doc"]="2*1,8*3,12*51,15*7"; +w["docbkx"]="6*1,8*1"; +w["docbo"]="0*2"; +w["docbook"]="0*3,1*1,2*3,3*53,4*3,5*4,6*2,7*1,8*6,9*2,10*9,11*1,12*1,13*3,14*1,15*3,16*1"; +w["docbook-app"]="3*1"; +w["docbook-apps@list"]="10*1"; +w["docbook-apps@lists.oasis-open.org"]="10*1"; +w["docbook-webhelp"]="8*1,10*7"; +w["docbook-xsl-1"]="0*1"; +w["docbook-xsl-1.77.0"]="0*2"; +w["docbook."]="15*1"; +w["docbook.sourceforge.net"]="9*2"; +w["docs@@@"]="2*1"; +w["docsbook"]="9*1"; +w["docsbook-xsl-1"]="9*1"; +w["docsbook-xsl-1.76.1"]="9*1"; +w["docsr"]="13*6"; +w["docsrc"]="13*1"; +w["document"]="0*2,3*1,4*2,5*1,6*1,8*10,13*4"; +w["document."]="8*2,13*1"; +w["documentation."]="0*1,5*1,6*1"; +w["doe"]="0*2,2*2,8*1,9*1"; +w["doesn"]="9*1"; +w["don"]="8*1,15*1"; +w["donat"]="3*1"; +w["done"]="0*1,2*1,5*2"; +w["dostem"]="2*1"; +w["dot"]="3*4"; +w["doutput"]="8*1"; +w["down"]="3*1,13*5"; +w["download"]="4*1,8*2,9*1,10*1"; +w["drop"]="2*1"; +w["dtd"]="8*2"; +w["dtd."]="8*1"; +w["dutch"]="14*1"; +w["e"]="10*1,12*1"; +w["easi"]="10*1"; +w["easili"]="5*1,10*2"; +w["easily."]="10*1"; +w["eclips"]="6*1"; +w["edit"]="8*1,15*1"; +w["editor"]="3*1,8*1,10*1"; +w["editor."]="3*1"; +w["efault"]="8*1"; +w["element"]="15*1"; +w["element."]="0*2,15*1"; +w["els"]="9*1,10*7"; +w["email"]="10*1"; +w["en"]="8*3,9*1,10*4"; +w["en."]="8*1"; +w["enabl"]="8*1"; +w["enable.stem"]="8*1"; +w["endors"]="9*1"; +w["engin"]="3*1,6*1"; +w["engine."]="6*1"; +w["english"]="2*1,6*1,8*1,10*3,14*1"; +w["englishstemm"]="10*1"; +w["environ"]="7*1,8*5,9*1"; +w["equalsignorecas"]="10*3"; +w["error"]="0*2"; +w["error."]="0*2"; +w["etc"]="2*1,5*1,6*1,8*2"; +w["etc."]="2*1,5*1,6*1,8*3,15*1"; +w["event"]="3*1"; +w["ex"]="2*1"; +w["ex:"]="2*1"; +w["exact"]="10*1,12*1"; +w["exampl"]="3*6,8*5,10*1,13*1,15*1"; +w["example."]="10*1"; +w["example:"]="8*4"; +w["example 1"]="13*5"; +w["example 1. exampl"]="13*5"; +w["example 2"]="10*5"; +w["example 2. add"]="10*5"; +w["example 3"]="10*5"; +w["example 3. initi"]="10*5"; +w["except"]="3*1"; +w["exist"]="2*1,3*1"; +w["exist."]="3*1,8*1"; +w["expos"]="6*1"; +w["express"]="3*1"; +w["ext"]="10*2"; +w["extend"]="10*2"; +w["extens"]="0*2,2*1,4*1,8*1,9*1,10*1"; + diff --git a/DOCBOOK/webhelp/docs/search/index-2.js b/DOCBOOK/webhelp/docs/search/index-2.js new file mode 100755 index 0000000..05d3f0c --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/index-2.js @@ -0,0 +1,390 @@ +//Auto generated index for searching by xsl-webhelpindexer for DocBook Webhelp.# Kasun Gajasinghe, University of Moratuwa +w["extension:"]="4*1"; +w["extent"]="2*1"; +w["extract"]="8*1"; +w["f"]="4*1,9*1,12*1,14*1"; +w["fair"]="10*1"; +w["fals"]="2*1,8*1"; +w["false."]="2*1"; +w["faq"]="0*51"; +w["featur"]="2*1,5*1,6*6"; +w["feature."]="5*1"; +w["feel"]="15*1"; +w["fetch"]="9*1"; +w["few"]="5*1,10*1"; +w["fi"]="4*1"; +w["figur"]="3*5,8*3,13*4"; +w["figure 1"]="13*5"; +w["figure 1. sampl"]="13*5"; +w["fil"]="2*2"; +w["file"]="0*2,2*10,3*5,4*6,5*1,6*1,7*1,8*64,9*1,10*1,13*2,15*4"; +w["file."]="4*1,10*1,15*1"; +w["file:"]="0*4"; +w["fileref"]="13*1"; +w["files."]="4*1,8*1"; +w["files:"]="2*1,15*1"; +w["fileset"]="8*1,13*1"; +w["filesmatch"]="4*6"; +w["find"]="0*4,10*1"; +w["finnish"]="14*1"; +w["firefox"]="0*1"; +w["first"]="2*1,3*1"; +w["fit"]="3*1"; +w["five"]="2*1"; +w["fl"]="2*1"; +w["flv"]="4*2"; +w["folder"]="0*1,2*2,9*1,10*2,15*1"; +w["folder."]="2*1,10*1"; +w["foll"]="0*1"; +w["follos"]="8*3"; +w["follow"]="0*2,2*1,3*2,4*2,5*1,7*1,8*2,9*2,10*1,13*2,14*1,15*1"; +w["foobar"]="2*1"; +w["form"]="14*1"; +w["form."]="14*1"; +w["format"]="2*1,6*3,13*1"; +w["fortun"]="10*1"; +w["forward"]="6*1"; +w["four"]="0*1"; +w["fr"]="8*1,10*4"; +w["frameset"]="5*1,6*1,12*1,15*1"; +w["frameset."]="6*1,12*2"; +w["free"]="3*1"; +w["french"]="2*1,6*1,8*1,10*3"; +w["french."]="2*1"; +w["frenchstemm"]="10*1"; +w["frequent"]="0*1"; +w["from"]="0*3,1*1,2*3,3*57,4*1,5*4,6*4,7*1,8*6,9*2,10*3,11*1,12*2,13*4,14*1,15*2,16*1"; +w["full"]="6*1,10*1"; +w["fulli"]="2*1,5*1"; +w["furnish"]="3*1"; +w["further"]="2*1,5*1,15*1"; +w["gajasingh"]="3*4"; +w["ge"]="8*1"; +w["general"]="10*1,15*1"; +w["generat"]="0*1,2*1,5*3,6*2,7*1,8*49,10*1"; +w["german"]="2*1,6*1,10*3"; +w["german."]="6*1,14*1"; +w["germanstemm"]="10*1"; +w["get"]="0*2,2*1,6*1,10*1,15*1"; +w["gif"]="4*2"; +w["given."]="13*1"; +w["gmail"]="3*2"; +w["go"]="9*1"; +w["googl"]="3*1,6*1"; +w["gorithm"]="10*1"; +w["gracious"]="3*1"; +w["gram"]="2*1"; +w["grant"]="3*1"; +w["graphic"]="8*4,13*2"; +w["group"]="6*1"; +w["guid"]="0*1,4*3,15*1"; +w["handl"]="2*2,15*1"; +w["happen"]="0*1,2*1"; +w["hartl"]="3*1"; +w["hat"]="6*1"; +w["have"]="9*1"; +w["haven"]="0*1"; +w["having."]="9*1"; +w["head"]="5*1"; +w["header"]="4*3,5*2,15*1"; +w["header:"]="5*1"; +w["height"]="15*1"; +w["help"]="0*1,1*1,2*1,3*51,5*1,6*4,7*1,8*1,9*2,10*1,11*1,12*2,13*1,14*1,15*4,16*1"; +w["help."]="6*1"; +w["here"]="8*1,9*1,13*1"; +w["here."]="8*2,13*1"; +w["herebi"]="3*1"; +w["higher"]="8*1,9*1"; +w["higher."]="8*2"; +w["highlight"]="6*1"; +w["hour"]="4*1"; +w["how"]="2*1,6*1,7*1,8*1,12*1,13*1"; +w["howev"]="8*1"; +w["href"]="0*2"; +w["ht"]="8*1"; +w["htaccess"]="4*1"; +w["htm"]="4*2,8*1"; +w["html"]="0*3,2*2,3*1,4*7,5*1,6*1,8*2,15*1"; +w["html.extens"]="8*1"; +w["htmlfileinfolist"]="2*1"; +w["htmlfileinfolist.j"]="2*1"; +w["htmlfilelist"]="2*1"; +w["htmlfilelist.j"]="2*1"; +w["htmlsearch"]="0*2,3*3"; +w["http"]="9*1"; +w["http:"]="9*2"; +w["httpd"]="4*1"; +w["httpd.conf"]="4*1"; +w["hungarian"]="14*1"; +w["ico"]="4*2"; +w["ide"]="2*1"; +w["idea"]="2*1"; +w["identifi"]="3*1,8*1"; +w["ie"]="0*1"; +w["if"]="0*1,2*2,4*2,6*1,8*8,9*1,10*12,12*2,13*1,15*1"; +w["ignor"]="8*1"; +w["ilabl"]="7*1"; +w["ile"]="4*1"; +w["iles."]="4*1"; +w["imag"]="3*2,7*1,8*11,13*72"; +w["imagedata"]="13*1"; +w["imageobject"]="13*2"; +w["images."]="3*1,13*5"; +w["implement"]="2*1,6*2,12*2,14*2"; +w["implemented."]="2*1,12*1"; +w["impli"]="3*1"; +w["import"]="6*1,8*44"; +w["imposs"]="6*1"; +w["improv"]="3*2,4*1"; +w["includ"]="0*1,2*3,3*4,5*4,6*2,10*1,14*1,15*1"; +w["index"]="0*5,2*14,3*5,4*2,6*2,7*1,8*5,9*58,10*12,14*1"; +w["index-"]="2*2"; +w["index.html"]="8*2"; +w["indexer-languag"]="8*1"; +w["indexer-language-cod"]="2*2"; +w["indexer."]="0*2,2*1,9*1,10*1"; +w["indexerlanguag"]="10*5"; +w["indexerlanguage.equalsignorecas"]="10*6"; +w["indexermain"]="9*1"; +w["indexertask"]="9*2,10*1"; +w["indexertask.java"]="10*2"; +w["indexing:"]="2*1"; +w["indic"]="8*4"; +w["indicated:"]="8*3"; +w["individu"]="3*2"; +w["inflect"]="11*1,16*46"; +w["inform"]="0*3,4*1,8*2,9*1,15*1"; +w["information."]="0*1"; +w["initi"]="3*1,10*5"; +w["input"]="8*8,13*1,14*1"; +w["input-images-basedir"]="8*1"; +w["input-images-dir"]="8*2,13*1"; +w["input-xml"]="8*3"; +w["input-xml."]="8*1"; +w["insid"]="2*1,15*1"; +w["instal"]="7*1,8*12,9*1"; +w["instead"]="3*1"; +w["instruct"]="8*2"; +w["integr"]="6*1,10*1"; +w["intellij"]="2*1"; +w["interest"]="15*1"; +w["internet"]="6*1"; +w["into"]="6*2,15*1"; +w["introduct"]="6*51"; +w["invoc"]="9*1"; +w["invocation."]="9*1"; +w["invok"]="2*1,9*2"; +w["involved."]="2*1"; +w["iphone."]="0*1"; +w["ipod"]="0*1"; +w["ipt"]="14*1"; +w["issu"]="9*1"; +w["it_stemm"]="10*1"; +w["it_stemmer.j"]="10*1"; +w["italian"]="10*5,14*1"; +w["italianstemm"]="10*4"; +w["ja"]="8*2,10*2"; +w["januari"]="3*1"; +w["japan"]="10*1"; +w["japanes"]="2*1,3*1,6*1,8*1,10*1"; +w["jar"]="0*1,2*1,8*15,9*5"; +w["java"]="0*6,7*5,8*21,9*1,10*5,14*3"; +w["java."]="10*1"; +w["javascr"]="14*1"; +w["javascrip"]="4*1"; +w["javascript"]="0*1,2*3,4*6,5*1,10*4,14*3"; +w["javascript."]="2*1,14*1"; +w["jdk"]="8*1,9*1"; +w["jdk."]="8*1"; +w["jpeg"]="4*2"; +w["jpg"]="4*2,13*11"; +w["jqueri"]="0*2,3*3,5*3,15*7"; +w["jquery-ui"]="5*1"; +w["jquery-ui-1"]="15*1"; +w["jquery-ui-1.8.2.custom.css"]="15*1"; +w["jquery.cookie.j"]="3*1"; +w["jquery.treeview.css"]="15*1"; +w["jqueryui"]="15*1"; +w["jre"]="9*1"; +w["js"]="2*6,3*1,4*2,10*3"; +w["just"]="3*1"; +w["kasun"]="0*6,3*4"; +w["kasunbg"]="3*2"; +w["key"]="1*1,16*1"; +w["kind"]="3*1"; +w["klaus"]="3*1"; +w["ko"]="10*2"; +w["korean"]="2*1,3*1,6*1,10*2"; +w["languag"]="2*5,3*2,6*2,7*1,8*3,9*1,10*20,14*49"; +w["language-cod"]="10*2"; +w["language."]="8*1,9*1,10*2"; +w["languages."]="14*1"; +w["latest"]="9*1"; +w["layer"]="8*1"; +w["layout"]="6*1"; +w["left"]="5*1,12*1,15*1"; +w["leftnavig"]="15*1"; +w["les"]="4*1"; +w["level"]="8*1"; +w["li"]="5*1"; +w["liabil"]="3*1"; +w["liabl"]="3*1"; +w["lib"]="9*1"; +w["librari"]="2*1"; +w["library."]="2*1"; +w["licens"]="3*5"; +w["license."]="3*5"; +w["license.txt"]="3*1"; +w["like"]="2*1,6*1,10*1"; +w["limit"]="3*2"; +w["line"]="0*2,4*2,8*2,9*1,10*1"; +w["line."]="8*1"; +w["link"]="6*2,15*2"; +w["linux"]="9*1"; +w["list"]="3*11,5*2,8*1,10*3,13*1"; +w["ll"]="9*1,10*1"; +w["ll."]="9*1"; +w["load"]="5*1,12*1"; +w["local"]="8*3"; +w["locat"]="2*1,8*6,10*1"; +w["location."]="10*1"; +w["log"]="6*1"; +w["logo"]="5*1"; +w["long"]="4*1"; +w["look"]="2*1,5*1,15*1"; +w["ltd"]="3*1"; +w["ltd."]="3*1"; +w["lucen"]="3*1,6*1,9*2"; +w["lucene-analyzers-3"]="9*1"; +w["lucene-analyzers-3.0.0.jar"]="9*1"; +w["lucene-core-3"]="9*1"; +w["lucene-core-3.0.0.jar"]="9*1"; +w["m"]="0*2"; +w["made"]="5*1"; +w["mail"]="3*1,10*1"; +w["main"]="2*1,5*1,9*1"; +w["maintain"]="3*1"; +w["make"]="3*1,4*1,8*1,10*1"; +w["makefil"]="6*1,7*2,8*2"; +w["makefile.sampl"]="7*2,8*2"; +w["manag"]="8*1"; +w["mani"]="6*1"; +w["martin"]="14*1"; +w["match"]="2*1"; +w["matrix"]="0*1"; +w["maven"]="6*1,8*1"; +w["max"]="4*3"; +w["max-ag"]="4*3"; +w["may"]="8*1,9*1"; +w["mechan"]="2*2,14*2"; +w["mechanism."]="2*1"; +w["mediaobject"]="13*2"; +w["medium"]="5*1"; +w["merchant"]="3*1"; +w["merg"]="3*1"; +w["messag"]="8*1"; +w["meta"]="2*1"; +w["method"]="2*1"; +w["microsoft"]="6*1"; +w["miss"]="8*1"; +w["mit"]="3*2"; +w["ml"]="8*1"; +w["model"]="6*1"; +w["modifi"]="3*1,8*4"; +w["more"]="0*3,4*1"; +w["most"]="0*2"; +w["move"]="2*1"; +w["multipl"]="15*1"; +w["must"]="4*2,7*1,8*4,9*1,12*1"; +w["must-revalid"]="4*2"; +w["mutandi"]="8*3"; +w["mutati"]="8*3"; +w["n"]="3*1"; +w["n."]="3*1"; +w["name"]="2*4,3*2,8*7,10*3,15*1"; +w["navig"]="5*4,12*1,15*1"; +w["navigation:"]="5*2"; +w["ncomment"]="8*1"; +w["necessari"]="8*2"; +w["necessary."]="15*1"; +w["need"]="0*3,2*1,8*4,9*3,10*3,13*1,14*1,15*2"; +w["need:"]="10*1"; +w["net"]="3*2,9*1"; +w["netbean"]="2*1"; +w["new"]="2*2,3*1,8*1,10*56,12*2,15*1"; +w["newli"]="8*1"; +w["next"]="5*1"; +w["nexwav"]="9*2,10*8"; +w["nice"]="5*1,6*1"; +w["no"]="2*1,3*2,15*1"; +w["non"]="7*1,8*1,10*1,14*46"; +w["non-cjkv"]="7*1,10*1,14*46"; +w["non-n"]="8*1"; +w["noninfring"]="3*1"; +w["noninfringement."]="3*1"; +w["norwegian"]="14*1"; +w["note"]="3*1,4*1,8*162,9*40,10*40,13*5"; +w["noth"]="15*1"; +w["notic"]="3*3"; +w["now"]="2*1,10*3"; +w["nquindex"]="9*2,10*6"; +w["ns"]="8*1"; +w["nuclei"]="16*1"; +w["nucleus"]="1*1"; +w["null"]="10*1"; +w["number"]="10*1"; +w["nwsearchfnt"]="2*2"; +w["nwsearchfnt.j"]="2*2"; +w["o"]="2*1,12*1"; +w["oasis-open"]="10*1"; +w["object"]="10*4"; +w["object."]="10*3"; +w["obtain"]="3*1"; +w["odd"]="4*1"; +w["ok"]="0*1"; +w["ok-xsl-1"]="0*1"; +w["ok-xsl-1.77.0"]="0*2"; +w["onc"]="8*1"; +w["one"]="2*1,10*1,15*1"; +w["onli"]="8*2,10*3,14*1"; +w["only."]="10*2"; +w["open"]="2*1,8*1,10*2"; +w["open.org"]="10*1"; +w["openstack"]="3*1"; +w["oper"]="0*2"; +w["option"]="9*1"; +w["org"]="10*1"; +w["organ"]="5*1"; +w["origin"]="3*1"; +w["other"]="0*2,3*6,6*1,7*1,8*3,10*2,14*46"; +w["others:"]="3*1"; +w["otherwis"]="3*2"; +w["ouput"]="8*1"; +w["out"]="3*1,6*1"; +w["output"]="0*3,2*1,4*1,5*1,6*2,7*2,8*56,10*1,13*2,15*47"; +w["output-dir"]="8*2"; +w["output."]="3*1,6*1"; +w["outsid"]="0*2"; +w["over"]="13*1"; +w["overal"]="5*1"; +w["overview"]="2*2,5*1,6*1,12*1"; +w["owe"]="0*1"; +w["own"]="2*1,6*3,8*3"; +w["oxygen"]="3*1"; +w["packag"]="3*3,7*52,8*8,10*1"; +w["package."]="6*1,8*1,10*1"; +w["page"]="3*1,5*5,6*2,12*4,15*1"; +w["page."]="12*1,15*1"; +w["pane"]="5*1,6*4,12*2"; +w["para"]="15*1"; +w["paramet"]="8*3,9*1"; +w["parameters."]="8*2"; +w["parent"]="5*1"; +w["part"]="2*1,3*1,5*1,9*1,15*1"; +w["particul"]="3*1"; +w["parts."]="2*1"; +w["pass"]="8*2"; +w["path"]="0*1,3*1,7*1,8*11,13*5"; +w["path-"]="8*4"; +w["paths."]="0*1"; + diff --git a/DOCBOOK/webhelp/docs/search/index-3.js b/DOCBOOK/webhelp/docs/search/index-3.js new file mode 100755 index 0000000..9a8057e --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/index-3.js @@ -0,0 +1,388 @@ +//Auto generated index for searching by xsl-webhelpindexer for DocBook Webhelp.# Kasun Gajasinghe, University of Moratuwa +w["pattern"]="8*1,13*2"; +w["patterns."]="8*1,13*1"; +w["pdf"]="4*2"; +w["peopl"]="9*1"; +w["perform"]="4*1,15*1"; +w["performance."]="4*1"; +w["permiss"]="3*2"; +w["permit"]="3*1"; +w["persist"]="5*1"; +w["persist:"]="5*1"; +w["person"]="3*2"; +w["phrase"]="15*1"; +w["pie"]="3*1"; +w["place"]="6*1"; +w["plain"]="4*1"; +w["pleas"]="3*1,14*1"; +w["plugin"]="0*2,3*2,5*2,6*1,8*1"; +w["plugin."]="3*1"; +w["png"]="4*2"; +w["point"]="7*1,8*5,15*1"; +w["popul"]="15*1"; +w["popular"]="10*1"; +w["porter"]="14*1"; +w["portion"]="3*1"; +w["portugues"]="14*1"; +w["posit"]="5*1,15*4"; +w["positioning.css"]="5*1,15*1"; +w["positions."]="15*1"; +w["possibl"]="3*2"; +w["pretti"]="9*1"; +w["prev"]="5*1"; +w["prior"]="3*1,9*1"; +w["privat"]="10*2"; +w["probabl"]="9*1"; +w["procedur"]="8*1,13*1"; +w["procedure 1"]="8*5"; +w["procedure 1. "]="8*1"; +w["process"]="2*2,5*1,8*3,9*2"; +w["processor"]="0*1,8*4"; +w["processors."]="8*1"; +w["produc"]="6*1"; +w["product"]="0*3"; +w["program"]="8*6"; +w["project"]="2*1,3*2,8*2,14*2"; +w["project."]="3*1"; +w["promot"]="3*1"; +w["prompt"]="8*2"; +w["prompt:"]="8*2"; +w["properti"]="8*5,10*2,13*1"; +w["provid"]="0*1,2*1,3*4,6*1,12*1"; +w["public"]="3*1,4*2,6*1"; +w["publish"]="3*2"; +w["punctuat"]="2*1,8*1"; +w["purpos"]="3*1"; +w["put"]="8*1,9*1,13*1"; +w["quain"]="3*1"; +w["queri"]="2*7,6*1,8*1"; +w["querying:"]="2*1"; +w["question"]="0*1,3*2,10*1"; +w["question."]="3*1"; +w["r"]="8*1"; +w["raphic"]="8*1"; +w["rate"]="6*1"; +w["read"]="12*1"; +w["readm"]="0*1,1*1,2*1,3*51,5*1,6*1,7*1,8*2,9*1,10*1,11*1,12*1,13*1,14*1,15*1,16*1"; +w["readme.xml"]="8*1"; +w["readme:"]="0*1,1*1,2*1,3*51,5*1,6*1,7*1,8*1,9*1,10*1,11*1,12*1,13*1,14*1,15*1,16*1"; +w["reason"]="0*2"; +w["recommend"]="4*41,7*1,15*1"; +w["recompil"]="2*1"; +w["redmond"]="15*2"; +w["refer"]="8*2,13*1"; +w["relat"]="3*1,8*1,13*5,15*1"; +w["releas"]="3*4"; +w["remov"]="9*1"; +w["render"]="12*1"; +w["replac"]="15*1"; +w["requir"]="6*2,14*1"; +w["resid"]="2*1,9*1"; +w["resourc"]="4*1"; +w["restor"]="12*1"; +w["restrict"]="3*1"; +w["result"]="2*2,3*1,6*5,12*2,15*1"; +w["result."]="6*1"; +w["results."]="2*1,6*1"; +w["return"]="2*1"; +w["revalid"]="4*2"; +w["right"]="3*1,15*1"; +w["rman"]="8*1"; +w["role"]="15*1"; +w["romanian"]="14*1"; +w["root"]="2*1,10*1"; +w["rss"]="4*1"; +w["run"]="2*2,8*1,9*2,10*2"; +w["russian"]="14*1"; +w["s"]="0*2,2*3,3*1,4*1,9*3,10*2,14*2,15*1"; +w["safari"]="0*1"; +w["safe"]="8*1"; +w["sale"]="3*1"; +w["same"]="8*2"; +w["sampl"]="3*1,6*1,7*3,8*2,13*11"; +w["sample.jpg"]="13*10"; +w["save"]="12*1"; +w["saxhtmlindex"]="10*1"; +w["saxhtmlindex.java"]="10*2"; +w["saxon"]="0*1,8*10"; +w["saxon-6"]="0*1,8*3"; +w["saxon-6.5.5.jar"]="0*1,8*3"; +w["saxon.jar"]="8*1"; +w["say"]="1*1,16*1"; +w["score"]="2*1,6*2"; +w["script"]="6*2,7*2,8*2,9*1"; +w["script."]="6*1,7*2,8*1,9*1"; +w["search"]="1*46,2*51,3*3,4*2,5*4,6*13,7*1,8*3,9*46,10*3,11*2,12*4,14*3,15*1,16*46"; +w["search-result."]="6*1"; +w["search."]="6*2,12*1"; +w["searching."]="2*1"; +w["section"]="5*1,7*1,11*51,13*1,15*1"; +w["sectioninfo"]="15*1"; +w["see"]="0*1,3*1,4*1,8*6,9*1,10*2,13*1,15*1"; +w["see."]="5*1"; +w["seem"]="9*1"; +w["self"]="10*1"; +w["sell"]="3*1"; +w["separ"]="5*1"; +w["serch"]="2*1"; +w["serv"]="4*1"; +w["server"]="2*1,4*2"; +w["servic"]="6*1"; +w["set"]="0*1,4*4,8*5,9*1,15*1"; +w["setoutputfilt"]="4*1"; +w["setting."]="4*1"; +w["shall"]="3*3"; +w["share"]="0*6,8*12,9*1"; +w["shell"]="7*1,8*1"; +w["should"]="2*1,8*1,9*1"; +w["show"]="6*2,13*1"; +w["shown"]="6*1,13*1"; +w["side"]="2*2,6*1"; +w["side."]="2*1"; +w["sidetreecontrol"]="5*1"; +w["similar"]="6*1"; +w["simpl"]="10*1,13*1"; +w["simple."]="10*1"; +w["simpli"]="2*2,8*1,15*1"; +w["simplifi"]="2*1"; +w["sinc"]="2*1,4*1"; +w["sky"]="1*1,16*1"; +w["small"]="6*3"; +w["smooth"]="9*1"; +w["snapshot"]="9*4"; +w["snowbal"]="3*1,10*6"; +w["snowballstemm"]="10*2"; +w["soft"]="3*1"; +w["softwar"]="3*15"; +w["software."]="3*2"; +w["some"]="1*46,2*1,3*2,8*1,9*2,11*2,16*46"; +w["sophist"]="6*1"; +w["sourc"]="2*2,8*1,13*2"; +w["source."]="2*1"; +w["sourceforg"]="9*1"; +w["sources."]="2*1"; +w["space"]="2*1"; +w["spanish"]="14*1"; +w["specifi"]="3*1,8*1,10*5"; +w["src"]="10*8"; +w["stale"]="4*1"; +w["start"]="7*1,8*2"; +w["state"]="12*2"; +w["stayton"]="4*1,15*1"; +w["stem"]="2*6,6*2,8*2,14*3"; +w["stemmer"]="2*3,3*2,8*1,10*74,12*1,14*3"; +w["stemmer."]="6*1,10*1"; +w["stemming."]="2*1"; +w["step"]="0*1,8*2"; +w["steps."]="10*1"; +w["store"]="2*2,4*1,8*2"; +w["string"]="3*1,10*3"; +w["structur"]="5*4"; +w["structure."]="5*2"; +w["studi"]="15*1"; +w["stuff"]="15*1"; +w["stuff."]="15*1"; +w["style"]="3*1,5*4,15*1"; +w["stylesheet"]="3*1,8*1"; +w["stylesheet-path"]="8*1"; +w["styling."]="5*1"; +w["subdirectori"]="13*1"; +w["subject"]="3*1"; +w["sublicens"]="3*1"; +w["substanti"]="3*1"; +w["such"]="2*1,4*1,10*1"; +w["summari"]="2*1,15*2"; +w["summaries."]="15*1"; +w["summer"]="3*1"; +w["support"]="0*2,2*3,3*2,6*3,7*1,10*3,14*49"; +w["supportedlanguag"]="3*1,10*8"; +w["suppress.footer.navig"]="8*1"; +w["sure"]="10*1"; +w["svn"]="2*1"; +w["swedish"]="14*1"; +w["swf"]="4*2"; +w["synchron"]="6*1"; +w["syncro"]="3*1"; +w["system"]="0*2,6*1,8*4,12*1,15*1"; +w["system."]="6*1,8*3"; +w["system:"]="8*1"; +w["t"]="0*2,2*1,4*1,6*1,8*1,9*1,15*1"; +w["tab"]="5*7,8*1"; +w["tab."]="5*2,8*1"; +w["tab:"]="5*1"; +w["tabl"]="5*3,6*2,7*5,11*5,12*8"; +w["tabs."]="5*1"; +w["tag"]="5*2"; +w["tagsoup"]="3*1"; +w["target"]="6*1"; +w["target."]="6*1"; +w["task"]="9*1,14*1"; +w["technic"]="6*1"; +w["tell"]="8*1"; +w["templat"]="3*2,6*1,10*2"; +w["template."]="14*1"; +w["term"]="6*2"; +w["test"]="0*3,1*46,8*5,11*53,16*46"; +w["test-ouput"]="8*1"; +w["test-output"]="8*3"; +w["text"]="2*1,4*5,8*1,10*1"; +w["that"]="2*2,3*3,4*2,5*1,6*2,8*11,10*2,12*1,13*2"; +w["them"]="4*1,9*1"; +w["them."]="2*1"; +w["theme"]="15*7"; +w["theme-redmond"]="15*3"; +w["then"]="2*1,6*1,10*6,13*1,15*1"; +w["there"]="0*1,2*1,10*1"; +w["therefor"]="14*1"; +w["these"]="2*1,4*2,9*3,12*1,14*1,15*1"; +w["they"]="8*3,12*1"; +w["thingbag"]="3*2"; +w["those"]="4*1,13*1"; +w["though"]="8*1"; +w["three"]="2*2,5*1,9*1"; +w["time"]="6*1"; +w["tion"]="4*1"; +w["tip"]="8*41,15*40"; +w["titl"]="2*1,5*1,13*2"; +w["toc"]="5*2,6*4,15*1"; +w["toc."]="6*1"; +w["token"]="2*2,3*1"; +w["too"]="2*1"; +w["tool"]="8*1"; +w["tools.jar"]="8*1"; +w["top"]="6*1,8*1,15*1"; +w["top-level"]="8*1"; +w["topic"]="15*1"; +w["topic."]="5*1"; +w["tort"]="3*1"; +w["total"]="2*1"; +w["transform"]="0*3"; +w["travers"]="2*1"; +w["tree"]="5*6,6*1,12*1,13*2,15*1"; +w["tree."]="6*1,15*1"; +w["tree:"]="5*1,13*1"; +w["treeview"]="5*2,15*3"; +w["tri"]="1*1,16*1"; +w["true"]="5*1,8*4"; +w["trunk"]="2*3"; +w["turkish"]="14*1"; +w["two"]="2*1,5*1,9*2,10*2,15*1"; +w["txt"]="3*1,4*2"; +w["type"]="4*1,8*4"; +w["u"]="5*1,8*1"; +w["ui"]="5*1,15*1"; +w["ul"]="5*1"; +w["unchang"]="15*1"; +w["unchanged."]="15*1"; +w["uncompress"]="4*1"; +w["under"]="3*6,9*1"; +w["understandable."]="10*1"; +w["undertak"]="14*1"; +w["unix"]="7*1,8*1"; +w["unnecessari"]="2*1"; +w["unord"]="5*1"; +w["unzip"]="8*2"; +w["up"]="1*1,2*2,4*1,5*1,8*1,9*1,10*1,13*1,14*1,15*1,16*1"; +w["updat"]="4*1"; +w["us"]="10*1"; +w["use"]="2*2,3*5,5*2,6*7,7*56,8*55,10*1,13*5,14*2,15*48"; +w["used."]="2*1"; +w["user"]="0*6,2*2,3*1,4*1,6*1,8*1,14*1"; +w["usr"]="0*6,8*12,9*1"; +w["utf"]="4*1"; +w["utf-8"]="4*1"; +w["valid"]="8*2"; +w["validate-against-dtd"]="8*1"; +w["valu"]="8*4"; +w["var"]="2*1"; +w["vari"]="1*1,16*1"; +w["variabl"]="8*3,9*1"; +w["variable."]="9*1"; +w["variables."]="8*1"; +w["various"]="4*1"; +w["veri"]="10*1"; +w["verison"]="14*1"; +w["version"]="0*1,3*1,8*3,9*4,10*2,14*2"; +w["versions."]="9*1"; +w["visitha"]="3*1"; +w["w"]="2*1"; +w["wan"]="0*1"; +w["warn"]="0*2"; +w["warranti"]="3*7"; +w["warranty: "]="3*5"; +w["was"]="3*3"; +w["way"]="9*1,15*1"; +w["ways:"]="15*1"; +w["we"]="0*1,2*1,4*1,5*2,9*3"; +w["web"]="0*1,1*1,2*1,3*51,4*1,5*1,6*3,7*1,8*1,9*2,10*1,11*1,12*1,13*1,14*1,15*1,16*1"; +w["web-bas"]="0*1,1*1,2*1,3*51,5*1,6*2,7*1,8*1,9*1,10*1,11*1,12*1,13*1,14*1,15*1,16*1"; +w["webhelp"]="0*15,2*2,3*2,5*2,6*1,7*1,8*54,9*8,10*10,12*1,13*7"; +w["webhelp-index"]="0*2"; +w["webhelp-indexer."]="0*2"; +w["webhelp."]="8*1,10*2,13*1"; +w["webhelp.include.search.tab"]="8*1"; +w["webhelp.indexer.languag"]="3*1,8*1,10*2"; +w["webhelp.xsl"]="8*3"; +w["webhelpindex"]="2*3,9*1"; +w["webhelpindexer.jar"]="2*1,9*1"; +w["week"]="4*1"; +w["weight"]="3*1,6*1"; +w["well"]="0*3,9*1"; +w["well."]="9*1"; +w["were"]="3*1,9*1,12*2"; +w["what"]="0*4,6*1,10*1,13*1"; +w["when"]="0*2,2*1,5*2,8*1,12*2,15*1"; +w["where"]="0*4,6*1,7*1,8*1,9*1,10*1"; +w["whether"]="2*1,3*1"; +w["which"]="2*1,5*1,8*2,9*1,15*2"; +w["whom"]="3*1"; +w["width"]="15*1"; +w["wiki"]="0*1"; +w["will"]="3*3,8*3,9*1"; +w["window"]="7*1,8*2"; +w["without"]="3*4,6*1"; +w["word"]="1*46,2*8,6*1,11*2,16*46"; +w["work"]="8*2"; +w["would"]="2*1"; +w["write"]="10*1"; +w["writt"]="8*1"; +w["written"]="3*2,10*1"; +w["x"]="0*1,4*1,8*1"; +w["x-javascript"]="4*1"; +w["xerc"]="8*3"; +w["xerces2"]="8*1"; +w["xercesimpl"]="8*2,9*1"; +w["xercesimpl.jar"]="0*2,8*11,9*1"; +w["xhtml"]="0*9,3*1,4*1,8*1"; +w["xhtml."]="0*1"; +w["xml"]="0*3,1*2,2*1,3*52,4*7,5*1,6*1,7*2,8*74,9*2,10*1,11*1,12*1,13*1,14*1,15*1,16*2"; +w["xml-api"]="8*2,9*1"; +w["xml-apis.jar"]="0*2,8*11,9*1"; +w["xml-common"]="8*3"; +w["xml-commons:"]="8*3"; +w["xml."]="8*1"; +w["xml:"]="4*1"; +w["xp"]="8*1"; +w["xsl"]="0*2,2*2,4*3,5*1,8*3,9*2,15*2"; +w["xsl-webhelpindex"]="2*1"; +w["xsl:"]="0*2,4*3,15*1"; +w["xsls"]="8*1"; +w["xslt"]="0*3,8*5"; +w["xslt-processor-cl"]="8*3"; +w["xslt-processor-classpath"]="0*2,8*1"; +w["xsltproc"]="7*5,8*5"; +w["yahoogroup"]="3*1"; +w["yahoogroup."]="3*1"; +w["yes"]="0*1"; +w["yourfil"]="8*1"; +w["yourfile.xml"]="8*2"; +w["zh"]="8*1"; +w[" "]="0*4,1*3,2*3,3*8,4*3,5*3,6*4,7*4,8*4,9*3,10*3,11*4,12*4,13*3,14*3,15*3,16*3"; +w[" add"]="10*5"; +w[" exampl"]="13*5"; +w[" initi"]="10*5"; +w[" sampl"]="13*5"; +w["©"]="3*1"; +w["’d"]="0*1"; +w["“"]="3*1"; + diff --git a/DOCBOOK/webhelp/docs/search/ja-jp.props b/DOCBOOK/webhelp/docs/search/ja-jp.props new file mode 100755 index 0000000..2756805 --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/ja-jp.props @@ -0,0 +1 @@ +J01=\\u306B \ No newline at end of file diff --git a/DOCBOOK/webhelp/docs/search/l10n.js b/DOCBOOK/webhelp/docs/search/l10n.js new file mode 100755 index 0000000..f25bb8f --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/l10n.js @@ -0,0 +1,5 @@ + + //Resource strings for localization + var localeresource = new Object; + localeresource["search_no_results"]="Your search returned no results."; + \ No newline at end of file diff --git a/DOCBOOK/webhelp/docs/search/nwSearchFnt.js b/DOCBOOK/webhelp/docs/search/nwSearchFnt.js new file mode 100755 index 0000000..b115dbe --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/nwSearchFnt.js @@ -0,0 +1,886 @@ +/*---------------------------------------------------------------------------- + * JavaScript for webhelp search + *---------------------------------------------------------------------------- + This file is part of the webhelpsearch plugin for DocBook WebHelp + Copyright (c) 2007-2008 NexWave Solutions All Rights Reserved. + www.nexwave.biz Nadege Quaine + http://kasunbg.blogspot.com/ Kasun Gajasinghe + */ + +//string initialization +var htmlfileList = "htmlFileInfoList.js"; +var htmlfileinfoList = "htmlFileInfoList.js"; +var useCJKTokenizing = false; + +var w = new Object(); +var scoring = new Object(); + +var searchTextField = ''; +var no = 0; +var noWords = 0; +var partialSearch = "There is no page containing all the search terms.
      Partial results:
      "; +var warningMsg = '
      '; +warningMsg+='Please note that due to security settings, Google Chrome does not highlight'; +warningMsg+=' the search results in the right frame.
      '; +warningMsg+='This happens only when the WebHelp files are loaded from the local file system.
      '; +warningMsg+='Workarounds:'; +warningMsg+='
        '; +warningMsg+='
      • Try using another web browser.
      • '; +warningMsg+='
      • Deploy the WebHelp files on a web server.
      • '; +warningMsg+='
      '; +txt_filesfound = 'Results'; +txt_enter_at_least_1_char = "You must enter at least one character."; +txt_enter_more_than_10_words = "Only first 10 words will be processed."; +txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended."; +txt_please_wait = "Please wait. Search in progress..."; +txt_results_for = "Results for: "; + +/* This function verify the validity of search input by the user + Cette fonction verifie la validite de la recherche entrre par l utilisateur */ +function Verifie(searchForm) { + + // Check browser compatibility + if (navigator.userAgent.indexOf("Konquerer") > -1) { + + alert(txt_browser_not_supported); + return; + } + + searchTextField = trim(document.searchForm.textToSearch.value); + searchTextField = searchTextField.replace(/['"]/g,''); + var expressionInput = searchTextField; + $.cookie('textToSearch', expressionInput); + + if (expressionInput.length < 1) { + + // expression is invalid + alert(txt_enter_at_least_1_char); + // reactive la fenetre de search (utile car cadres) + + document.searchForm.textToSearch.focus(); + } + else { + var splitSpace = searchTextField.split(" "); + var splitWords = []; + for (var i = 0 ; i < splitSpace.length ; i++) { + var splitDot = splitSpace[i].split("."); + + if(!(splitDot.length == 1)){ + splitWords.push(splitSpace[i]); + } + + for (var i1 = 0; i1 < splitDot.length; i1++) { + var splitColon = splitDot[i1].split(":"); + for (var i2 = 0; i2 < splitColon.length; i2++) { + var splitDash = splitColon[i2].split("-"); + for (var i3 = 0; i3 < splitDash.length; i3++) { + if (splitDash[i3].split("").length > 0) { + splitWords.push(splitDash[i3]); + } + } + } + } + } + noWords = splitWords; + if (noWords.length > 9){ + // Allow to search maximum 10 words + alert(txt_enter_more_than_10_words); + expressionInput = ''; + for (var x = 0 ; x < 10 ; x++){ + expressionInput = expressionInput + " " + noWords[x]; + } + Effectuer_recherche(expressionInput); + document.searchForm.textToSearch.focus(); + } else { + // Effectuer la recherche + expressionInput = ''; + for (var x = 0 ; x < noWords.length ; x++) { + expressionInput = expressionInput + " " + noWords[x]; + } + Effectuer_recherche(expressionInput); + // reactive la fenetre de search (utile car cadres) + document.searchForm.textToSearch.focus(); + } + } +} + +var stemQueryMap = new Array(); // A hashtable which maps stems to query words + +/* This function parses the search expression, loads the indices and displays the results*/ +function Effectuer_recherche(expressionInput) { + + /* Display a waiting message */ + //DisplayWaitingMessage(); + + /*data initialisation*/ + var searchFor = ""; // expression en lowercase et sans les caracte res speciaux + //w = new Object(); // hashtable, key=word, value = list of the index of the html files + scriptLetterTab = new Scriptfirstchar(); // Array containing the first letter of each word to look for + var wordsList = new Array(); // Array with the words to look for + var finalWordsList = new Array(); // Array with the words to look for after removing spaces + var linkTab = new Array(); + var fileAndWordList = new Array(); + var txt_wordsnotfound = ""; + + + // -------------------------------------- + // Begin Thu's patch + /*nqu: expressionInput, la recherche est lower cased, plus remplacement des char speciaux*/ + //The original replacement expression is: + //searchFor = expressionInput.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, " 0){ + var searchedWords = noWords.length; + var foundedWords = fileAndWordList[0][0].motslisteDisplay.split(",").length; + //console.info("search : " + noWords.length + " found : " + fileAndWordList[0][0].motslisteDisplay.split(",").length); + if (searchedWords != foundedWords){ + linkTab.push(partialSearch); + } + } + + + for (var i = 0; i < cpt; i++) { + + var hundredProcent = fileAndWordList[i][0].scoring + 100 * fileAndWordList[i][0].motsnb; + var ttScore_first = fileAndWordList[i][0].scoring; + var numberOfWords = fileAndWordList[i][0].motsnb; + + if (fileAndWordList[i] != undefined) { + linkTab.push("

      " + txt_results_for + " " + "" + fileAndWordList[i][0].motslisteDisplay + "" + "

      "); + + linkTab.push("
        "); + for (t in fileAndWordList[i]) { + //linkTab.push("
      • "+fl[fileAndWordList[i][t].filenb]+"
      • "); + + var ttInfo = fileAndWordList[i][t].filenb; + // Get scoring + var ttScore = fileAndWordList[i][t].scoring; + var tempInfo = fil[ttInfo]; + + var pos1 = tempInfo.indexOf("@@@"); + var pos2 = tempInfo.lastIndexOf("@@@"); + var tempPath = tempInfo.substring(0, pos1); + var tempTitle = tempInfo.substring(pos1 + 3, pos2); + var tempShortdesc = tempInfo.substring(pos2 + 3, tempInfo.length); + + + // toc.html will not be displayed on search result + if (tempPath == 'toc.html'){ + continue; + } + /* + //file:///home/kasun/docbook/WEBHELP/webhelp-draft-output-format-idea/src/main/resources/web/webhelp/installation.html + var linkString = "
      • " + tempTitle + ""; + // var linkString = "
      • " + tempTitle + ""; + */ + var split = fileAndWordList[i][t].motsliste.split(","); + // var splitedValues = expressionInput.split(" "); + // var finalArray = split.concat(splitedValues); + + arrayString = 'Array('; + for(var x in finalArray){ + if (finalArray[x].length > 2 || useCJKTokenizing){ + arrayString+= "'" + finalArray[x] + "',"; + } + } + arrayString = arrayString.substring(0,arrayString.length - 1) + ")"; + var idLink = 'foundLink' + no; + var linkString = '
      • ' + tempTitle + ''; + var starWidth = (ttScore * 100/ hundredProcent)/(ttScore_first/hundredProcent) * (numberOfWords/maxNumberOfWords); + starWidth = starWidth < 10 ? (starWidth + 5) : starWidth; + // Keep the 5 stars format + if (starWidth > 85){ + starWidth = 85; + } + /* + var noFullStars = Math.ceil(starWidth/17); + var fullStar = "curr"; + var emptyStar = ""; + if (starWidth % 17 == 0){ + // am stea plina + + } else { + + } + console.info(noFullStars); + */ + // Also check if we have a valid description + if ((tempShortdesc != "null" && tempShortdesc != '...')) { + + linkString += "\n
        " + tempShortdesc + "
        "; + } + linkString += "
      • "; + + // Add rating values for scoring at the list of matches + linkString += "
        "; + linkString += "
        "; + //linkString += "
        " + // + ((ttScore * 100/ hundredProcent)/(ttScore_first/hundredProcent)) * 1 + "
        "; + linkString += "
          "; + linkString += "
        • "; + linkString += "
        "; + + linkString += "
        "; + linkString += "
        "; + linkString += "
        "; + //linkString += 'Rating: ' + ttScore + ''; + + linkTab.push(linkString); + no++; + } + linkTab.push("
      "); + } + } + } + + var results = ""; + if (linkTab.length > 0) { + /*writeln ("

      " + txt_results_for + " " + "" + cleanwordsList + "" + "
      "+"

      ");*/ + results = "

      "; + //write("

        "); + for (t in linkTab) { + results += linkTab[t].toString(); + } + results += "

        "; + } else { + results = "

        " + localeresource.search_no_results + " " + txt_wordsnotfound + "" + "

        "; + } + + + // Verify if the browser is Google Chrome and the WebHelp is used on a local machine + // If browser is Google Chrome and WebHelp is used on a local machine a warning message will appear + // Highlighting will not work in this conditions. There is 2 workarounds + if (verifyBrowser()){ + document.getElementById('searchResults').innerHTML = results; + } else { + document.getElementById('searchResults').innerHTML = warningMsg + results; + } + +} + + +// Verify if the stemmed word is aproximately the same as the searched word +function verifyWord(word, arr){ + for (var i = 0 ; i < arr.length ; i++){ + if (word[0] == arr[i][0] + && word[1] == arr[i][1] + //&& word[2] == arr[i][2] + ){ + return true; + } + } + return false; +} + +// Look for elements that start with searchedValue. +function wordsStartsWith(searchedValue){ + var toReturn = ''; + for (var sv in w){ + if (searchedValue.length < 3){ + continue; + } else { + if (sv.toLowerCase().indexOf(searchedValue.toLowerCase()) == 0){ + toReturn+=sv + ","; + } + } + } + return toReturn.length > 0 ? toReturn : undefined; +} + + +function tokenize(wordsList){ + var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces + var cleanwordsList = new Array(); // Array with the words to look for + // ------------------------------------------------- + // Thu's patch + for(var j=0;j"; + return this.input.substring(this.offset,this.offset+2); + } + + function getAllTokens(){ + while(this.incrementToken()){ + var tmp = this.tokenize(); + this.tokens.push(tmp); + } + return this.unique(this.tokens); +// document.getElementById("content").innerHTML += tokens+" "; +// document.getElementById("content").innerHTML += "
        dada"+sortedTokens+" "; +// console.log(tokens.length+"dsdsds"); + /*for(i=0;i t2.length) { + return 1; + } else { + return -1; + } + //return t1.length - t2.length); +} + +// return false if browser is Google Chrome and WebHelp is used on a local machine, not a web server +function verifyBrowser(){ + var returnedValue = true; + var browser = BrowserDetect.browser; + var addressBar = window.location.href; + if (browser == 'Chrome' && addressBar.indexOf('file://') === 0){ + returnedValue = false; + } + + return returnedValue; +} + +// Remove duplicate values from an array +function removeDuplicate(arr) { + var r = new Array(); + o:for(var i = 0, n = arr.length; i < n; i++) { + for(var x = 0, y = r.length; x < y; x++) { + if(r[x]==arr[i]) continue o; + } + r[r.length] = arr[i]; + } + return r; +} + +// Create startsWith method +String.prototype.startsWith = function(str) { + return (this.match("^"+str)==str); +} + +function trim(str, chars) { + return ltrim(rtrim(str, chars), chars); +} + +function ltrim(str, chars) { + chars = chars || "\\s"; + return str.replace(new RegExp("^[" + chars + "]+", "g"), ""); +} + +function rtrim(str, chars) { + chars = chars || "\\s"; + return str.replace(new RegExp("[" + chars + "]+$", "g"), ""); +} diff --git a/DOCBOOK/webhelp/docs/search/punctuation.props b/DOCBOOK/webhelp/docs/search/punctuation.props new file mode 100755 index 0000000..d3e3fcd --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/punctuation.props @@ -0,0 +1,31 @@ +Punct01=\\u3002 +Punct02=\\u3003 +Punct03=\\u300C +Punct04=\\u300D +Punct05=\\u300E +Punct06=\\u300F +Punct07=\\u301D +Punct08=\\u301E +Punct09=\\u301F +Punct10=\\u309B +Punct11=\\u2018 +Punct12=\\u2019 +Punct13=\\u201A +Punct14=\\u201C +Punct15=\\u201D +Punct16=\\u201E +Punct17=\\u2032 +Punct18=\\u2033 +Punct19=\\u2035 +Punct20=\\u2039 +Punct21=\\u203A +Punct22=\\u201E +Punct23=\\u00BB +Punct24=\\u00AB +Punct25=© +Punct26=’ +Punct27=\\u00A0 +Punct28=\\u2014 + + + diff --git a/DOCBOOK/webhelp/docs/search/stemmers/de_stemmer.js b/DOCBOOK/webhelp/docs/search/stemmers/de_stemmer.js new file mode 100755 index 0000000..7ff3822 --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/stemmers/de_stemmer.js @@ -0,0 +1,247 @@ +/* + * Author: Joder Illi + * + * Copyright (c) 2010, FormBlitz AG + * All rights reserved. + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/german/stemmer.html + * Copyright of the algorithm is: Copyright (c) 2001, Dr Martin Porter and can be found at http://snowball.tartarus.org/license.php + * + * Redistribution and use in source and binary forms, with or without modification, is covered by the standard BSD license. + * + */ + +//var stemmer = function Stemmer() { + /* + German includes the following accented forms, + ä ö ü + and a special letter, ß, equivalent to double s. + The following letters are vowels: + a e i o u y ä ö ü + */ + + var stemmer = function(word) { + /* + Put u and y between vowels into upper case + */ + word = word.replace(/([aeiouyäöü])u([aeiouyäöü])/g, '$1U$2'); + word = word.replace(/([aeiouyäöü])y([aeiouyäöü])/g, '$1Y$2'); + + /* + and then do the following mappings, + (a) replace ß with ss, + (a) replace ae with ä, Not doing these, have trouble with diphtongs + (a) replace oe with ö, Not doing these, have trouble with diphtongs + (a) replace ue with ü unless preceded by q. Not doing these, have trouble with diphtongs + So in quelle, ue is not mapped to ü because it follows q, and in feuer it is not mapped because the first part of the rule changes it to feUer, so the u is not found. + */ + word = word.replace(/ß/g, 'ss'); + //word = word.replace(/ae/g, 'ä'); + //word = word.replace(/oe/g, 'ö'); + //word = word.replace(/([^q])ue/g, '$1ü'); + + /* + R1 and R2 are first set up in the standard way (see the note on R1 and R2), but then R1 is adjusted so that the region before it contains at least 3 letters. + R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if there is no such non-vowel. + R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the word if there is no such non-vowel. + */ + + var r1Index = word.search(/[aeiouyäöü][^aeiouyäöü]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } + + var r2Index = -1; + var r2 = ''; + + if (r1Index != -1) { + var r2Index = r1.search(/[aeiouyäöü][^aeiouyäöü]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + } + } + + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Define a valid s-ending as one of b, d, f, g, h, k, l, m, n, r or t. + Define a valid st-ending as the same list, excluding letter r. + */ + + /* + Do each of steps 1, 2 and 3. + */ + + /* + Step 1: + Search for the longest among the following suffixes, + (a) em ern er + (b) e en es + (c) s (preceded by a valid s-ending) + */ + var a1Index = word.search(/(em|ern|er)$/g); + var b1Index = word.search(/(e|en|es)$/g); + var c1Index = word.search(/([bdfghklmnrt]s)$/g); + if (c1Index != -1) { + c1Index++; + } + var index1 = 10000; + var optionUsed1 = ''; + if (a1Index != -1 && a1Index < index1) { + optionUsed1 = 'a'; + index1 = a1Index; + } + if (b1Index != -1 && b1Index < index1) { + optionUsed1 = 'b'; + index1 = b1Index; + } + if (c1Index != -1 && c1Index < index1) { + optionUsed1 = 'c'; + index1 = c1Index; + } + + /* + and delete if in R1. (Of course the letter of the valid s-ending is not necessarily in R1.) If an ending of group (b) is deleted, and the ending is preceded by niss, delete the final s. + (For example, äckern -> äck, ackers -> acker, armes -> arm, bedürfnissen -> bedürfnis) + */ + + if (index1 != 10000 && r1Index != -1) { + if (index1 >= r1Index) { + word = word.substring(0, index1); + if (optionUsed1 == 'b') { + if (word.search(/niss$/) != -1) { + word = word.substring(0, word.length -1); + } + } + } + } + /* + Step 2: + Search for the longest among the following suffixes, + (a) en er est + (b) st (preceded by a valid st-ending, itself preceded by at least 3 letters) + */ + + var a2Index = word.search(/(en|er|est)$/g); + var b2Index = word.search(/(.{3}[bdfghklmnt]st)$/g); + if (b2Index != -1) { + b2Index += 4; + } + + var index2 = 10000; + var optionUsed2 = ''; + if (a2Index != -1 && a2Index < index2) { + optionUsed2 = 'a'; + index2 = a2Index; + } + if (b2Index != -1 && b2Index < index2) { + optionUsed2 = 'b'; + index2 = b2Index; + } + + /* + and delete if in R1. + (For example, derbsten -> derbst by step 1, and derbst -> derb by step 2, since b is a valid st-ending, and is preceded by just 3 letters) + */ + + if (index2 != 10000 && r1Index != -1) { + if (index2 >= r1Index) { + word = word.substring(0, index2); + } + } + + /* + Step 3: d-suffixes (*) + Search for the longest among the following suffixes, and perform the action indicated. + end ung + delete if in R2 + if preceded by ig, delete if in R2 and not preceded by e + ig ik isch + delete if in R2 and not preceded by e + lich heit + delete if in R2 + if preceded by er or en, delete if in R1 + keit + delete if in R2 + if preceded by lich or ig, delete if in R2 + */ + + var a3Index = word.search(/(end|ung)$/g); + var b3Index = word.search(/[^e](ig|ik|isch)$/g); + var c3Index = word.search(/(lich|heit)$/g); + var d3Index = word.search(/(keit)$/g); + if (b3Index != -1) { + b3Index ++; + } + + var index3 = 10000; + var optionUsed3 = ''; + if (a3Index != -1 && a3Index < index3) { + optionUsed3 = 'a'; + index3 = a3Index; + } + if (b3Index != -1 && b3Index < index3) { + optionUsed3 = 'b'; + index3 = b3Index; + } + if (c3Index != -1 && c3Index < index3) { + optionUsed3 = 'c'; + index3 = c3Index; + } + if (d3Index != -1 && d3Index < index3) { + optionUsed3 = 'd'; + index3 = d3Index; + } + + if (index3 != 10000 && r2Index != -1) { + if (index3 >= r2Index) { + word = word.substring(0, index3); + var optionIndex = -1; + var optionSubsrt = ''; + if (optionUsed3 == 'a') { + optionIndex = word.search(/[^e](ig)$/); + if (optionIndex != -1) { + optionIndex++; + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'c') { + optionIndex = word.search(/(er|en)$/); + if (optionIndex != -1) { + if (optionIndex >= r1Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'd') { + optionIndex = word.search(/(lich|ig)$/); + if (optionIndex != -1) { + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } + } + } + + /* + Finally, + turn U and Y back into lower case, and remove the umlaut accent from a, o and u. + */ + word = word.replace(/U/g, 'u'); + word = word.replace(/Y/g, 'y'); + word = word.replace(/ä/g, 'a'); + word = word.replace(/ö/g, 'o'); + word = word.replace(/ü/g, 'u'); + + return word; + }; +//} \ No newline at end of file diff --git a/DOCBOOK/webhelp/docs/search/stemmers/en_stemmer.js b/DOCBOOK/webhelp/docs/search/stemmers/en_stemmer.js new file mode 100755 index 0000000..2117c1b --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/stemmers/en_stemmer.js @@ -0,0 +1,234 @@ +// Porter stemmer in Javascript. Few comments, but it's easy to follow against the rules in the original +// paper, in +// +// Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14, +// no. 3, pp 130-137, +// +// see also http://www.tartarus.org/~martin/PorterStemmer + +// Release 1 +// Derived from (http://tartarus.org/~martin/PorterStemmer/js.txt) - cjm (iizuu) Aug 24, 2009 + +var stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + return function (w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4, + origword = w; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c + re = new RegExp("^(.+" + c + ")y$"); + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + // See http://snowball.tartarus.org/algorithms/english/stemmer.html + // "Exceptional forms in general" + var specialWords = { + "skis" : "ski", + "skies" : "sky", + "dying" : "die", + "lying" : "lie", + "tying" : "tie", + "idly" : "idl", + "gently" : "gentl", + "ugly" : "ugli", + "early": "earli", + "only": "onli", + "singly": "singl" + }; + + if(specialWords[origword]){ + w = specialWords[origword]; + } + + if( "sky news howe atlas cosmos bias \ + andes inning outing canning herring \ + earring proceed exceed succeed".indexOf(origword) !== -1 ){ + w = origword; + } + + // Address words overstemmed as gener- + re = /.*generate?s?d?(ing)?$/; + if( re.test(origword) ){ + w = w + 'at'; + } + re = /.*general(ly)?$/; + if( re.test(origword) ){ + w = w + 'al'; + } + re = /.*generic(ally)?$/; + if( re.test(origword) ){ + w = w + 'ic'; + } + re = /.*generous(ly)?$/; + if( re.test(origword) ){ + w = w + 'ous'; + } + // Address words overstemmed as commun- + re = /.*communit(ies)?y?/; + if( re.test(origword) ){ + w = w + 'iti'; + } + + return w; + } +})(); diff --git a/DOCBOOK/webhelp/docs/search/stemmers/fr_stemmer.js b/DOCBOOK/webhelp/docs/search/stemmers/fr_stemmer.js new file mode 100755 index 0000000..34f9743 --- /dev/null +++ b/DOCBOOK/webhelp/docs/search/stemmers/fr_stemmer.js @@ -0,0 +1,299 @@ +/* + * Author: Kasun Gajasinghe + * E-Mail: kasunbg AT gmail DOT com + * Date: 09.08.2010 + * + * usage: stemmer(word); + * ex: var stem = stemmer(foobar); + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/french/stemmer.html + * + * LICENSE: + * + * Copyright (c) 2010, Kasun Gajasinghe. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * + * THIS SOFTWARE IS PROVIDED BY KASUN GAJASINGHE ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KASUN GAJASINGHE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +var stemmer = function(word){ +// Letters in French include the following accented forms, +// â à ç ë é ê è ï î ô û ù +// The following letters are vowels: +// a e i o u y â à ë é ê è ï î ô û ù + + word = word.toLowerCase(); + var oriWord = word; + word = word.replace(/qu/g, 'qU'); //have to perform first, as after the operation, capital U is not treated as a vowel + word = word.replace(/([aeiouyâàëéêèïîôûù])u([aeiouyâàëéêèïîôûù])/g, '$1U$2'); + word = word.replace(/([aeiouyâàëéêèïîôûù])i([aeiouyâàëéêèïîôûù])/g, '$1I$2'); + word = word.replace(/([aeiouyâàëéêèïîôûù])y/g, '$1Y'); + word = word.replace(/y([aeiouyâàëéêèïîôûù])/g, 'Y$1'); + + var rv=''; + var rvIndex = -1; + if(word.search(/^(par|col|tap)/) != -1 || word.search(/^[aeiouyâàëéêèïîôûù]{2}/) != -1){ + rv = word.substring(3); + rvIndex = 3; + } else { + rvIndex = word.substring(1).search(/[aeiouyâàëéêèïîôûù]/); + if(rvIndex != -1){ + rvIndex +=2; //+2 is to supplement the substring(1) used to find rvIndex + rv = word.substring(rvIndex); + } else { + rvIndex = word.length; + } + } + +// R1 is the region after the first non-vowel following a vowel, or the end of the word if there is no such non-vowel. +// R2 is the region after the first non-vowel following a vowel in R1, or the end of the word if there is no such non-vowel + var r1Index = word.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } else { + r1Index = word.length; + } + + var r2Index = -1; + var r2 = ''; + if (r1Index != -1) { + r2Index = r1.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + r2Index = word.length; + } + } + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Step 1: Standard suffix removal + */ + var a1Index = word.search(/(ance|iqUe|isme|able|iste|eux|ances|iqUes|ismes|ables|istes)$/); + var a2Index = word.search(/(atrice|ateur|ation|atrices|ateurs|ations)$/); + var a3Index = word.search(/(logie|logies)$/); + var a4Index = word.search(/(usion|ution|usions|utions)$/); + var a5Index = word.search(/(ence|ences)$/); + var a6Index = word.search(/(ement|ements)$/); + var a7Index = word.search(/(ité|ités)$/); + var a8Index = word.search(/(if|ive|ifs|ives)$/); + var a9Index = word.search(/(eaux)$/); + var a10Index = word.search(/(aux)$/); + var a11Index = word.search(/(euse|euses)$/); + var a12Index = word.search(/[^aeiouyâàëéêèïîôûù](issement|issements)$/); + var a13Index = word.search(/(amment)$/); + var a14Index = word.search(/(emment)$/); + var a15Index = word.search(/[aeiouyâàëéêèïîôûù](ment|ments)$/); + + if(a1Index != -1 && a1Index >= r2Index){ + word = word.substring(0,a1Index); + } else if(a2Index != -1 && a2Index >= r2Index){ + word = word.substring(0,a2Index); + var a2Index2 = word.search(/(ic)$/); + if(a2Index2 != -1 && a2Index2 >= r2Index){ + word = word.substring(0, a2Index2); //if preceded by ic, delete if in R2, + } else { //else replace by iqU + word = word.replace(/(ic)$/,'iqU'); + } + } else if(a3Index != -1 && a3Index >= r2Index){ + word = word.replace(/(logie|logies)$/,'log'); //replace with log if in R2 + } else if(a4Index != -1 && a4Index >= r2Index){ + word = word.replace(/(usion|ution|usions|utions)$/,'u'); //replace with u if in R2 + } else if(a5Index != -1 && a5Index >= r2Index){ + word = word.replace(/(ence|ences)$/,'ent'); //replace with ent if in R2 + } else if(a6Index != -1 && a6Index >= rvIndex){ + word = word.substring(0,a6Index); + if(word.search(/(iv)$/) >= r2Index){ + word = word.replace(/(iv)$/, ''); + if(word.search(/(at)$/) >= r2Index){ + word = word.replace(/(at)$/, ''); + } + } else if(word.search(/(eus)$/) != -1){ + var a6Index2 = word.search(/(eus)$/); + if(a6Index2 >=r2Index){ + word = word.substring(0, a6Index2); + } else if(a6Index2 >= r1Index){ + word = word.substring(0,a6Index2)+"eux"; + } + } else if(word.search(/(abl|iqU)$/) >= r2Index){ + word = word.replace(/(abl|iqU)$/,''); //if preceded by abl or iqU, delete if in R2, + } else if(word.search(/(ièr|Ièr)$/) >= rvIndex){ + word = word.replace(/(ièr|Ièr)$/,'i'); //if preceded by abl or iqU, delete if in R2, + } + } else if(a7Index != -1 && a7Index >= r2Index){ + word = word.substring(0,a7Index); //delete if in R2 + if(word.search(/(abil)$/) != -1){ //if preceded by abil, delete if in R2, else replace by abl, otherwise, + var a7Index2 = word.search(/(abil)$/); + if(a7Index2 >=r2Index){ + word = word.substring(0, a7Index2); + } else { + word = word.substring(0,a7Index2)+"abl"; + } + } else if(word.search(/(ic)$/) != -1){ + var a7Index3 = word.search(/(ic)$/); + if(a7Index3 != -1 && a7Index3 >= r2Index){ + word = word.substring(0, a7Index3); //if preceded by ic, delete if in R2, + } else { //else replace by iqU + word = word.replace(/(ic)$/,'iqU'); + } + } else if(word.search(/(iv)$/) != r2Index){ + word = word.replace(/(iv)$/,''); + } + } else if(a8Index != -1 && a8Index >= r2Index){ + word = word.substring(0,a8Index); + if(word.search(/(at)$/) >= r2Index){ + word = word.replace(/(at)$/, ''); + if(word.search(/(ic)$/) >= r2Index){ + word = word.replace(/(ic)$/, ''); + } else { word = word.replace(/(ic)$/, 'iqU'); } + } + } else if(a9Index != -1){ word = word.replace(/(eaux)/,'eau') + } else if(a10Index >= r1Index){ word = word.replace(/(aux)/,'al') + } else if(a11Index != -1 ){ + var a11Index2 = word.search(/(euse|euses)$/); + if(a11Index2 >=r2Index){ + word = word.substring(0, a11Index2); + } else if(a11Index2 >= r1Index){ + word = word.substring(0, a11Index2)+"eux"; + } + } else if(a12Index!=-1 && a12Index>=r1Index){ + word = word.substring(0,a12Index+1); //+1- amendment to non-vowel + } else if(a13Index!=-1 && a13Index>=rvIndex){ + word = word.replace(/(amment)$/,'ant'); + } else if(a14Index!=-1 && a14Index>=rvIndex){ + word = word.replace(/(emment)$/,'ent'); + } else if(a15Index!=-1 && a15Index>=rvIndex){ + word = word.substring(0,a15Index+1); + } + + /* Step 2a: Verb suffixes beginning i*/ + var wordStep1 = word; + var step2aDone = false; + if(oriWord == word.toLowerCase() || oriWord.search(/(amment|emment|ment|ments)$/) != -1){ + step2aDone = true; + var b1Regex = /([^aeiouyâàëéêèïîôûù])(îmes|ît|îtes|i|ie|ies|ir|ira|irai|iraIent|irais|irait|iras|irent|irez|iriez|irions|irons|iront|is|issaIent|issais|issait|issant|issante|issantes|issants|isse|issent|isses|issez|issiez|issions|issons|it)$/i; + if(word.search(b1Regex) >= rvIndex){ + word = word.replace(b1Regex,'$1'); + } + } + + /* Step 2b: Other verb suffixes*/ + if (step2aDone && wordStep1 == word) { + if (word.search(/(ions)$/) >= r2Index) { + word = word.replace(/(ions)$/, ''); + } else { + var b2Regex = /(é|ée|ées|és|èrent|er|era|erai|eraIent|erais|erait|eras|erez|eriez|erions|erons|eront|ez|iez)$/i; + if (word.search(b2Regex) >= rvIndex) { + word = word.replace(b2Regex, ''); + } else { + var b3Regex = /e(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i; + if (word.search(b3Regex) >= rvIndex) { + word = word.replace(b3Regex, ''); + } else { + var b3Regex2 = /(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i; + if (word.search(b3Regex2) >= rvIndex) { + word = word.replace(b3Regex2, ''); + } + } + } + } + } + + if(oriWord != word.toLowerCase()){ + /* Step 3 */ + var rep = ''; + if(word.search(/Y$/) != -1) { + word = word.replace(/Y$/, 'i'); + } else if(word.search(/ç$/) != -1){ + word = word.replace(/ç$/, 'c'); + } + } else { + /* Step 4 */ + //If the word ends s, not preceded by a, i, o, u, è or s, delete it. + if (word.search(/([^aiouès])s$/) >= rvIndex) { + word = word.replace(/([^aiouès])s$/, '$1'); + } + var e1Index = word.search(/ion$/); + if (e1Index >= r2Index && word.search(/[st]ion$/) >= rvIndex) { + word = word.substring(0, e1Index); + } else { + var e2Index = word.search(/(ier|ière|Ier|Ière)$/); + if (e2Index != -1 && e2Index >= rvIndex) { + word = word.substring(0, e2Index) + "i"; + } else { + if (word.search(/e$/) >= rvIndex) { + word = word.replace(/e$/, ''); //delete last e + } else if (word.search(/guë$/) >= rvIndex) { + word = word.replace(/guë$/, 'gu'); + } + } + } + } + + /* Step 5: Undouble */ + //word = word.replace(/(en|on|et|el|eil)(n|t|l)$/,'$1'); + word = word.replace(/(en|on)(n)$/,'$1'); + word = word.replace(/(ett)$/,'et'); + word = word.replace(/(el|eil)(l)$/,'$1'); + + /* Step 6: Un-accent */ + word = word.replace(/[éè]([^aeiouyâàëéêèïîôûù]+)$/,'e$1'); + word = word.toLowerCase(); + return word; +}; + +var eqOut = new Array(); +var noteqOut = new Array(); +var eqCount = 0; +/* +To test the stemming, create two arrays named "voc" and "COut" which are for vocabualary and the stemmed output. +Then add the vocabulary strings and output strings. This method will generate the stemmed output for "voc" and will +compare the output with COut. + (I used porter's voc and out files and did a regex to convert them to js objects. regex: /");\nvoc.push("/g . This + will add strings to voc array such that output would look like: voc.push("foobar"); ) drop me an email for any help. + */ +function testFr(){ + var start = new Date().getTime(); //execution time + eqCount = 0; + eqOut = new Array(); + noteqOut = new Array(); + for(var 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�lJnlbk@ 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/readme.xml b/DOCBOOK/webhelp/docsrc/readme.xml new file mode 100755 index 0000000..f931df7 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/readme.xml @@ -0,0 +1,970 @@ + + + + + + + Permission is hereby granted, free of charge, to any person obtaining a copy of this + software and associated documentation files (the Software), to deal in the + Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + + Except as contained in this notice, the names of individuals credited with + contribution to this software shall not be used in advertising or otherwise to promote + the sale, use or other dealings in this Software without prior written authorization + from the individuals in question. + + + Any stylesheet derived from this Software that is publicly distributed will be + identified with a different name and the version strings in any derived Software will + be changed so that no possibility of confusion between the derived package and this + Software will exist. + + + Warranty: + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DAVID CRAMER, KASUN GAJASINGHE, OR ANY + OTHER CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + This package is maintained by Kasun Gajasinghe, + kasunbg AT gmail DOT com and David Cramer, + david AT thingbag DOT net and with + contributions by Arun Bharadwaj and Visitha Baddegama. Please + direct support questions to the DocBook-apps + mailing list. + This package also includes the following software written and copyrighted by others: + + Files in template/common/jquery are + copyrighted by JQuery under the MIT License. + The file jquery.cookie.js Copyright (c) 2006 Klaus Hartl under + the MIT license. + + jquery + + + + Some files in the template/search and indexer directories were + originally part of N. Quaine's htmlsearch DITA plugin. + The htmlsearch DITA plugin is available from the files page of the DITA-users yahoogroup. The + htmlsearch plugin was released under a BSD-style + license. See indexer/license.txt + for details. + htmlsearch + + + DITA + htmlsearch plugin + + + + Stemmers from the Snowball + project released under a BSD license. + + + Code from the Apache Lucene search + engine provides support for tokenizing Chinese, Japanese, and Korean content released + under the Apache 2.0 license. + + + Code that provides weighted search results and some + other improvements was graciously donated by SyncRO Soft + Ltd., the publishers of the oXygen XML + Editor. + + + TagSoup, released under the Apache 2.0 + license, makes it possible to index html instead of just + xhtml output. + + + Cosmetic improvements provided by OpenStack. + + Webhelp for DocBook was first developed as a Google Summer of Code project. + + + 2008-2012 + Kasun Gajasinghe + David Cramer + + DavidCramerdavid AT thingbag DOT net + KasunGajasinghekasunbg AT gmail DOT com + January 2012 + + + Introduction + + + Overview of the package. + + + + A common requirement for technical publications groups is to produce a Web-based help + format that includes a table of contents pane, a search feature, and an index similar to what + you get from the Microsoft HTML Help (.chm) format or Eclipse help. If the content is help for + a Web application that is not exposed to the Internet or requires that the user be logged in, + then it is impossible to use services like Google to add search. + features + + Features + + + Sophisticated CSS-based page layout + + + Client-side search. + search + features + + + + Provides full content search of the documentation. Shows the search results with + links to chunked pages, and a small description. + + + Search results scoring/rating - The results are weighted according to how many + times the words in search query appears in it, is it bold or not, is in index terms + etc. The score out of 5 is shown by small colored boxes after each + search-result. + + + Search results can include brief descriptions of the target. + search + description + + + + Stemming support for English, French, and German. Stemming support can be added + for other languages by implementing a stemmer. + search + stemming + + + + Support for Chinese, Japanese, and Korean languages using code from the Lucene search + engine. + + + Search highlighting shows where the searched term appears in the results. + + search + highlighting + + + + + + Table of contents (TOC) pane with collapsible toc tree. + + + Auto-synchronization of content pane and TOC. + + + Nicely placed small forward, backward, top links + + + TOC and search pane implemented without the use of a frameset. + + + An Ant script and sample Makefile to generate output. + You can use the ant build file by importing it into your + own or use it as a model for integrating this output + format into your own build system. Alternatively, you can + use the build scripts as a template for creating your own + script. You can also generate webhelp from DocBook using + the Docbkx Maven plugin. + + + + Using the package + + The following sections describe how to + install and use the package on Windows with the sample Ant build + script. In an environment where unix shell command are + available, you can also use the + Makefile.sample as a starting point for + creating your build script. To use + Makefile.sample you must have + xsltproc and java + available in your PATH. +
        + Generating webhelp output using the Ant build.xml + file + + Installation instructions + + + + To install the package + + + The examples in this procedure assume a Windows + installation, but the process is the same in other + environments, mutatis + mutandis. In an environment where unix + shell command are available, you can also use the + Makefile.sample as a starting point + for creating your build script. To use + Makefile.sample you must have + xsltproc and java + available in your PATH. You can also use + the Docbkx Maven plugin to generate webhelp. + + + If necessary, install Java + 1.6 or higher. + + + Confirm that Java is installed and in your PATH by typing the + following at a command prompt: java -version + + To build the indexer, you must have the JDK. + + + + + + If necessary, install Apache + Ant 1.8.0 or higher. See Ant installation instructions. + + + Unzip the Ant binary distribution to a convenient location on your system. For + example: c:\Program Files. + + + Set the environment variable ANT_HOME to the top-level Ant + directory. For example: c:\Program Files\apache-ant-1.8.0. + See How To Manage + Environment Variables in Windows XP for information on setting + environment variables. + + + + Add the Ant bin directory to your PATH. For + example: c:\Program Files\apache-ant-1.8.0\bin + + + Confirm that Ant is installed by typing the following at a command prompt: + ant -version + + If you see a message about the file tools.jar being + missing, you can safely ignore it. + + + + + + Download Saxon + 6.5.x and unzip the distribution to a convenient location on your file system. + You will use the path to saxon.jar in below. + The build.xml has only been tested with Saxon 6.5, though + it could be adapted to work with other XSLT processors. However, when you generate + output, the Saxon jar must not be in your + CLASSPATH. + + + + Download Xerces2 + Java and extract it to a convenient location on + your file system. You will need the + xercesImpl.jar and + xml-apis.jar from this distribution + in in . + + + In a text editor, edit the + build.properties file in the + webhelp directory and make the changes indicated by the comments. + You must set appropriate values for + xslt-processor-classpath, + xercesImpl.jar, and + xml-apis.jar. + See the DocBook reference + documentation for detailed information about the + available webhelp and other parameters. Note that not all + DocBook parameters are passed in to the xsls by the + build.xml by default. You may need + to modify the build.xml to pass in + some DocBook + parameters. +# The path (relative to the build.xml file) to your input document. +# To use your own input document, create a build.xml file of your own +# and import this build.xml. +input-xml=docsrc/readme.xml + +# The directory in which to put the output files. +# This directory is created if it does not exist. +output-dir=docs + +# If you are using a customization layer that imports webhelp.xsl, use +# this property to point to it. +stylesheet-path=${ant.file.dir}/xsl/webhelp.xsl + +# If your document has image directories that need to be copied +# to the output directory, you can list patterns here. +# See the Ant documentation for fileset for documentation +# on patterns. +#input-images-dirs=images/**,figures/**,graphics/** + +# By default, the ant script assumes your images are stored +# in the same directory as the input-xml. If you store your +# image directories in another directory, specify it here. +# and uncomment this line. +#input-images-basedir=/path/to/image/location + +# Modify the follosing so that they point to your local +# copy of the jars indicated: +# * Saxon 6.5 jar +# * Xerces 2: xercesImpl.jar +# * xml-commons: xml-apis.jar +xslt-processor-classpath=/usr/share/java/saxon-6.5.5.jar +xercesImpl.jar=/usr/share/java/xercesImpl.jar +xml-apis.jar=/usr/share/java/xml-apis.jar + +# For non-ns version only, this validates the document +# against a dtd. +validate-against-dtd=true + +# The extension for files to be indexed (html/htm/xhtml etc.) +html.extension=html + +# Set this to false if you don't need a search tab. +webhelp.include.search.tab=true + +# indexer-language is used to tell the search indexer which language +# the docbook is written. This will be used to identify the correct +# stemmer, and punctuations that differs from language to language. +# see the documentation for details. en=English, fr=French, de=German, +# zh=Chinese, ja=Japanese etc. +webhelp.indexer.language=en + +# Enables/Disables stemming +# Stemming allows better querying for the search +enable.stemming=true + +# Set admon.graphics to 1 to user graphics for note, tip, etc. +admon.graphics=0 +suppress.footer.navigation=0 + + + Test the package by running the command ant + webhelp -Doutput-dir=test-ouput at the command + line in the webhelp directory. It should generate a copy + of this documentation in the doc directory. Type start + test-output\index.html to open the output in a + browser. Once you have confirmed that the process worked, + you can delete the test-output directory. + + + To process your own document, simply refer to this package from another + build.xml in arbitrary location on your system: + + + Create a new build.xml file that defines the name of your + source file, the desired output directory, and imports the + build.xml from this package. For example: + <project> + <property name="input-xml" value="path-to/yourfile.xml"/> + <property name="input-images-dirs" value="images/** figures/** graphics/**"/> + <property name="output-dir" value="path-to/desired-output-dir"/> + <import file="path-to/docbook-webhelp/build.xml"/> +</project> + + + From the directory containing your newly created build.xml + file, type ant webhelp to build your document. + + + + +
        +
        Using and customizing the output + + To deep link to a topic inside the help set, simply link directly to the page. This help + system uses no frameset, so nothing further is necessary. + See Chunking into + multiple HTML files in Bob Stayton's DocBook XSL: The Complete + Guide for information on controlling output file names and which files are + chunked in DocBook. + + When you perform a search, the results can include brief summaries. These are populated + in one of two ways: + + By adding role="summary" to a para or + phrase in the chapter or + section. + + + By adding an abstract to the chapterinfo or + sectioninfo element. + + + To customize the look and feel of the help, study the following css files: + + docs/common/css/positioning.css: This handles the Positioning + of DIVs in appropriate positions. For example, it causes the + leftnavigation div to appear on the left, the header on top, and so on. + Use this if you need to change the relative positions or need to change the + width/height etc. + + + docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css: + This is the theming part which adds colors and stuff. This is a default theme comes + with jqueryui unchanged. You can get + any theme based your interest from this. (Themes are on right navigation bar.) Then + replace the css theme folder (theme-redmond) with it, and change the xsl to point to + the new css. + + + docs/common/jquery/treeview/jquery.treeview.css: This styles + the toc Tree. Generally, you don't have to edit this file. + + +
        Recommended Apache configurations + + If you are serving a long document from an Apache web + server, we recommend you make the following additions or + changes to your httpd.conf or + .htaccess file. AddDefaultCharSet UTF-8 # + + # 480 weeks + <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> # + Header set Cache-Control "max-age=290304000, public" + </FilesMatch> + + # 2 DAYS + <FilesMatch "\.(xml|txt)$"> + Header set Cache-Control "max-age=172800, public, must-revalidate" + </FilesMatch> + + # 2 HOURS + <FilesMatch "\.(html|htm)$"> + Header set Cache-Control "max-age=7200, must-revalidate" + </FilesMatch> + + # compress text, html, javascript, css, xml: + AddOutputFilterByType DEFLATE text/plain # + AddOutputFilterByType DEFLATE text/html + AddOutputFilterByType DEFLATE text/xml + AddOutputFilterByType DEFLATE text/css + AddOutputFilterByType DEFLATE application/xml + AddOutputFilterByType DEFLATE application/xhtml+xml + AddOutputFilterByType DEFLATE application/rss+xml + AddOutputFilterByType DEFLATE application/javascript + AddOutputFilterByType DEFLATE application/x-javascript + + # Or, compress certain file types by extension: + <Files *.html> + SetOutputFilter DEFLATE + </Files> + + + See Odd characters in HTML output in Bob + Stayton's book DocBook XSL: The Complete + Guide for more information about this + setting. + + + These lines and those that follow cause the + browser to cache various resources such as bitmaps and + JavaScript files. Note that caching JavaScript files + could cause your users to have stale search indexes if + you update your document since the search index is + stored in JavaScript files. + + + These lines cause the the server to compress html, + css, and JavaScript files and the brower to uncompress + them to improve download performance. + + +
        +
        +
        Search indexing + + Run ant index in the webhelp directory to index the content. Running + ant webhelp will do the indexing as part of the process as well. + Here's some detailed information about invoking the indexer. The indexing process is + pretty smooth, so probably you doesn't need to be concerned with following details. Webhelp + Ant script does all the needed bits. + + + Following should be in the CLASSPATH. + + + + webhelpindexer.jar, + lucene-analyzers-3.0.0.jar, + lucene-core-3.0.0.jar - These three are available in the + extensions/ directory of docsbook-xsl-1.76.1, and is automatically fetched to the + webhelp's Ant script. Go for a XSL snapshot if you can which contains the latest + version http://docbook.sourceforge.net/snapshot/ + + + xercesImpl.jar, xml-apis.jar - + These two comes by default with Ant 1.8.0 or prior versions. These are available + under /usr/share/java directory of Linux distributions as well. Else, you may have + to download, and put them to jre/lib/endorsed. + + + + + + The main class is com.nexwave.nquindexer.IndexerMain for the + version 1.76.1+. It's com.nexwave.nquindexer.IndexerTask for the + versions 1.76.0 and 1.76.1. + + + + Needs two parameters as command-line arguments: + + + + The folder where the files to be indexed reside + + + + + (Optional) language. defaults to "en". See build.properties for + details + + + + + + + We have changed the way we invoke the webhelp indexer from the Ant Task to + indexertask to direct invocation. This seems to have remove the + CLASSPATH issue some people were having. + + + + + + search + indexing + + + indexer + CLASSPATH + + To build the indexer, you must have installed the JDK version 1.5 or + higher and set the ANT_HOME environment variable. + + ANT_HOME + + + indexer + building + +
        +
        Adding support for other (non-CJKV) languages + + To support stemming for a language, the search mechanism requires a stemmer implemented + in both Java and JavaScript. The Java version is used by the indexer and the JavaScript + verison is used to stem the user's input on the search form. Currently the search mechanism + supports stemming for English and German. In addition, Java stemmers are included for the + following languages. Therefore, to support these languages, you only need to implement the + stemmer in JavaScript and add it to the template. If you do undertake this task, please + consider contributing the JavaScript version back to this project and to Martin Porter's + project. + + Danish + + + Dutch + + + Finnish + + + Hungarian + + + Italian + + + Norwegian + + + Portuguese + + + Romanian + + + Russian + + + Spanish + + + Swedish + + + Turkish + + + stemming + +
        +
        Adding images + + This section shows how to add images to WebHelp. For that, follow the simple procedure given. + + Put the images in a subdirectory of your source file directory. For example + docsrc/images. + + + Then refer to those images from your docbook document. + Following image is from webhelp/docsrs/images/sample.jpg. The docbook code is shown + below. + +
        Sample Image + + + + + + +
        +
        + Example code for adding images. Note down the relative path used + + <figure> + <title>Sample</title> + <mediaobject> + <imageobject> + <imagedata fileref="images/sample.jpg" format="JPG"/> + </imageobject> + </mediaobject> +</figure> + +
        + + The build.properties file controls what directories are copied + over from the source tree to the output + tree:# If your document has image directories that need to be copied +# to the output directory, you can list patterns here. +# See the Ant documentation for fileset for documentation +# on patterns. +input-images-dirs=images/**,figures/**,graphics/** + +
        +
        +
        + Developer Docs + + This chapter provides an overview of how webhelp is implemented. + The table of contents and search panes are implemented as divs and rendered as if they + were the left pane in a frameset. As a result, the page must save the state of the table of + contents and the search in cookies when you navigate away from a page. When you load a new + page, the page reads these cookies and restores the state of the table of contents tree and + search. The result is that the help system behaves exactly as if it were a frameset. +
        Design + + An overview of webhelp page structure. + DocBook WebHelp page structure is fully built on css-based design abandoning frameset + structure. Overall page structure can be divided in to three main sections + + Header: Header is a separate Div which include company logo, navigation + button(prev, next etc.), page title and heading of parent topic. + + + Content: This includes the content of the documentation. The processing of this + part is done by DocBook + XSL Chunking customization. Few further css-styling applied from + positioning.css. + + + Left Navigation: This includes the table of contents and search tab. This is + customized using jquery-ui styling. + + + Tabbed Navigation: The navigation pane is organized in to two tabs. Contents + tab, and Search tab. Tabbed output is achieved using JQuery Tabs plugin. + + + Table of Contents (TOC) tree: When building the chunked html from the docbook + file, Table of Contents is generated as an Unordered List (a list made from + <ul> <li> tags). When page loads in the browser, we apply + styling to it to achieve the nice look that you see. Styling for TOC tree is done + by a JQuery UI plugin called + TreeView. We can generate the tree easily by following javascript code: + +//Generate the tree +$("#tree").treeview({ +collapsed: true, +animated: "medium", +control: "#sidetreecontrol", +persist: "cookie" +}); + + + + + Search Tab: This includes the search feature. + + + + + + design + +
        +
        Search + + Overview design of Search mechanism. + The serching is a fully client-side implementation of querying texts for content + searching. There's no server involved. So, the search queries by the users are processed by + JavaScript inside the browser, and displays the matching results by comparing the query with + a simplified 'index' that too resides in JavaScript. Mainly the search mechanism has two + parts. + + Indexing: First we need to traverse the content in + the docs folder and index the words in it. This is done + by webhelpindexer.jar in + xsl/extentions/ folder. You can + invoke it by ant index command from the + root of webhelp of directory. The source of + webhelpindexer is now moved to it's own location at + trunk/xsl-webhelpindexer/. + Checkout the Docbook trunk svn directory to get this + source. Then, do your changes and recompile it by simply + running ant command. My assumption is that + it can be opened by Netbeans IDE by one click. Or if you + are using IntelliJ Idea, you can simply create a new + project from existing sources. Indexer has extensive + support for features such as word scoring, stemming of + words, and support for languages English, German, + French. For CJK (Chinese, Japanese, Korean) languages, + it uses bi-gram tokenizing to break up the words (since + CJK languages does not have spaces between + words). + When ant index is run, it generates five output files: + + htmlFileList.js - This contains an array named + fl which stores details all the files indexed by the indexer. + Further, the doStem in it defines whether stemming should be used. It defaults + to false. + + + htmlFileInfoList.js - + This includes some meta data about the indexed + files in an array named fil. It + includes details about file name, file (html) + title, a summary of the content. Format would look + like, fil["4"]= "ch03.html@@@Developer + Docs@@@This chapter provides an overview of how + webhelp is implemented."; + + + + index-*.js (Three index files) - These three files + actually stores the index of the content. Index is added to an array named + w. + + + + + Querying: Query processing happens totally in client side. Following JavaScript + files handles them. + + nwSearchFnt.js - This handles the user query and + returns the search results. It does query word tokenizing, drop unnecessary + punctuations and common words, do stemming if docbook language supports it, + etc. + + + {$indexer-language-code}_stemmer.js - This includes the + stemming library. nwSearchFnt.js file calls + stemmer method in this file for stemming. ex: var stem = + stemmer(foobar); + + + + + + + + search + +
        New Stemmers + + Adding new Stemmers is very simple. + Currently, only English, French, and German stemmers are integrated in to WebHelp. But + the code is extensible such that you can add new stemmers easily by few steps. + What you need: + + You'll need two versions of the stemmer; One written in JavaScript, and another + in Java. But fortunately, Snowball contains Java stemmers for number of popular + languages, and are already included with the package. You can see the full list in + Adding support for other (non-CJKV) languages. + If your language is listed there, Then you have to find javascript version of the + stemmer. Generally, new stemmers are getting added in to Snowball Stemmers in + other languages location. If javascript stemmer for your language is + available, then download it. Else, you can write a new stemmer in JavaScript using + SnowBall algorithm fairly easily. Algorithms are at Snowball. + + + Then, name the JS stemmer exactly like this: + {$language-code}_stemmer.js. + For example, for Italian(it), name it as, + it_stemmer.js. Then, copy it to + the + docbook-webhelp/template/search/stemmers/ + folder. (I assumed + docbook-webhelp is the root + folder for webhelp.) + Make sure you changed the + webhelp.indexer.language property + in build.properties to your + language. + + + + + Now two easy changes needed for the indexer. + + + Open + docbook-webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java + in a text editor and add your language code to the + supportedLanguages String Array. + Add new language to supportedLanguages array + + change the Array from, + +private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko"}; + //currently extended support available for + // English, German, French and CJK (Chinese, Japanese, Korean) languages only. + + To, + +private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko", "it"}; + //currently extended support available for + // English, German, French, CJK (Chinese, Japanese, Korean), and Italian languages only. + + + + + Now, open + docbook-webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java + and add the following line to the code where it initializes the Stemmer (Search + for SnowballStemmer stemmer;). Then add code to initialize the + stemmer Object in your language. It's self understandable. See the example. The + class names are at: + docbook-webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/. + Initialize correct stemmer based on the + <code>webhelp.indexer.language</code> specified + + + SnowballStemmer stemmer; + if(indexerLanguage.equalsIgnoreCase("en")){ + stemmer = new EnglishStemmer(); + } else if (indexerLanguage.equalsIgnoreCase("de")){ + stemmer= new GermanStemmer(); + } else if (indexerLanguage.equalsIgnoreCase("fr")){ + stemmer= new FrenchStemmer(); + } +else if (indexerLanguage.equalsIgnoreCase("it")){ //If language code is "it" (Italian) + stemmer= new italianStemmer(); //Initialize the stemmer to italianStemmer object. + } + else { + stemmer = null; + } + + + + + + + + That's all. Now run ant build-indexer to compile and build the java code. + Then, run ant webhelp to generate the output from your docbook file. For any + questions, contact us or email to the docbook mailing list + docbook-apps@lists.oasis-open.org. + + stemmer + +
        +
        +
        + + FAQ + + Frequently Asked Questions + + + + + + + On what browsers and operating systems WebHelp has tested extensively? + + + We tested it with versions of most browsers including Firefox 3.x+, IE 7+, Chrome, + Safari, and iPod/iPhone. The JavaScript codes are mostly jquery plugins, so you’d want + to check the jquery support matrix for details. + + + + + Apart from this demo, where can I find other demos or production deployments of + WebHelp? + + + There are four production deployments provided in WebHelp wiki currently. + + + + + When building the webhelp output, I'm getting the following error. What's the reason + for this? + [xslt] : Warning! file:/C:/Users/kasun/docbook-xsl-1.77.0/xhtml/autoidx.xsl: + line 596: Attribute 'href' outside of element. +[xslt] : Warning! file:/C:/Users/kasun/docbook-xsl-1.77.0/xhtml/autoidx.xsl: + line 596: Attribute 'href' outside of element. + ---- + + + This happens if you haven't done the step 3 and 4 of webhelp build guide "Generating + webhelp output" in the documentation. Basically, you need to correctly set the following + folder + paths.xslt-processor-classpath=/usr/share/java/saxon-6.5.5.jar +xercesImpl.jar=/usr/share/java/xercesImpl.jar +xml-apis.jar=/usr/share/java/xml-apis.jar + + + + + Does WebHelp Indexer can index HTML transformation as well? + + + Yes, WebHelp supports HTML transformations as well in addition to XHTML. + + + + + I need more information about webhelp-indexer. Where can I find it? + + + The DocBook Webhelp Indexer is based on the HTMLSearch plugin for DITA. See HTMLSearch documentation for more information. + + + + + FAQ + + + + +
        diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/ch01.html b/DOCBOOK/webhelp/docsrc/webhelp-files/ch01.html new file mode 100755 index 0000000..6448389 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/ch01.html @@ -0,0 +1,326 @@ + + + + + + + + + + Introduction - - + + + + + + + + + + + + + + +
        + +
        +
        +
        +
        +

        Introduction

        +
        +
        +
        +

        A common requirement for technical publications groups is to produce a Web-based help + format that includes a table of contents pane, a search feature, and an index similar to what + you get from the Microsoft HTML Help (.chm) format or Eclipse help. If the content is help for + a Web application that is not exposed to the Internet or requires that the user be logged in, + then it is impossible to use services like Google to add search. + +

        +
        +

        Features

        +
          +
        • +

          Sophisticated CSS-based page layout

          +
        • +
        • +

          Client-side search.

          +
          +
            +
          • +

            Provides full content search of the documentation. Shows the search results with + links to chunked pages, and a small description. +

            +
          • +
          • +

            Search results scoring/rating - The results are weighted according to how many + times the words in search query appears in it, is it bold or not, is in index terms + etc. The score out of 5 is shown by small colored boxes after each + search-result. +

            +
          • +
          • +

            Search results can include brief descriptions of the target.

            +
          • +
          • +

            Stemming support for English, French, and German. Stemming support can be added + for other languages by implementing a stemmer.

            +
          • +
          • +

            Support for Chinese, Japanese, and Korean languages using code from the Lucene search + engine. +

            +
          • +
          • +

            Search highlighting shows where the searched term appears in the results. +

            +
          • +
          +
          +
        • +
        • +

          Table of contents (TOC) pane with collapsible toc tree.

          +
        • +
        • +

          Auto-synchronization of content pane and TOC.

          +
        • +
        • +

          Nicely placed small forward, backward, top links

          +
        • +
        • +

          TOC and search pane implemented without the use of a frameset.

          +
        • +
        • +

          An Ant script and sample Makefile to generate output. + You can use the ant build file by importing it into your + own or use it as a model for integrating this output + format into your own build system. Alternatively, you can + use the build scripts as a template for creating your own + script. You can also generate webhelp from DocBook using + the Docbkx Maven plugin. +

          +
        • +
        +
        +
        +
        + + + \ No newline at end of file diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/ch02.html b/DOCBOOK/webhelp/docsrc/webhelp-files/ch02.html new file mode 100755 index 0000000..82f83ee --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/ch02.html @@ -0,0 +1,928 @@ + + + + + + + + + + Using the package - - + + + + + + + + + + + + + +
        + +
        +
        +
        +
        +

        Using the package

        +
        +
        +
        +

        The following sections describe how to + install and use the package on Windows with the sample Ant build + script. In an environment where unix shell command are + available, you can also use the + Makefile.sample as a starting point for + creating your build script. To use + Makefile.sample you must have + xsltproc and java + available in your PATH. +

        +
        +
        +
        +
        +

        Generating webhelp output using the Ant build.xml + file +

        +
        +
        +
        +
        +

        To install the package

        +
        + + + + + + + + +
        [Note]Note
        +

        The examples in this procedure assume a Windows + installation, but the process is the same in other + environments, mutatis + mutandis. In an environment where unix + shell command are available, you can also use the + Makefile.sample as a starting point + for creating your build script. To use + Makefile.sample you must have + xsltproc and java + available in your PATH. You can also use + the Docbkx Maven plugin to generate webhelp. +

        +
        +
        +
          +
        1. +

          If necessary, install Java + 1.6 or higher. +

          +
            +
          1. +

            Confirm that Java is installed and in your PATH by typing the + following at a command prompt: +

            java -version
            + + + + + + + + +
            [Note]Note
            +

            To build the indexer, you must have the JDK.

            +
            +
            +
          2. +
          +
        2. +
        3. +

          If necessary, install Apache + Ant 1.8.0 or higher. See Ant installation instructions. +

          +
            +
          1. +

            Unzip the Ant binary distribution to a convenient location on your system. For + example: c:\Program Files. +

            +
          2. +
          3. +

            Set the environment variable ANT_HOME to the top-level Ant + directory. For example: c:\Program Files\apache-ant-1.8.0. +

            +
            + + + + + + + + +
            [Tip]Tip
            +

            See How To Manage + Environment Variables in Windows XP for information on setting + environment variables. +

            +
            +
            +
          4. +
          5. +

            Add the Ant bin directory to your PATH. For + example: c:\Program Files\apache-ant-1.8.0\bin

            +
          6. +
          7. +

            Confirm that Ant is installed by typing the following at a command prompt: + +

            ant -version
            + + + + + + + + +
            [Note]Note
            +

            If you see a message about the file tools.jar being + missing, you can safely ignore it. +

            +
            +
            +
          8. +
          +
        4. +
        5. +

          Download Saxon + 6.5.x and unzip the distribution to a convenient location on your file system. + You will use the path to saxon.jar in Step 5 below. +

          +
          + + + + + + + + +
          [Note]Note
          +

          The build.xml has only been tested with Saxon 6.5, though + it could be adapted to work with other XSLT processors. However, when you generate + output, the Saxon jar must not be in your + CLASSPATH. +

          +
          +
          +
        6. +
        7. +

          Download Xerces2 + Java and extract it to a convenient location on + your file system. You will need the + xercesImpl.jar and + xml-apis.jar from this distribution + in in Step 5. +

          +
        8. +
        9. +

          In a text editor, edit the + build.properties file in the + webhelp directory and make the changes indicated by the comments. +

          +
          + + + + + + + + +
          [Important]Important
          +

          You must set appropriate values for + xslt-processor-classpath, + xercesImpl.jar, and + xml-apis.jar. +

          +
          +
          +

          See the DocBook reference + documentation for detailed information about the + available webhelp and other parameters. Note that not all + DocBook parameters are passed in to the xsls by the + build.xml by default. You may need + to modify the build.xml to pass in + some DocBook + parameters. +

          +# The path (relative to the build.xml file) to your input document.
          +# To use your own input document, create a build.xml file of your own
          +# and import this build.xml.
          +input-xml=docsrc/readme.xml
          +
          +# The directory in which to put the output files. 
          +# This directory is created if it does not exist.
          +output-dir=docs
          +
          +# If you are using a customization layer that imports webhelp.xsl, use
          +# this property to point to it. 
          +stylesheet-path=${ant.file.dir}/xsl/webhelp.xsl
          +
          +# If your document has image directories that need to be copied
          +# to the output directory, you can list patterns here. 
          +# See the Ant documentation for fileset for documentation
          +# on patterns.
          +#input-images-dirs=images/**,figures/**,graphics/**
          +
          +# By default, the ant script assumes your images are stored
          +# in the same directory as the input-xml. If you store your
          +# image directories in another directory, specify it here.
          +# and uncomment this line.
          +#input-images-basedir=/path/to/image/location
          +
          +# Modify the follosing so that they point to your local
          +# copy of the jars indicated:
          +# * Saxon 6.5 jar
          +# * Xerces 2: xercesImpl.jar
          +# * xml-commons: xml-apis.jar
          +xslt-processor-classpath=/usr/share/java/saxon-6.5.5.jar 
          +xercesImpl.jar=/usr/share/java/xercesImpl.jar
          +xml-apis.jar=/usr/share/java/xml-apis.jar
          +
          +# For non-ns version only, this validates the document 
          +# against a dtd.
          +validate-against-dtd=true
          +
          +# The extension for files to be indexed (html/htm/xhtml etc.)
          +html.extension=html
          +
          +# Set this to false if you don't need a search tab.
          +webhelp.include.search.tab=true
          +
          +# indexer-language is used to tell the search indexer which language
          +# the docbook is written.  This will be used to identify the correct
          +# stemmer, and punctuations that differs from language to language.
          +# see the documentation for details. en=English, fr=French, de=German,
          +# zh=Chinese, ja=Japanese etc.  
          +webhelp.indexer.language=en
          +
          +# Enables/Disables stemming
          +# Stemming allows better querying for the search
          +enable.stemming=true
          +
          +# Set admon.graphics to 1 to user graphics for note, tip, etc.
          +admon.graphics=0
          +suppress.footer.navigation=0
        10. +
        11. +

          Test the package by running the command ant + webhelp -Doutput-dir=test-ouput at the command + line in the webhelp directory. It should generate a copy + of this documentation in the doc directory. Type start + test-output\index.html to open the output in a + browser. Once you have confirmed that the process worked, + you can delete the test-output directory. +

          +
        12. +
        13. +

          To process your own document, simply refer to this package from another + build.xml in arbitrary location on your system: +

          +
            +
          1. +

            Create a new build.xml file that defines the name of your + source file, the desired output directory, and imports the + build.xml from this package. For example: + +

            <project>
            +  <property name="input-xml" value="path-to/yourfile.xml"/>
            +  <property name="input-images-dirs" value="images/** figures/** graphics/**"/>
            +  <property name="output-dir" value="path-to/desired-output-dir"/>
            +  <import file="path-to/docbook-webhelp/build.xml"/>
            +</project>
          2. +
          3. +

            From the directory containing your newly created build.xml + file, type ant webhelp to build your document. +

            +
          4. +
          +
        14. +
        +
        +
        +
        +
        +
        +
        +

        Using and customizing the output

        +
        +
        +
        +

        To deep link to a topic inside the help set, simply link directly to the page. This help + system uses no frameset, so nothing further is necessary. +

        +
        + + + + + + + + +
        [Tip]Tip
        +

        See Chunking into + multiple HTML files in Bob Stayton's DocBook XSL: The Complete + Guide for information on controlling output file names and which files are + chunked in DocBook. +

        +
        +
        +

        When you perform a search, the results can include brief summaries. These are populated + in one of two ways: +

        +
        +
          +
        • +

          By adding role="summary" to a para or + phrase in the chapter or + section. +

          +
        • +
        • +

          By adding an abstract to the chapterinfo or + sectioninfo element. +

          +
        • +
        +
        +

        To customize the look and feel of the help, study the following css files:

        +
        +
          +
        • +

          docs/common/css/positioning.css: This handles the Positioning + of DIVs in appropriate positions. For example, it causes the + leftnavigation div to appear on the left, the header on top, and so on. + Use this if you need to change the relative positions or need to change the + width/height etc. +

          +
        • +
        • +

          docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css: + This is the theming part which adds colors and stuff. This is a default theme comes + with jqueryui unchanged. You can get + any theme based your interest from this. (Themes are on right navigation bar.) Then + replace the css theme folder (theme-redmond) with it, and change the xsl to point to + the new css. +

          +
        • +
        • +

          docs/common/jquery/treeview/jquery.treeview.css: This styles + the toc Tree. Generally, you don't have to edit this file. +

          +
        • +
        +
        +
        +
        +
        +
        +

        Recommended Apache configurations

        +
        +
        +
        +

        If you are serving a long document from an Apache web + server, we recommend you make the following additions or + changes to your httpd.conf or + .htaccess file. +

        AddDefaultCharSet UTF-8 # 1
        +  
        +      # 480 weeks
        +      <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> # 2
        +      Header set Cache-Control "max-age=290304000, public"
        +      </FilesMatch>
        +      
        +      # 2 DAYS
        +      <FilesMatch "\.(xml|txt)$">
        +      Header set Cache-Control "max-age=172800, public, must-revalidate"
        +      </FilesMatch>
        +      
        +      # 2 HOURS
        +      <FilesMatch "\.(html|htm)$">
        +      Header set Cache-Control "max-age=7200, must-revalidate"
        +      </FilesMatch>
        +      
        +      # compress text, html, javascript, css, xml:
        +      AddOutputFilterByType DEFLATE text/plain # 3
        +      AddOutputFilterByType DEFLATE text/html
        +      AddOutputFilterByType DEFLATE text/xml
        +      AddOutputFilterByType DEFLATE text/css
        +      AddOutputFilterByType DEFLATE application/xml
        +      AddOutputFilterByType DEFLATE application/xhtml+xml
        +      AddOutputFilterByType DEFLATE application/rss+xml
        +      AddOutputFilterByType DEFLATE application/javascript
        +      AddOutputFilterByType DEFLATE application/x-javascript
        +      
        +      # Or, compress certain file types by extension:
        +      <Files *.html> 
        +      SetOutputFilter DEFLATE
        +      </Files>
        +      
        + + + + + + + + + + + + + +
        +

        1 +

        +
        +

        See Odd characters in HTML output in Bob + Stayton's book DocBook XSL: The Complete + Guide for more information about this + setting. +

        +
        +

        2 +

        +
        +

        These lines and those that follow cause the + browser to cache various resources such as bitmaps and + JavaScript files. Note that caching JavaScript files + could cause your users to have stale search indexes if + you update your document since the search index is + stored in JavaScript files. +

        +
        +

        3 +

        +
        +

        These lines cause the the server to compress html, + css, and JavaScript files and the brower to uncompress + them to improve download performance. +

        +
        +
        +
        +
        +
        +
        +
        +
        +

        Search indexing

        +
        +
        +
        +

        Run ant index in the webhelp directory to index the content. Running + ant webhelp will do the indexing as part of the process as well. +

        +

        Here's some detailed information about invoking the indexer. The indexing process is + pretty smooth, so probably you doesn't need to be concerned with following details. Webhelp + Ant script does all the needed bits. +

        +
        +
          +
        • +

          Following should be in the CLASSPATH.

          +

          + +

          +
          +
            +
          • +

            webhelpindexer.jar, + lucene-analyzers-3.0.0.jar, + lucene-core-3.0.0.jar - These three are available in the + extensions/ directory of docsbook-xsl-1.76.1, and is automatically fetched to the + webhelp's Ant script. Go for a XSL snapshot if you can which contains the latest + version http://docbook.sourceforge.net/snapshot/ +

            +
          • +
          • +

            xercesImpl.jar, xml-apis.jar - + These two comes by default with Ant 1.8.0 or prior versions. These are available + under /usr/share/java directory of Linux distributions as well. Else, you may have + to download, and put them to jre/lib/endorsed. +

            +
          • +
          +
          +

          + +

          +
        • +
        • +

          The main class is com.nexwave.nquindexer.IndexerMain for the + version 1.76.1+. It's com.nexwave.nquindexer.IndexerTask for the + versions 1.76.0 and 1.76.1. +

          +

          + +

          +
          +
            +
          • +

            Needs two parameters as command-line arguments:

            +

            + +

            +
            +
              +
            • +

              The folder where the files to be indexed reside

              +
            • +
            +
            +

            + +

            +
            +
              +
            • +

              (Optional) language. defaults to "en". See build.properties for + details +

              +
            • +
            +
            +

            + +

            +
          • +
          +
          +

          + +

          +
          + + + + + + + + +
          [Note]Note
          +

          We have changed the way we invoke the webhelp indexer from the Ant Task to + indexertask to direct invocation. This seems to have remove the + CLASSPATH issue some people were having. +

          +
          +
          +

          + +

          +
        • +
        +

        To build the indexer, you must have installed the JDK version 1.5 or + higher and set the ANT_HOME environment variable. +

        +
        +
        +
        +
        +

        Adding support for other (non-CJKV) languages

        +
        +
        +
        +

        To support stemming for a language, the search mechanism requires a stemmer implemented + in both Java and JavaScript. The Java version is used by the indexer and the JavaScript + verison is used to stem the user's input on the search form. Currently the search mechanism + supports stemming for English and German. In addition, Java stemmers are included for the + following languages. Therefore, to support these languages, you only need to implement the + stemmer in JavaScript and add it to the template. If you do undertake this task, please + consider contributing the JavaScript version back to this project and to Martin Porter's + project. +

        +
        +
          +
        • +

          Danish

          +
        • +
        • +

          Dutch

          +
        • +
        • +

          Finnish

          +
        • +
        • +

          Hungarian

          +
        • +
        • +

          Italian

          +
        • +
        • +

          Norwegian

          +
        • +
        • +

          Portuguese

          +
        • +
        • +

          Romanian

          +
        • +
        • +

          Russian

          +
        • +
        • +

          Spanish

          +
        • +
        • +

          Swedish

          +
        • +
        • +

          Turkish

          +
        • +
        +
        +

        +
        +
        +
        +
        +
        +

        Adding images

        +
        +
        +
        +

        This section shows how to add images to WebHelp. For that, follow the simple procedure given.

        +
        +
          +
        • +

          Put the images in a subdirectory of your source file directory. For example + docsrc/images. +

          +
        • +
        • +

          Then refer to those images from your docbook document.

          +

          Following image is from webhelp/docsrs/images/sample.jpg. The docbook code is shown + below. +

          +

          + +

          +
          +
          +
          +
          +

          Figure 1. Sample Image

          +
          +


          + +

          +
          +

          Example 1. Example code for adding images. Note down the relative path used

          +
          <figure>
          +  <title>Sample</title>
          +  <mediaobject>
          +    <imageobject>
          +      <imagedata fileref="images/sample.jpg" format="JPG"/>
          +    </imageobject>
          +  </mediaobject>
          +</figure>
          +

        • +
        • +

          The build.properties file controls what directories are copied + over from the source tree to the output + tree: +

          # If your document has image directories that need to be copied
          +# to the output directory, you can list patterns here. 
          +# See the Ant documentation for fileset for documentation
          +# on patterns.
          +input-images-dirs=images/**,figures/**,graphics/**
        • +
        +
        +
        +
        +
        + + + \ No newline at end of file diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/ch03.html b/DOCBOOK/webhelp/docsrc/webhelp-files/ch03.html new file mode 100755 index 0000000..a1c74f3 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/ch03.html @@ -0,0 +1,559 @@ + + + + + + + + + + Developer Docs - - + + + + + + + + + + + + + +
        + +
        +
        +
        +
        +

        Developer Docs

        +
        +
        +
        +

        This chapter provides an overview of how webhelp is implemented.

        +

        The table of contents and search panes are implemented as divs and rendered as if they + were the left pane in a frameset. As a result, the page must save the state of the table of + contents and the search in cookies when you navigate away from a page. When you load a new + page, the page reads these cookies and restores the state of the table of contents tree and + search. The result is that the help system behaves exactly as if it were a frameset. +

        +
        +
        +
        +
        +

        Design

        +
        +
        +
        +

        An overview of webhelp page structure.

        +

        DocBook WebHelp page structure is fully built on css-based design abandoning frameset + structure. Overall page structure can be divided in to three main sections +

        +
        +
          +
        • +

          Header: Header is a separate Div which include company logo, navigation + button(prev, next etc.), page title and heading of parent topic. +

          +
        • +
        • +

          Content: This includes the content of the documentation. The processing of this + part is done by DocBook + XSL Chunking customization. Few further css-styling applied from + positioning.css. +

          +
        • +
        • +

          Left Navigation: This includes the table of contents and search tab. This is + customized using jquery-ui styling. +

          +
          +
            +
          • +

            Tabbed Navigation: The navigation pane is organized in to two tabs. Contents + tab, and Search tab. Tabbed output is achieved using JQuery Tabs plugin. +

            +
          • +
          • +

            Table of Contents (TOC) tree: When building the chunked html from the docbook + file, Table of Contents is generated as an Unordered List (a list made from + <ul> <li> tags). When page loads in the browser, we apply + styling to it to achieve the nice look that you see. Styling for TOC tree is done + by a JQuery UI plugin called + TreeView. We can generate the tree easily by following javascript code: + +

            +//Generate the tree
            +$("#tree").treeview({
            +collapsed: true,
            +animated: "medium",
            +control: "#sidetreecontrol",
            +persist: "cookie"
            +});
            +

            + +

            +
          • +
          • +

            Search Tab: This includes the search feature.

            +
          • +
          +
          +
        • +
        +
        +

        +

        +
        +
        +
        +
        +
        +

        Search

        +
        +
        +
        +

        Overview design of Search mechanism.

        +

        The serching is a fully client-side implementation of querying texts for content + searching. There's no server involved. So, the search queries by the users are processed by + JavaScript inside the browser, and displays the matching results by comparing the query with + a simplified 'index' that too resides in JavaScript. Mainly the search mechanism has two + parts. +

        +
        +
          +
        • +

          Indexing: First we need to traverse the content in + the docs folder and index the words in it. This is done + by webhelpindexer.jar in + xsl/extentions/ folder. You can + invoke it by ant index command from the + root of webhelp of directory. The source of + webhelpindexer is now moved to it's own location at + trunk/xsl-webhelpindexer/. + Checkout the Docbook trunk svn directory to get this + source. Then, do your changes and recompile it by simply + running ant command. My assumption is that + it can be opened by Netbeans IDE by one click. Or if you + are using IntelliJ Idea, you can simply create a new + project from existing sources. Indexer has extensive + support for features such as word scoring, stemming of + words, and support for languages English, German, + French. For CJK (Chinese, Japanese, Korean) languages, + it uses bi-gram tokenizing to break up the words (since + CJK languages does not have spaces between + words). +

          +

          When ant index is run, it generates five output files: +

          +
          +
            +
          • +

            htmlFileList.js - This contains an array named + fl which stores details all the files indexed by the indexer. + Further, the doStem in it defines whether stemming should be used. It defaults + to false. +

            +
          • +
          • +

            htmlFileInfoList.js - + This includes some meta data about the indexed + files in an array named fil. It + includes details about file name, file (html) + title, a summary of the content. Format would look + like, fil["4"]= "ch03.html@@@Developer + Docs@@@This chapter provides an overview of how + webhelp is implemented."; + +

            +
          • +
          • +

            index-*.js (Three index files) - These three files + actually stores the index of the content. Index is added to an array named + w. +

            +
          • +
          +
          +
        • +
        • +

          Querying: Query processing happens totally in client side. Following JavaScript + files handles them. +

          +
          +
            +
          • +

            nwSearchFnt.js - This handles the user query and + returns the search results. It does query word tokenizing, drop unnecessary + punctuations and common words, do stemming if docbook language supports it, + etc. +

            +
          • +
          • +

            {$indexer-language-code}_stemmer.js - This includes the + stemming library. nwSearchFnt.js file calls + stemmer method in this file for stemming. ex: var stem = + stemmer(foobar); + +

            +
          • +
          +
          +

          + +

          +
        • +
        +
        +

        +

        +
        +
        +
        +
        +

        New Stemmers

        +
        +
        +
        +

        Adding new Stemmers is very simple.

        +

        Currently, only English, French, and German stemmers are integrated in to WebHelp. But + the code is extensible such that you can add new stemmers easily by few steps. +

        +

        What you need:

        +
        +
          +
        • +

          You'll need two versions of the stemmer; One written in JavaScript, and another + in Java. But fortunately, Snowball contains Java stemmers for number of popular + languages, and are already included with the package. You can see the full list in + Adding support for other (non-CJKV) languages. + If your language is listed there, Then you have to find javascript version of the + stemmer. Generally, new stemmers are getting added in to Snowball Stemmers in + other languages location. If javascript stemmer for your language is + available, then download it. Else, you can write a new stemmer in JavaScript using + SnowBall algorithm fairly easily. Algorithms are at Snowball. +

          +
        • +
        • +

          Then, name the JS stemmer exactly like this: + {$language-code}_stemmer.js. + For example, for Italian(it), name it as, + it_stemmer.js. Then, copy it to + the + docbook-webhelp/template/search/stemmers/ + folder. (I assumed + docbook-webhelp is the root + folder for webhelp.) +

          +
          + + + + + + + + +
          [Note]Note
          +

          Make sure you changed the + webhelp.indexer.language property + in build.properties to your + language. +

          +
          +
          +

          + +

          +
        • +
        • +

          Now two easy changes needed for the indexer.

          +
          +
            +
          • +

            Open + docbook-webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java + in a text editor and add your language code to the + supportedLanguages String Array. +

            +
            +

            Example 2. Add new language to supportedLanguages array

            +
            +

            change the Array from, + +

            +private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko"}; 
            +    //currently extended support available for
            +    // English, German, French and CJK (Chinese, Japanese, Korean) languages only.
            +

            + To, +

            +private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko", "it"}; 
            +  //currently extended support available for
            +  // English, German, French, CJK (Chinese, Japanese, Korean), and Italian languages only.
            +                    
            +

          • +
          • +

            Now, open + docbook-webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java + and add the following line to the code where it initializes the Stemmer (Search + for SnowballStemmer stemmer;). Then add code to initialize the + stemmer Object in your language. It's self understandable. See the example. The + class names are at: + docbook-webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/. +

            +
            +

            Example 3. Initialize correct stemmer based on the + webhelp.indexer.language specified

            +
            +      SnowballStemmer stemmer;
            +      if(indexerLanguage.equalsIgnoreCase("en")){
            +           stemmer = new EnglishStemmer();
            +      } else if (indexerLanguage.equalsIgnoreCase("de")){
            +          stemmer= new GermanStemmer();
            +      } else if (indexerLanguage.equalsIgnoreCase("fr")){
            +          stemmer= new FrenchStemmer();
            +      }
            +else if (indexerLanguage.equalsIgnoreCase("it")){ //If language code is "it" (Italian)
            +          stemmer= new italianStemmer();  //Initialize the stemmer to italianStemmer object.
            +      }       
            +      else {
            +          stemmer = null;
            +      }
            +
            +

          • +
          +
          +
        • +
        +
        +

        + +

        +

        That's all. Now run ant build-indexer to compile and build the java code. + Then, run ant webhelp to generate the output from your docbook file. For any + questions, contact us or email to the docbook mailing list + . +

        +
        +
        +
        + + + \ No newline at end of file diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/ch04.html b/DOCBOOK/webhelp/docsrc/webhelp-files/ch04.html new file mode 100755 index 0000000..0ad6f47 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/ch04.html @@ -0,0 +1,359 @@ + + + + + + + + + + FAQ - - + + + + + + + + + + + + + + +
        + +
        +
        +
        +
        +

        FAQ

        +
        +
        +
        +
        +
        +
        1. On what browsers and operating systems WebHelp has tested extensively?
        +
        2. Apart from this demo, where can I find other demos or production deployments of + WebHelp?
        +
        3. When building the webhelp output, I'm getting the following error. What's the reason + for this?
        +
        4. Does WebHelp Indexer can index HTML transformation as well?
        +
        5. I need more information about webhelp-indexer. Where can I find it?
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        1.

        +
        +

        On what browsers and operating systems WebHelp has tested extensively?

        +
        +

        We tested it with versions of most browsers including Firefox 3.x+, IE 7+, Chrome, + Safari, and iPod/iPhone. The JavaScript codes are mostly jquery plugins, so you’d want + to check the jquery support matrix for details. +

        +
        +

        2.

        +
        +

        Apart from this demo, where can I find other demos or production deployments of + WebHelp? +

        +
        +

        There are four production deployments provided in WebHelp wiki currently. +

        +
        +

        3.

        +
        +

        When building the webhelp output, I'm getting the following error. What's the reason + for this? +

        [xslt] : Warning! file:/C:/Users/kasun/docbook-xsl-1.77.0/xhtml/autoidx.xsl:
        +            line 596: Attribute 'href' outside of element.
        +[xslt] : Warning! file:/C:/Users/kasun/docbook-xsl-1.77.0/xhtml/autoidx.xsl: 
        +            line 596: Attribute 'href' outside of element.

        ----

        +
        +

        This happens if you haven't done the step 3 and 4 of webhelp build guide "Generating + webhelp output" in the documentation. Basically, you need to correctly set the following + folder + paths. +

        xslt-processor-classpath=/usr/share/java/saxon-6.5.5.jar
        +xercesImpl.jar=/usr/share/java/xercesImpl.jar
        +xml-apis.jar=/usr/share/java/xml-apis.jar
        +

        4.

        +
        +

        Does WebHelp Indexer can index HTML transformation as well?

        +
        +

        Yes, WebHelp supports HTML transformations as well in addition to XHTML.

        +
        +

        5.

        +
        +

        I need more information about webhelp-indexer. Where can I find it?

        +
        +

        The DocBook Webhelp Indexer is based on the HTMLSearch plugin for DITA. See HTMLSearch documentation for more information. +

        +
        +
        +
        + + + \ No newline at end of file diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/browserDetect.js b/DOCBOOK/webhelp/docsrc/webhelp-files/common/browserDetect.js new file mode 100755 index 0000000..c6a2c73 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/common/browserDetect.js @@ -0,0 +1,116 @@ +var BrowserDetect = { + init: function () { + this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; + this.version = this.searchVersion(navigator.userAgent) + || this.searchVersion(navigator.appVersion) + || "an unknown version"; + this.OS = this.searchString(this.dataOS) || "an unknown OS"; + }, + searchString: function (data) { + for (var i=0;ip{ font-weight: bold; } + +p.breadcrumbs { + display: inline; + margin-bottom: 0px; + margin-top: 33px; +} + +p.breadcrumbs a { + padding-right: 12px; + margin-right: 5px; + text-decoration: none; + color: #575757; + text-transform: uppercase; + font-size: 10px; +} + +p.breadcrumbs a:first-child {background: url(../images/breadcrumb-arrow-white.png) no-repeat right center;} + +p.breadcrumbs a:hover {text-decoration: underline;} + +#star ul.star { + LIST-STYLE: none; + MARGIN: 0; + PADDING: 0; + WIDTH: 85px; + /* was 100 */ + HEIGHT: 20px; + LEFT: 1px; + TOP: -5px; + POSITION: relative; + FLOAT: right; + BACKGROUND: url('../images/starsSmall.png') repeat-x 0 -25px; +} +#star li { + PADDING: 0; + MARGIN: 0; + FLOAT: right; + DISPLAY: block; + WIDTH: 85px; + /* was 100 */ + HEIGHT: 20px; + TEXT-DECORATION: none; + text-indent: -9000px; + Z-INDEX: 20; + POSITION: absolute; + PADDING: 0; +} +#star li.curr { + BACKGROUND: url('../images/starsSmall.png') left 25px; + FONT-SIZE: 1px; +} + +table.navLinks {margin-right: 20px;} + +table.navLinks td a { + text-decoration: none; + text-transform: uppercase; + color: black; + font-size: 11px; +} + +a.navLinkPrevious { + padding-left: 12px; + background: url(../images/previous-arrow.png) no-repeat left center; +} + +a.navLinkNext { + padding-right: 12px; + background: url(../images/next-arrow.png) no-repeat right center; +} + +a#showHideButton { + padding-left: 20px; + background: url(../images/sidebar.png) no-repeat left center; +} + + +.filetree li span a { color: #777; } + +#treediv { -webkit-box-shadow: #CCC 0px 1px 2px 0px inset; } + +.legal, .legal *{ + color: #555; + text-align: center; + padding-bottom: 10px; +} + +.internal { color : #0000CC;} + +.writeronly {color : red;} + +.remark, .remark .added, .remark .changed, .remark .deleted{ background: yellow;} + +tr th, tr th .internal, tr th .added, tr th .changed { + background: #00589E; + color: white; + font-weight: bold; + text-align: left; +} + +.statustext{ + position:fixed; + top:105px; + width: 0%; + height: 0%; + opacity: .3; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -o-transform: rotate(90deg); + white-space: nowrap; + color: red; + font-weight: bold; + font-size: 2em; + margin-top: 30px; +} + +#toolbar { + width: 100%; + height: 33px; + position: fixed; + top: 93px; + z-index: 99; + left: 280px; + color: #333; + line-height: 28px; + padding-left: 10px; +} + +#toolbar-left { + position: relative; + left: 0px; +} + +body p.breadcrumbs { + margin: 0px; + padding: 0px; + line-height: 28px; +} + +/*body #content { + position: static; + margin-top: 126px; + top: 0px; +}*/ + +body.sidebar #toolbar{left: 0px;} + +body.sidebar #toolbar-left{left: 0px;} + +div#toolbar-left img {vertical-align: text-top;} + +div.note *, div.caution *, div.important *, div.tip *, div.warning * { + background: inherit !important; + color: inherit !important; + border: inherit !important; +} + +#content table thead, #content table th{ + background: gray; + color: white; + font-weight: bold; +} + +#content table caption{font-weight: bold;} + +#content table td, #content table {border: 1px solid black;} + +#content table td, #content table th { padding: 5px;} + +#content table {margin-bottom: 20px;} + +*[align = 'center']{ text-align: center;} + +#content .qandaset>table, #content .qandaset>table td, #content .calloutlist table, #content .calloutlist table td, #content .navfooter table, #content .navfooter table td { + border: 0px solid; +} + +#sidebar { display: none } + +@media print { + + body * { + visibility: hidden; + } + + #content, #content * { + visibility: visible; + } + + #sidebar, .navfooter { + display: none; + } + + #content { + margin: 0 0 0 0; + } + +} + diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/Thumbs.db b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/Thumbs.db new file mode 100755 index 0000000000000000000000000000000000000000..8f7da04cc125c960dc7c6f0f1740b01c3bb78005 GIT binary patch literal 6656 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

        WX%>_$%y6S|Y|Hx>Oyqs~mbvp@%7*nZsH zSD=BT8=h7rV-i%}mM0l=ok%_g@LZ`iq$Z67&v7Oxb#Cxhx0%wleXm{>Uv*tiZqyqq zvu~b`jLI1N#%KH$MT?XG0YkLN>aP|J?=9Ya`u?E~Pg7niUpsW*nHl*Op$XHv@Ipf5 zl>KFa-yc@$jno~HFPHlFTy2=l|9GbS_kX@EwW@hF{I)mzXHWf|_4ng!4`f_i)QqAN zGe5|?U7lsu`E~c{w&drB+X%f1KN2q1Oq-J>Zj&ck*YjPRbIO*g9IvGpZEl@vNJzo_ zu{at>2{PigNR6Ki`|Vbt$k3vTs+h&;UMEuwjizjuml{q?xje&LD3=y-JGOy*M)$P) zyG83%{ZnyZ?a4Zd&q5}CEYU1%hM^V5G)YXGHYHX4?3QI9?8c2B@@rzD*E~m8cLXiJ zn`miey6vv*YN7>BZL3jKAG)`{QV+HF*jd$*VZDgxN<$YdjRT{Zwi1D7ym+j&>*P`u z$gN!d?2bxZXjf?yFNPMKbN#J+*^N@^?oQ9ihpcp_=Ty%~XYB7Cs{Bdc-%)gf#}Y2o iCiaHS1JO&1IQGF#QtV*SO=MjBFB`!BZ0P)-KmA|n0c}?R literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/caution.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/caution.png new file mode 100755 index 0000000000000000000000000000000000000000..5b7809ca4a9c8d778087522e5ce04b6e90099595 GIT binary patch literal 1250 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbQ|Pftew|C&U%V<=|it5MYpyU{F+K zFf?Rva$<;zVn|MA$j)XcE@r5%W@u>vqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/important.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/important.png new file mode 100755 index 0000000000000000000000000000000000000000..12c90f607a1b27ddde0a7d922ae255e8c90e883e GIT binary patch literal 722 zcmV;@0xkWCP)Gdz_qOoSb{LwMwNgp7=gl$4aErG%}mjHRWNrKOy`y@b8JoTa6ut*xc4t*y1SwY|N)#>U3Z&d%1> z*52OU=jZ3|@9+2b_y7O@tTMkk%M`~Kg@u8&dg_P^_0l3yQb639!jLZt^Lx<-O17UeeJ z-|=!77W(jGx&e#?FOku-gKofoU0$~4M+dhLFueEauP`}l7LV=;lsOdn%WHure=x;k`m0(bF&MU#) z-qv#^n8(MjB|ykioqII#+`g4no-MU=BK|Sahu_3M_-d*=7hq=~t?^}A)G7 zbairN0An*{V`DL9V>K}|HDobmIW;*pIW=W9HaTQ6F*7kTGI9=S@Bjb+07*qoM6N<$ Ef=i}M4FCWD literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/note.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/note.png new file mode 100755 index 0000000000000000000000000000000000000000..d0c3c645ab9af6318035b026dd86944b9ddc9114 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_ll{>(OzfJ4N{OX={Q&zNgO}j31DC;|ya^r9Fjd348&p+!^cT+^sws+=& zCu*T*mRNK3PE;$BNx$Fa_9(Y=&DoXLMFRd#U31O)<`W^F&-o=xbIqK-c?mr!bmn>! zky6TW;ML~4nXw$T{yra=OteL6G!=B;0=?;6;u=vBoS#-wo>-L1;Gm(b>6x3Dp6Z*J zo|&AjV4`QFXQ5zesc&GRZ(yj9T$EW{Qt6OeSzMBtte0A>mr`1gpI4%noS!>!m*Ngk zP=bxiOwUU!DFvFBnrfM1VQy}0X_lO7WM-b2nq**TZkb|inr2~`WR#dJWc*7VsEZGz hD*$LMgOO>4k%_i}w!yxSoa=!y44$rjF6*2UngF(YpwIvS literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/warning.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/admon/warning.png new file mode 100755 index 0000000000000000000000000000000000000000..1c33db8f34a8b42b373179b46a2d8d8a10e061a9 GIT binary patch literal 1241 zcmeHH+e?!H6#vDtmgHCxG{Q}12(7`~)|MMe^RnTlY0JD#q1sIwW1DTCqzzwWg@Q=t zBC2Iceu@w4LHM97Gb5%*E%9MN*%m}jvs!{N@Pd8$H}vS?TsRzlzr#5kPPe|YG%fXL zDu6VdR$WC$&Oc)^X#ZjK-7LU>{!F!o39xr+d_Vw5fMTEwpb-s#9q<5Nzz6gIepyU?Lctpr{ZK zVzWaWPAC)#17S8h%;AIuf(Q_yeIybEqS0s^i1YdJcsv0ln9M{Xkpz;-I_^=P))~D~!!Hvpq{Dl8O{rN@cECkt>#DncX%I(O&3i_YgL-$m$VU zT3cLBLS%M1`o{TBX}S|Tbhc)vk!Yp)%rdDd&my(RPsxl%lU$)tC?(1~WuEwClUQn! n$Q8O{Mxt@ukkcT{K0> literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/1.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/1.png new file mode 100755 index 0000000000000000000000000000000000000000..de682c628feee885b97fd19e77b016518d833711 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=92~rKK68R45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWk%<(RmX6r@{8<}R!o-G--zwYdTlP5b5@8;1{=w*AcsQTNRLe=)iUl{`QE`z75pUXO@geCx4;f9R> literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/10.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/10.png new file mode 100755 index 0000000000000000000000000000000000000000..96c6ce45275c754c86964f523e57bb2ca5507877 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%nMc45_%)J87f$VF!_8`x4j_g4RWzt>|@iO6xonCpLUuhigLc3Jb+U%Op*^%iLyO4_(X;pN6- z=a#Hm^`=rTB~q_P5)HwY|d8XT*w^=@u zSiV--p1!#&MsKHy@TcQO>_47BbD2s2LA=92~rKJj#M45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWC>mIVh^7_bp?vVw0Ac8FkGr=O>_47BbD2s2LA=930$iScxC45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWu;5ShzZF-HKw%&(Ci= zKi__F#+A#LnX{Q1Wv$B$B&4JcEs1e3ld7n!Y^>a~XOD#~N71)ON4pbaWYyS|806*U zoij5voeK*MV|bQ)WU}+UbmrcJAECGvBVZi8DU2$xScp!J|iq49efdw9T3& z6_BCi{Wh_2S%*lDpnd(nngWmgRbRREj-5Ec;l&{=c~OYLP(f@;Re~n_6uEq+jm!eY z4?T-!I_%-FU3*BV(lAJgz49qrkWxKEFbBgty{H#GlO<(=fzROS>gTe~DWM4fIlZ{! literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/13.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/13.png new file mode 100755 index 0000000000000000000000000000000000000000..b4878f1a451337e8e34562ba148f4b8669dbbafc GIT binary patch literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$iT8AI45_%)J87f$;Q)bS`?pED9L)6<@taey*G&cvlxG%uf$~RZ!px!#yrs(!{N|KWn3Uov-5ZqPv zLGQ`bEpBhw_dhHwe}C`pZ?79y1Pi_A2up2ruQ;N8QQgipNi)2})8dF>*H_m&0{%5C zo^;LYWd5V~uFmmHXTR6CJ>sr`PZT&FSe&y8zHH*7Cd|XeyybRo#k_WnEVZdxqa~r7vo!eLJ*%Rovco*|#lmM%k0+X>Kp3Z{yj} zom19d!1vow!LQ@5y-vBWOO>_47BbD2s2LA=930$G4ynC45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWBqMPL8CfP}<}4avv(*kWU2Q#57OY#I+56h3lkd-N!&t^WVN#45%PeTI#kX1)LZ z{Y&6s{{R1fdO`}z@du(}8Bda~a)h?5<7D|};23;_o9z*!hN4f3i#NlOhKPVyjZ0+$ zs`hXm;d40CdVHCWLR`zdu*A+i5}Fg64?SQDQmSVN=3p>A>#6*xIoSgkq70s{elF{r G5}E)R1*_Zu literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/15.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/15.png new file mode 100755 index 0000000000000000000000000000000000000000..f6a76d51667ed2ea608facddd705cb079d9150e0 GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%VAa45_%)JIT=daDc$^|DBCd8xsyR zsGbb6N-H?~OhI+a?8&k|8apgJ*x8rYFtG>AaLKxI#O^8)d?mF@lv8$#g2j>)(NC;< z#D9AQCA~b@|NY(F*mqCw#XH>V>(omWWZUR}rZaqzyNgZW36WT#{v(`SZ`*gM#?9C~ zUGr0?^Pl`Rzga)Jwp@Bu#ox6k!ECnU^{=JNbWTU;P1l%y`n9p6z`Tsg-OYLxSf&G|7V^1m;Mc0w&Kr6dteMOc)I$z JtaD0e0ssM<)1m+X literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/16.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/16.png new file mode 100755 index 0000000000000000000000000000000000000000..c5ef6359aff17dae242a9f9b5b07d37492c5e2d5 GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$De`o245_%)JIOx#P=LtM{*BGkqO3z+ zOz0O-$=()Z)u9(O-ASYA#RbKZ7XdCut~zpb&9>MgVwGB;JwyM2zyzg*l3KD>B|27I z3%|3;`?@S;uY0)nPWiq2!paXWHgYr-cnqizE%Fd8zieDgW5l ze=>zBG}QIwrv|$$yZQW8D?_xBQk;!u9!W4bkhS$tfkn$>ittqpVD zf1h7XAn9?*^ohRPa@ljQmoC)k(m1>1>*KtssgV~-Z8Oq0M{e|;rn^@7O>_47BbD2s2LA=930$G4gbA45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gW?*}&7>JKP8>LQjxULeq0mxTLm?|WTXN6dy^?nI|9YG?f)^5jUtj}M6@4{d!ehO>_47BbD2s2LA=930$DfM)545_%)JIOx#P=LtM{`$6{S(g?% zwR`Myn9#*2I6cTZBz8;iw47M0DSWb4PmNg$3#LpnRlq>o})cD8xLPn<2RG#*B^`C5M#GZHV1}#5QrW zt5#B#YTt(FHNSa3`dX|k*t6Y7t@ur)oX+W}_d3&0OYpE|Y`>jhHoHKEec$`|pqG|s z&xL4Bed4#AIdWRE?ytXgCccMDtXdaoNbt3vNZYI)QsuR&+rU@&Yn5#GQKhsw=bv*l zHPo*U)7F{p9k?q=_I&nMsd௱J?yghEpb|-VpoRA}>5tWxeXQuIvD5d;Gpf0>c9xIYoipjdSHJpu$iFlY+O>_47BbD2s2LA=930$De`o245_%)JIOHPkb^|){7z@httA~7 z6gN8yth{mbWRR7}+&2oYE4pJBP2rQZvb17XH&@*nAiFEPpqy9H*+|6d%F&}u-gkce zf8?pO^2abg($Weo=AX(PI$`CEgN8G#7n!wh>srX9Dv= z^G6)@-TwO(?Kq?F#k{wj=_6M?kNvR0HfvMg!xc7eOM@C0X%xhY?|UCVDfL+8vKqVf zWxHcntdg=?bpQS0n>k5VbCo8aTyQsU@x_ce6Ta$vblwuBJH<;?XZq;?gV|@-IqTfs z7PvO7we;x0%}EAV?|Z#xu(oO>_47BbD2s2LA=930$G4gbA45_%)I?2$xH9+QQ|1|-{i2^qS z{QMqWc&5@~vSqi)jg)R@l`jf{`jM4 z@AGdp@pTq)^|)MeD(~sXLh~mUe4BI*Cv7}nz!Q9M``wL#*B>3;y!v{n?7Zh|)m1%( zx;M004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004_ zNkl3-r5QX2JA`%WOg@};C`jCi~jij)ModkqKNNHgqLBt~eKv9U2T9g=b zod`A->8!-&I4lepOcCT7AzE5UW)@CPNkRrbc9xmhncaO7j?GWp5!ZxDc!?P?BAUdf zohUhqG~$6c$Itdf6o_ZuxEw_~q2PDp?l;6cVY+#|L?Y2_G#XG<74!KVxm*sD$po=j z482|t;cytHX`)yxVmux{Qq3!OydMsSDNfGk^H?sIs8lLwwOXjx>u9&z$Ye62WjdY4 zU@+j$ZkZn<5{Y0sor>USG(t2Q6@Ds}5*^t(oeq-8q&;?$3oo4)iO1vUcDuq?6b1YJ zUiiD+4uL?xPE%!Pk$C4yT ze21><;yV_L1vE{AVHhlgsB|KL|JW_7$L_*O>_47BbD2s2LA=930$iScxC45_%)J87fW;Q*1g|4U?Dd_qr__Nog*S`iY2k5iL=zix>?%}Kg^qDT9ql*xg$<*x~|zy6W{WDR>vFSEu8_J2kJ|XUJ6!g ze`=_BuH*2m6L$spudbPO>_47BbD2s2LA=930$@$+0wo zD*JBcv>EUS9ygRKd3Wda2c@>dieam-=FL;_T=4qWyWPIaH{GaEvTHdWtvB6XF5>dm zzKR>~zZ=fzopr06Xx?WB>pF literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/23.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/23.png new file mode 100755 index 0000000000000000000000000000000000000000..3909b9cd8fd0720f5672bbdaa4ae37ba82c4b72a GIT binary patch literal 589 zcmV-T0004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004` zNkl@;rh&}uquSANt<%`2sbVuys_h9v7;)!@rdAvv@QY;h-&@>IEX(AqvV>ld& zd!x~S-|vTE7)Yg3==b~ARMTa}i*~zx#L0<70^{)*xm*s_Y892&PDh+wE*F-|r5roTqwd>3gp;|m3{_RJSS&D~ z&xP`PXgumA!OCztoyh0&NG6k5uh$}Dv)Le<&5DUCl?uw`vUtt~_k8ery`qR0uv)FY zt#mLLz~}SHtHFhOG#VAlNT<`7OeP=6ykXufM>rftuh)~Wx@-XVbUJA>#!_KDAsB<%w{t-LO}Uqfd9lPyGN?9A0LSWV&@ObC5W4^UX><4x0#%OmuWM( bB@^EOG7*lLyH^aK00000NkvXXu0mjfdrk4= literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/24.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/24.png new file mode 100755 index 0000000000000000000000000000000000000000..963a9e770cca4a2c7c7d0628a131848672c9bc83 GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$DfM)545_%)JIT=hP=LVk^%oAVP~8MvZ@g~%#R=Z-}gYXd}BmtEHUQf2FPej@wC zcP0`%ebH;heAI+5nDEA2Z;e`e%w>_rp#lpQ&qN`py_WozqO0O(Ne_%0(Y9 z++(O&#b@<6b7KU{@xleS->zfd9JSVrm8trmW$pWr(7n0aZzo8w=}bSpHs8^;&P7De z_v+```+6c=H;*PwT({>m$Gizf2kH+gd{;TAXunS}{lq`{xq5>3Z?7JCqLyB?>y&o- dr~Z`3=0&eE`Pvp`?*_&SgQu&X%Q~loCIDgE)%5@X literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/25.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/25.png new file mode 100755 index 0000000000000000000000000000000000000000..458a91990be481a831161da501d993f1fb4fb9ac GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$>GpJS45_%)J86IRAqSD;`#Tx4HG>?z zj{3?pn^^4hXjhnNU8Nr? z=UeBJ?Y;klV)@Q$`*$BhH>|Y?RMl}(=j*V1DByc&y7*Lw3#x_gbCUMkam=oG;;SL> z#YN^}dEr;?M^g(-^YrJRH<#{ZD~WA?Ub!MfYlh$Qj-yEtdeb{xl` z+{xPWSpOF+ja#pNZPh9z8NO~l6JO`uciUd?s#)?m#GccyA;Y9AZ+myr#*VXTn?sc* zdL&rLbXj&RIby6o>7>f5uU0v?{|O$6T7TVR`Q;+(=MKkBd`qlkuVk4Tx~@E$)EJ`0 zIeg3KG*D!B_%t{6OB{an^LB{Ts5T43Ks literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/26.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/26.png new file mode 100755 index 0000000000000000000000000000000000000000..74b2507390edc1d45140ac991b9e73a26657cbea GIT binary patch literal 596 zcmV-a0;~OrP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00052 zNklNP|PIxdf6<4i1k7aR_vB5gbx<5JZFw znjFOC4euWi5h6rP2pgW#7_NeJ&dnDusp!BD&g0(i-tV6GN%&qq;+i-kWWqsA35}=| zhPhF)h%Sj+!jGTpoluE;{;*j@55x(6FTVYPcp;wbY%d;<*K4&JWLd_1K1Vj2#b`8w z!{IkZQAeB;ehPxLHs zI-O{@+t_Zm!o_4V;U)RVDss78C=?3F=kuS_Ae(NtTfDj1Y>ETSV&Nku2$-$yEy5m2KJ`<O>_47BbD2s2LA=930$sq%Dj45_%)J85I~AqSE6`il)qMV9l4 z9z1wb(L+`yW{F4JnYph50*)+nejy;E#n|50zxUoUKHxt{h#t zqq}y!>Ll*mm(Bd|^xmJ2)wAbJnk%%u#ZBXg;6^2zLu&U9yJ;%L3i2P3tXs$Lq#iR* zMfs9&VblHY^8G4tobk^dhprC2y-7!-t4V?5Lf&@6`R6y@f6rRH{kG$@r|wdIKURF- z_kQ-;Fz)W7OtY3Py#9J&&`OS=%{N`NrXDJ=c(QWpgKiD6?s%c;&nq>idNoZs|NLTx ziBqR{>PMSfN345~Cp*gUu)QeTeNk0aaPHE}nI%@T5^aSM+9F&ho)*nGn|A1QM9nit zv)Qiu@3*geeIsvsdt23BzU!rr&G#f-3=S1te34^WX42j`ZrQC-yq8~^==uF9ztQ*j zPO8z&Cuy54Z6+>xpEKojs?PM&6#_Y$Vh#VVm@ZfM;d}nEb%#RV|BgGn507k?YP-|X jGRI!Eqvelo&L5VVV;QTDz7*I7j2Z?{S3j3^P6004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00050 zNkl3-r5QX1Gix7g9MMP_>Ln0O;f&{gQoumpvz{WyEQUr^DKR~chu@)hU z`2iMQVXvZMI4mwgFh!K>43;92nZ=WfBq0MI?B32}-pq}J?_nqIiEBb8PKha@5EbIX zNR&*XTcSi<;OF=xvP6?F7L(|iILGh7)o+M5LbbBJP$*O>m&=f48Jeacl}ceS7$6u7 zqFSwr@6+iNnM?+~Uav};E?0bPx7#sJPN&nD&*vx<3aHg;7>z~j|aoyQ25~luh%QitJMm--A_-hu`lPZ*2924^F2O#bOcJ zY!>VFT0C+KEaDiC$A=d9-?C7NMx$aF`FtLW#p2*#GMNam@V1}qKDxXB_T_S^I~)#+ z*|sD}aJ$`TwOT@~swxtR1ZJ}tFM?M(T7dt=9k*{(VGpmw6>;{*%B6{?<6SkD{K2&3 gJax^q004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00050 zNklcV7wL%}Lx4=Y&EW5C)+W55&6} zC|Q!Oh7ZJzvj0dqUG8|-YPBvnIF(9aGMS)QETUX4qup*Jolc`rC}6c(A)C!| z0q$(K@gjUa9|nVgm`B%jsH!S_{`Pu3;g3cm#9}dX>O>_47BbD2s2LA=930$3G{Sv45_%)I%%VKOM=9)`Noz?N>Wl% zvt;_6qxv5!EK=NYb>Yzm2UHcMm~PAD?b2oX&*+-Tb!6qjr)-vU^j@$PXJuIBdCY0O z=Wk-?x{ke0!S4Ow%a5pDR4?lk{pe*Qct13;J$sjuTxar@*X=u0WA;rn zwG9{D8^_=G*kM|#&UEh;tGZM?wW3qcT0gDOKjQe5#gXB#!GcUFv)R1ME@u`7tSmkx zcFKD02V-6~<}=SfKf3w7w#QBRo}G%^kx%YhyaZTY?BYBBdDb=7Y@6KdS7o~+)?fFy zEYh{eR2u<_B>$VGB9|$`njxgN@xNAoG!y< literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/30.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/30.png new file mode 100755 index 0000000000000000000000000000000000000000..c4dc404bc1cfeadb3f6e80671196d292e8eda1ed GIT binary patch literal 597 zcmV-b0;>IqP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00053 zNkl+FR z${bd!72EAr==FLHhr=NgHASk;W&@kehFC0yLZKkm6h+zTj=V(d5l_a=Uatq2%O&(| zHiOx07MjQ9aw(7LoY)+VM$j}(toZ$Y?wru=b{o-XRA?S~{uQFD&x66>qEe|?LZOiO zR_^d>wZeEjMlP2_Hk%a}r&1|QCKEQox#^n${u5{H9_bwR;|p;_SpKlwB~khARcZ2T jgUR`KjSMD#lLtQmtF?>&>wXE800000NkvXXu0mjfFy-;> literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/4.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/4.png new file mode 100755 index 0000000000000000000000000000000000000000..1e42fb376bf0da3014c1b71496a3027daf578487 GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$VeoWu45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWk%^r=YnIgE*Vor4#xN?x z@fMyo<2RAke=SI$GU0f98M_# zi3LlSwkn#MPJMWGw)u@Eu?|wa8*Uyubm&mQ>ub7ff`WoMQl&ErZiWR09&F%mSoGLL zV73DHzyJT`gB6vF&KSlpew@{~gKhdr1?LMUjR#oNGP)`bI@mC%wsiJna5hK?aC_OF zF)(NT=&Ml1kfdj0mdf-|>B|-_?0!c)I$z JtaD0e0s!H`mGl4r literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/5.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/5.png new file mode 100755 index 0000000000000000000000000000000000000000..635e7f816277da13e909e96b832ac8bb5e7d50d5 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$arAU?45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWL$+hvz+Zh-b8y_w; zG&=OQgEcd)(Q3W)%?x&S_O{a3*9==)TN5`|8VS5lZ2INN7U>orKmXyQqumxUXA~HY zJXP3U!njdnQ_t+#(uXIj`%5fZyjZfSxmohueEahsetu3*QMFN!=DpC%!_S{?QTa*5 z+0&ELxxC!`@SUB-7pK11kWkz`YnIfU+UMtFH_X4tc;Xm056gk|@%t~dt}}2{7H7S) ztF+tE)s^*;nyhTwRPFFZ+BccG=A3qrVgF>{^X1CQU>@)3dZ{12e@{Q&N@ ze}AouoIH-qV&GsXU}{k14XE0~*;TFZ?9k*VMvWDMRZ*>~pOTii@Ns>W_UQb>=%dK+ Y`mKN0%RTQafg#M`>FVdQ&MBb@0Dv*H*8l(j literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/6.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/6.png new file mode 100755 index 0000000000000000000000000000000000000000..521aedde2c46c55421e87a355b77c7d77238a929 GIT binary patch literal 526 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%eGb45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWij&rZ~=9KvP@ikAGBI4}o%6fQ-=VXbhs;UV~)th5j zH*FN^sGX2%Wo<2~<}>5Khfhzv+m`#!H##%JkU3H+#h9DhL?NJI#R?5(YisMncXk#_ z?yLLDWybO%Bt=zEVY$?T>_4BM^EY>OaXA+i867?~Rr}yMS7s}p8%_S+-rb2`UtLZ3 zc5$)0i$MIZr^U^ zjoh9myJ=Et&xIE|dSpJz$jI&f73kPzVZvfVI+ z*{k2Y@djhZ&JQX(eH7wa=7lA8?vc=(*!<`xTaZ#cLof$}O?6yAW0@5rFcug*UHx3v IIVCg!0PJ|aQUCw| literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/7.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/7.png new file mode 100755 index 0000000000000000000000000000000000000000..0d4b876a8cc1905944042956cc2c8e47b060fe3d GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$;qi2F45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWS+VuTo*!!8G5L6qV+#E-vTdV&hF`XZZx!Ctg+2(K!+*LG zyf}n6sxdGz%wd?3n8)^Lw!<5SBQX_|V$=lmo%~mCaEa@ga>DWD8@3>&dWK*QhNZV1 VXB~Ynd=MB|44$rjF6*2UngBtSpxyug literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/8.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/8.png new file mode 100755 index 0000000000000000000000000000000000000000..50fa94d16db8ef19ab376affc9da83e57521ee03 GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$3GsAs45_%)I?2%caDYgwe=>Wa0DC)+ zpJEBu(uGs_VqJK4q!+Gmc2|7#;K6x;<2tNIT{L!h7jP?;z{$vZO$J~+Srg9=`o3ATW<2sm`|TLKPrTl zTM4C0@wMNcJmZkTkrX4r)9gpqhUhL*y#IZBnwr_Ws=ayJ=WMe6Cs6xw^&$<9CWcKq zi*>xuq!~Y{yjSpT_qF3<$r5arOpaFAv^}<%;kUe3&g@n7?GwjR)Rt*v>2>?+&$9RHs^=a@+U0rJ3Szh4dsk!UJ}os#;LACNKZ~sxR($&5C?i~5 v@A7U^MNazE_CIbMmba_aTK-Hn|Hl-#D=GDt)vx2gKxgoD^>bP0l+XkKdAG}3 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/9.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/callouts/9.png new file mode 100755 index 0000000000000000000000000000000000000000..7190d5a9aaeccb11ce5c500d5eeadfb1299c78e8 GIT binary patch literal 537 zcmV+!0_OdRP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004S zNklHU+e8LN@ zwH$?bBM#-oFbrXu=5n0N<&eo_l66xSH+My|*$kFtfiZ?cp@2?jE#;NB;59 zCh$BDj^iK*0=TY=`Ft)L;VP9dz<+eX-6NdC{rEu~5!-)Q?wWW^dR3VGPBJ-vyg)Mf bmq`2tvJ+juyP*^?00000NkvXXu0mjfx%}Vp literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/header-bg.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/header-bg.gif new file mode 100755 index 0000000000000000000000000000000000000000..f9efa280225828f2ccfc6c051ffcb6d668967dc6 GIT binary patch literal 619 zcmZ?wbhEHb6k$kVxXQrr_wV2D-@pI*_51thH{ZT}d;j6X&tJdZzI*rO%a`B3e}Dh+ z?_@ZZ0GpFe+j^Y-nB4GQky?|**%@Z-z7FI5Wv|Nm#8B~bjy0ybU;M1uU}!1n(@e}RXNnDU7wMLU;R z%)gK^#d&Si`s=-Ar{9+8KG;xUvu?)u7bR8)^LF3QpHSns{yO`QJ$3uP|M=g~*eKi5 z+ScAK)z#h8+v_%A0^{TRT6o;hpwoH;@B=L;=bykzOp=_^*StzNTs-8zPin>KIR z!n=LP&Rx4C_U_w%;6TUW!;;62pE!AP;+eDOoR}_Nx_srzvg_C9-nzwp_ul;n4_F^R zdHU=b_sdtW-@J)?|DNO1=PzHsvi$h@>-TT2fBzYn*+QHrBy4SF*Vl+Su_4h}O+fM5 zEQ^VaN4q7A(|C?eT)d!P!MRJtZPSEJlhx%{#GKre>g{fjXgAw)^RlyPe8tanPJHH> z*)iY#A?Mwur5P7%=6t{_Ev$x8UUy{IJ*D< literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/header-bg.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/header-bg.png new file mode 100755 index 0000000000000000000000000000000000000000..75202f9b37af36592e8f5bcb5badd5ac3f71d0d3 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^B0!wN!3HGTRtuZ~QWHE~978H@y*;y#_Yebv%f;Dk zjs`RM4lwB)U|@-!VA^p@iBqE~yUEE!RD!3;L@}q3=OVXb&Br&v8zZefTOJ>-47Kv? z-c>Ydn(tecwS3j;nbmeyp1Z$2QZe1WdUDCGa=)P8H5Q(Ce?L|EI{%<&3ofvqPkr;s d$^Y#CFcq0@`TrwZ))?qE22WQ%mvv4FO#lp^PX7P^ literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/highlight-blue.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/highlight-blue.gif new file mode 100755 index 0000000000000000000000000000000000000000..4fdabde69252ba43e8b658c74a72775caaf304f4 GIT binary patch literal 471 zcmZ?wbhEHb)L_tNI3mh0b>*rn_bz?>^5NvQ+|z#z(?15yRD zlY#Yrf@+_NCr7*Rnu7}!QgzNx-55}@F4$S|f`i~ggBz0NjqwI*2{Q9{vnE;=IjrB+ zDCD7$u;0?zfI%<#i1GTJdsHRM1Uh5*=AKsEeQ?SYjaMqdjg0|KjY4kRs^-=Wtu3wX zZqXd>y-od16RmlavwB*EXSDg-v-nSI_Fpi|n$>jqfB1PxT?^`t?fQfg*PWROT z?4=7Bj-NPj$bb8e1?SIiu}ay0;o4&VD^suExnz0EZN;6_?hnqjm6bhlW2}3)ao5bl z&nzEpx@W<5 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/highlight-yellow.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/highlight-yellow.gif new file mode 100755 index 0000000000000000000000000000000000000000..3e847e7e01623b08e9a7e7d823fcb97104e76194 GIT binary patch literal 331 zcmV-R0kr-{Nk%w1VJrYF0HOc@`{bSf|Nr^cZTH48_|8oJ^wtd=`2yXqN@dAW)FA{*9 z0^lo>f-$0TSwVV~Os3NTjY>HMo^?sUEofV-pivzGA!zUjgNA5FQ#EN!ZcP>Pwa!Lg z*&TUsLwr0%X>V dfG2i6;P)aBqN^Dbjd|Rq0Yr!k5L_hy06YHIk5T{t literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/loading.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/loading.gif new file mode 100755 index 0000000000000000000000000000000000000000..085ccaecaf5fa5c34bc14cd2c2ed5cbbd8e25dcb GIT binary patch literal 1553 zcma)+TTl~c6vwlh>nb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/logo.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..b111258c0ca80f948528d9fe96d1288b257c5a1d GIT binary patch literal 35061 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/previous-arrow.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/previous-arrow.png new file mode 100755 index 0000000000000000000000000000000000000000..347bc53474ce6f9246e45a2784623ac3c55203fa GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dF8<0HkD{mW+k}PqJC<)F_D=AMbN@Z|N$xljE z@XSq2PYp^(7*cU7>Bs;7_RM+{CQNw1Fo``;OomIOA;eyQoxxDq zqleYEkzs-s!=tK_vpODKLJPP=Hrzbak`ij8=UULpEv8e!aHP*6O-Z2sz)AtOhAwdi tO;?4yBLSV-6%OYZAAQ~MfRV$1!EulJ!>J6GyMcBxc)I$ztaD0e0sv`WKHvZV literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/search-icon.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/search-icon.png new file mode 100755 index 0000000000000000000000000000000000000000..715f62d08b07f857b5866aadab38c9275c1c7513 GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6L!3HE_wj8emQjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sf9Y#@6Www1Qyw!k0S3F%DLp+YZ zy<+I?6ez>`Aztf}Sn4}APCv){3l|=>Yl)V3lbRE=XyLww>=g=mre-ad1o$;s=E~eD z+1Y%=dExh#rt)dr&+9GQtIt35Z{zvT^t|GLxm`j3W0RKkh6mMWWjy3Aj!_ZROK!09 ztNWn5M@?|QQ%lvEHI1z2$~vEH`%o!!e`u6{1-oD!M<4CsTk literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/showHideTreeIcons.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/showHideTreeIcons.png new file mode 100755 index 0000000000000000000000000000000000000000..c1ec1f96a4c519610064feea6de06358e9f6e38a GIT binary patch literal 726 zcmV;{0xA88P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igY> z6BZ`#&b%i800LG?L_t(Y$L-b2ZW2)($MNr6N{|8D3Y1Hs4@EXeks5%$)hVFkKicx7iruNhXt=oZtVGoO9+s+TNG1A|i+gzW?(r z;&VCo>%25YWQu^ooPi>ZYKsMQ;c$770xZ9<{Y za&RV{W_@jq+J2p0|9r0P^L-zuT0<$HaIF053r`_&Cm&Q{H+i}n| zol>cYVHoql>ual|Qz?#HE!v&VQa5(ux>Ov8(8>zsVgXIlX2aP`n!#Ym;n8uR&t)_k zQLER9MlBNY8?)il(=L`3A(==7fXLs^cFj7>-y*CeEhVB^3=@cQL(EGFNSj+i#gA^xvn=?v5V2@-~JyT1jz=0 z-v`KkSQhRWhVf$AEbx3$xCy)l?!;ozMYp;QyaDb$+P#1H11-^gON17#t^fc407*qo IM6N<$g5CR900000 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/sidebar.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/sidebar.png new file mode 100755 index 0000000000000000000000000000000000000000..5492671871c1fdb7c149bf233e34ebddd074c777 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp@K+MU(1SHcW3~hmwWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8U{4pvkcwMLbBxo^O;mQ5C}5VBp8e!WN?S`y%iQnt-qwGU z>u7lMf5n5>*VhX;sx9C%(%2aC{q^zkm`nHf)ixVQbn@6YFfcQ; Xxf$LLJ^5Y}Xgq_btDnm{r-UW|fBilp literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/starsSmall.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/images/starsSmall.png new file mode 100755 index 0000000000000000000000000000000000000000..490a27b9255075c8ce355aa3e36f89c82038b794 GIT binary patch literal 1032 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").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
        a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="

        "+""+"
        ",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
        t
        ",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
        ",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

        ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
        ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
        ","
        "],thead:[1,"","
        "],tr:[2,"","
        "],td:[3,"","
        "],col:[2,"","
        "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
        ","
        "]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
        ").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/jquery-ui-1.8.2.custom.min.js b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/jquery-ui-1.8.2.custom.min.js new file mode 100755 index 0000000..fec53e8 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/jquery-ui-1.8.2.custom.min.js @@ -0,0 +1,321 @@ +/*! + * jQuery UI 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +(function(c){c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.2",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Widget + */ +(function(b){var j=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add(this).each(function(){b(this).triggerHandler("remove")});return j.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend({},c.options);b[e][a].prototype= +b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==undefined){h=i;return false}}):this.each(function(){var g= +b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){this.element=b(c).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create(); +this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===undefined)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/*! + * jQuery UI Mouse 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&& +this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault(); +return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&& +this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX- +a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Resizable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.resizable",d.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");d.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element, +_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&d.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(d('
        ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!d(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var e=0;e
        ');/sw|se|ne|nw/.test(g)&&f.css({zIndex:++a.zIndex});"se"==g&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[g]=".ui-resizable-"+g;this.element.append(f)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=d(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=d(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}d(this.handles[i])}};this._renderAxis(this.element);this._handles=d(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();d(this.element).addClass("ui-resizable-autohide").hover(function(){d(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){d(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){d(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(d(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +e=this.element;this.resizing=true;this.documentScroll={top:d(document).scrollTop(),left:d(document).scrollLeft()};if(e.is(".ui-draggable")||/absolute/.test(e.css("position")))e.css({position:"absolute",top:c.top,left:c.left});d.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var g=m(this.helper.css("top"));if(a.containment){c+=d(a.containment).scrollLeft()||0;g+=d(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:g};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:c,top:g};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=d(".ui-resizable-"+this.axis).css("cursor");d("body").css("cursor",a=="auto"?this.axis+"-resize":a);e.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,e=this._change[this.axis];if(!e)return false;c=e.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var e=this._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName);e=g&&d.ui.hasScroll(e[0],"left")?0:c.sizeDiff.height; +g={width:c.size.width-(g?0:c.sizeDiff.width),height:c.size.height-e};e=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var f=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(d.extend(g,{top:f,left:e}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}d("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,e=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(e=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(e=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,e=k(b.width)&&a.maxWidth&&a.maxWidthb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(f)b.width=a.minWidth;if(h)b.height=a.minHeight;if(e)b.width=a.maxWidth;if(g)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(f&&l)b.left=i-a.minWidth;if(e&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(g&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=d.browser.msie&&d.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return d.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return d.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){d.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});d.extend(d.ui.resizable, +{version:"1.8.2"});d.ui.plugin.add("resizable","alsoResize",{start:function(){var b=d(this).data("resizable").options,a=function(c){d(c).each(function(){d(this).data("resizable-alsoresize",{width:parseInt(d(this).width(),10),height:parseInt(d(this).height(),10),left:parseInt(d(this).css("left"),10),top:parseInt(d(this).css("top"),10)})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else d.each(b.alsoResize,function(c){a(c)}); +else a(b.alsoResize)},resize:function(){var b=d(this).data("resizable"),a=b.options,c=b.originalSize,e=b.originalPosition,g={height:b.size.height-c.height||0,width:b.size.width-c.width||0,top:b.position.top-e.top||0,left:b.position.left-e.left||0},f=function(h,i){d(h).each(function(){var j=d(this),l=d(this).data("resizable-alsoresize"),p={};d.each((i&&i.length?i:["width","height","top","left"])||["width","height","top","left"],function(n,o){if((n=(l[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(/relative/.test(j.css("position"))&& +d.browser.opera){b._revertToRelativePosition=true;j.css({position:"absolute",top:"auto",left:"auto"})}j.css(p)})};typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?d.each(a.alsoResize,function(h,i){f(h,i)}):f(a.alsoResize)},stop:function(){var b=d(this).data("resizable");if(b._revertToRelativePosition&&d.browser.opera){b._revertToRelativePosition=false;el.css({position:"relative"})}d(this).removeData("resizable-alsoresize-start")}});d.ui.plugin.add("resizable","animate",{stop:function(b){var a= +d(this).data("resizable"),c=a.options,e=a._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName),f=g&&d.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height;g={width:a.size.width-(g?0:a.sizeDiff.width),height:a.size.height-f};f=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(d.extend(g,h&&f?{top:h,left:f}:{}),{duration:c.animateDuration,easing:c.animateEasing, +step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&d(e[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});d.ui.plugin.add("resizable","containment",{start:function(){var b=d(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof d?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= +d(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:d(document),left:0,top:0,width:d(document).width(),height:d(document).height()||document.body.parentNode.scrollHeight}}else{var e=d(a),g=[];d(["Top","Right","Left","Bottom"]).each(function(i,j){g[i]=m(e.css("padding"+j))});b.containerOffset=e.offset();b.containerPosition=e.position();b.containerSize={height:e.innerHeight()-g[3],width:e.innerWidth()-g[1]};c=b.containerOffset; +var f=b.containerSize.height,h=b.containerSize.width;h=d.ui.hasScroll(a,"left")?a.scrollWidth:h;f=d.ui.hasScroll(a)?a.scrollHeight:f;b.parentData={element:a,left:c.left,top:c.top,width:h,height:f}}}},resize:function(b){var a=d(this).data("resizable"),c=a.options,e=a.containerOffset,g=a.position;b=a._aspectRatio||b.shiftKey;var f={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))f=e;if(g.left<(a._helper?e.left:0)){a.size.width+=a._helper?a.position.left-e.left: +a.position.left-f.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?e.left:0}if(g.top<(a._helper?e.top:0)){a.size.height+=a._helper?a.position.top-e.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?e.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-f.left:a.offset.left-f.left)+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-f.top:a.offset.top- +e.top)+a.sizeDiff.height);g=a.containerElement.get(0)==a.element.parent().get(0);f=/relative|absolute/.test(a.containerElement.css("position"));if(g&&f)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(e+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-e;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=d(this).data("resizable"),a=b.options,c=b.containerOffset,e=b.containerPosition, +g=b.containerElement,f=d(b.helper),h=f.offset(),i=f.outerWidth()-b.sizeDiff.width;f=f.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f});b._helper&&!a.animate&&/static/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f})}});d.ui.plugin.add("resizable","ghost",{start:function(){var b=d(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, +display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=d(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=d(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});d.ui.plugin.add("resizable","grid",{resize:function(){var b= +d(this).data("resizable"),a=b.options,c=b.size,e=b.originalSize,g=b.originalPosition,f=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-e.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-e.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a}else if(/^(ne)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}else{if(/^(sw)$/.test(f)){b.size.width=e.width+h;b.size.height= +e.height+a}else{b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}b.position.left=g.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +; +/* + * jQuery UI Selectable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
        ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom").addClass("ui-autocomplete").appendTo("body",c).mousedown(function(){setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(d,b){b=b.item.data("item.autocomplete"); +false!==a._trigger("focus",null,{item:b})&&/^key/.test(d.originalEvent.type)&&a.element.val(b.value)},selected:function(d,b){b=b.item.data("item.autocomplete");false!==a._trigger("select",d,{item:b})&&a.element.val(b.value);a.close(d);d=a.previous;if(a.element[0]!==c.activeElement){a.element.focus();a.previous=d}a.selectedItem=b},blur:function(){a.menu.element.is(":visible")&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()}, +destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource()},_initSource:function(){var a,c;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(d,b){b(e.ui.autocomplete.filter(a,d.term))}}else if(typeof this.options.source=== +"string"){c=this.options.source;this.source=function(d,b){e.getJSON(c,d,b)}}else this.source=this.options.source},search:function(a,c){a=a!=null?a:this.element.val();if(a.length").data("item.autocomplete", +c).append(""+c.label+"").appendTo(a)},_move:function(a,c){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](c);else this.search(null,c)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")},filter:function(a,c){var d=new RegExp(e.ui.autocomplete.escapeRegex(c), +"i");return e.grep(a,function(b){return d.test(b.label||b.value||b)})}})})(jQuery); +(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(e(c.target).closest(".ui-menu-item a").length){c.preventDefault();a.select(c)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,b=this.element.attr("scrollTop"),f=this.element.height();if(d<0)this.element.attr("scrollTop",b+d);else d>f&&this.element.attr("scrollTop",b+d-f+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); +this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prev().length},last:function(){return this.active&&!this.active.next().length},move:function(a,c,d){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(d,a):this.activate(d,this.element.children(c))}else this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active|| +this.last())this.activate(a,this.element.children(":first"));else{var c=this.active.offset().top,d=this.element.height(),b=this.element.children("li").filter(function(){var f=e(this).offset().top-c-d+e(this).height();return f<10&&f>-10});b.length||(b=this.element.children(":last"));this.activate(a,b)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last")); +else{var c=this.active.offset().top,d=this.element.height();result=this.element.children("li").filter(function(){var b=e(this).offset().top-c+d-e(this).height();return b<10&&b>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":""));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");var a=this,b=a.options,d=b.title||a.originalTitle||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
        ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
        ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), +h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", +e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== +b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index", +c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== +f[0]&&e.shiftKey){g.focus(1);return false}}});c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false,e=c("
        ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a, +function(g,f){g=c('').text(g).click(function(){f.apply(b.element[0],arguments)}).appendTo(e);c.fn.button&&g.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging"); +b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,position:f.position,size:f.size}}a=a===undefined?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position"); +a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop", +f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0];a=a||c.ui.dialog.prototype.options.position;if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(e,g){if(+b[e]===b[e]){d[e]=b[e];b[e]= +g}})}else if(typeof a==="object"){if("left"in a){b[0]="left";d[0]=a.left}else if("right"in a){b[0]="right";d[0]=-a.right}if("top"in a){b[1]="top";d[1]=a.top}else if("bottom"in a){b[1]="bottom";d[1]=-a.bottom}}(a=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position({my:b.join(" "),at:b.join(" "),offset:d.join(" "),of:window,collision:"fit",using:function(e){var g=c(this).css(e).offset().top;g<0&&c(this).css("top",e.top-g)}});a||this.uiDialog.hide()},_setOption:function(a, +b){var d=this,e=d.uiDialog,g=e.is(":data(resizable)"),f=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");break;case "draggable":b?d._makeDraggable():e.draggable("destroy");break; +case "height":f=true;break;case "maxHeight":g&&e.resizable("option","maxHeight",b);f=true;break;case "maxWidth":g&&e.resizable("option","maxWidth",b);f=true;break;case "minHeight":g&&e.resizable("option","minHeight",b);f=true;break;case "minWidth":g&&e.resizable("option","minWidth",b);f=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title", +d.uiDialogTitlebar).html(""+(b||" "));break;case "width":f=true;break}c.Widget.prototype._setOption.apply(d,arguments);f&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight", +this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.2",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&& +c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
        ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&& +b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight, +document.body.offsetHeight);return a",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:'
      • #{label}
      • '},_create:function(){this._tabify(true)},_setOption:function(c,e){if(c=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[c]=e;this._tabify()}},_tabId:function(c){return c.title&&c.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+s()},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_cookie:function(){var c=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+v());return d.cookie.apply(null,[c].concat(d.makeArray(arguments)))},_ui:function(c,e){return{tab:c,panel:e,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var c= +d(this);c.html(c.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function e(g,f){g.css({display:""});!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);var a=this,b=this.options,h=/^#.+/;this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],p;if(l&&(l===location.toString().split("#")[0]|| +(p=d("base")[0])&&l===p.href)){j=f.hash;f.href=j}if(h.test(j))a.panels=a.panels.add(a._sanitizeSelector(j));else if(j!="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=a._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(b.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else b.disabled.push(g)});if(c){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(b.selected===undefined){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){b.selected=g;return false}});if(typeof b.selected!="number"&&b.cookie)b.selected=parseInt(a._cookie(),10);if(typeof b.selected!="number"&&this.lis.filter(".ui-tabs-selected").length)b.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));b.selected=b.selected||(this.lis.length?0:-1)}else if(b.selected===null)b.selected=-1;b.selected=b.selected>=0&&this.anchors[b.selected]||b.selected<0?b.selected:0;b.disabled=d.unique(b.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(b.selected,b.disabled)!=-1&&b.disabled.splice(d.inArray(b.selected,b.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(b.selected>=0&&this.anchors.length){this.panels.eq(b.selected).removeClass("ui-tabs-hide");this.lis.eq(b.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[b.selected],a.panels[b.selected]))});this.load(b.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else b.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[b.collapsible?"addClass": +"removeClass"]("ui-tabs-collapsible");b.cookie&&this._cookie(b.selected,b.cookie);c=0;for(var i;i=this.lis[c];c++)d(i)[d.inArray(c,b.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");b.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(b.event!="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs", +function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(b.fx)if(d.isArray(b.fx)){m=b.fx[0];o=b.fx[1]}else m=o=b.fx;var q=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show", +null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},r=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(b.event+".tabs", +function(){var g=this,f=d(this).closest("li"),j=a.panels.filter(":not(.ui-tabs-hide)"),l=d(a._sanitizeSelector(this.hash));if(f.hasClass("ui-tabs-selected")&&!b.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}b.selected=a.anchors.index(this);a.abort();if(b.collapsible)if(f.hasClass("ui-tabs-selected")){b.selected=-1;b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){r(g, +j)}).dequeue("tabs");this.blur();return false}else if(!j.length){b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this));this.blur();return false}b.cookie&&a._cookie(b.selected,b.cookie);if(l.length){j.length&&a.element.queue("tabs",function(){r(g,j)});a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs", +function(){return false})},destroy:function(){var c=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(b,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this, +"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});c.cookie&&this._cookie(null,c.cookie);return this},add:function(c,e,a){if(a===undefined)a=this.anchors.length;var b=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,e));c=!c.indexOf("#")?c.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs", +true);var i=d("#"+c);i.length||(i=d(h.panelTemplate).attr("id",c).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);i.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide"); +this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(c){var e=this.options,a=this.lis.eq(c).remove(),b=this.panels.eq(c).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(c+(c+1=c?--h:h});this._tabify();this._trigger("remove", +null,this._ui(a.find("a")[0],b[0]));return this},enable:function(c){var e=this.options;if(d.inArray(c,e.disabled)!=-1){this.lis.eq(c).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=c});this._trigger("enable",null,this._ui(this.anchors[c],this.panels[c]));return this}},disable:function(c){var e=this.options;if(c!=e.selected){this.lis.eq(c).addClass("ui-state-disabled");e.disabled.push(c);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}return this}, +select:function(c){if(typeof c=="string")c=this.anchors.index(this.anchors.filter("[href$="+c+"]"));else if(c===null)c=-1;if(c==-1&&this.options.collapsible)c=this.options.selected;this.anchors.eq(c).trigger(this.options.event+".tabs");return this},load:function(c){var e=this,a=this.options,b=this.anchors.eq(c)[0],h=d.data(b,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(b,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(c).addClass("ui-state-processing"); +if(a.spinner){var i=d("span",b);i.data("label.tabs",i.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(b.hash)).html(k);e._cleanup();a.cache&&d.data(b,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.error(k,n,c,b)}catch(m){}}}));e.element.dequeue("tabs");return this}}, +abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(c,e){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.2"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(c,e){var a=this,b=this.options,h=a._rotate||(a._rotate= +function(i){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=b.selected;a.select(++k").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"}); +c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=j.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c|| +typeof c=="number"||f.fx.speeds[c])return this._show.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c])return this._hide.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||typeof c=="boolean"||f.isFunction(c))return this.__toggle.apply(this, +arguments);else{var a=j.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+ +b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2, +10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)* +a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(b(this).offset()).appendTo("body")});return!0},_mouseStart:function(a){var c=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();b.ui.ddmanager&&(b.ui.ddmanager.current=this); +this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY= +a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);c.containment&&this._setContainment();if(!1===this._trigger("start",a))return this._clear(),!1;this._cacheHelperProportions();b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,!0);b.ui.ddmanager&&b.ui.ddmanager.dragStart(this,a);return!0},_mouseDrag:function(a,c){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +if(!c){var d=this._uiHash();if(!1===this._trigger("drag",a,d))return this._mouseUp({}),!1;this.position=d.position}if(!this.options.axis||"y"!=this.options.axis)this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||"x"!=this.options.axis)this.helper[0].style.top=this.position.top+"px";b.ui.ddmanager&&b.ui.ddmanager.drag(this,a);return!1},_mouseStop:function(a){var c=!1;b.ui.ddmanager&&!this.options.dropBehaviour&&(c=b.ui.ddmanager.drop(this,a));this.dropped&&(c=this.dropped,this.dropped= +!1);if((!this.element[0]||!this.element[0].parentNode)&&"original"==this.options.helper)return!1;if("invalid"==this.options.revert&&!c||"valid"==this.options.revert&&c||!0===this.options.revert||b.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;b(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",a)!==false&&d._clear()})}else!1!==this._trigger("stop",a)&&this._clear();return!1},_mouseUp:function(a){!0=== +this.options.iframeFix&&b("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});b.ui.ddmanager&&b.ui.ddmanager.dragStop(this,a);return b.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var c=!this.options.handle||!b(this.options.handle,this.element).length?!0:!1;b(this.options.handle,this.element).find("*").andSelf().each(function(){this==a.target&&(c= +!0)});return c},_createHelper:function(a){var c=this.options,a=b.isFunction(c.helper)?b(c.helper.apply(this.element[0],[a])):"clone"==c.helper?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo("parent"==c.appendTo?this.element[0].parentNode:c.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){"string"==typeof a&&(a=a.split(" "));b.isArray(a)&&(a={left:+a[0],top:+a[1]|| +0});"left"in a&&(this.offset.click.left=a.left+this.margins.left);"right"in a&&(this.offset.click.left=this.helperProportions.width-a.right+this.margins.left);"top"in a&&(this.offset.click.top=a.top+this.margins.top);"bottom"in a&&(this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();"absolute"==this.cssPosition&&(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0], +this.offsetParent[0]))&&(a.left+=this.scrollParent.scrollLeft(),a.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&"html"==this.offsetParent[0].tagName.toLowerCase()&&b.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"==this.cssPosition){var b=this.element.position();return{top:b.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(), +height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;"parent"==a.containment&&(a.containment=this.helper[0].parentNode);if("document"==a.containment||"window"==a.containment)this.containment=["document"==a.containment?0:b(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,"document"==a.containment?0:b(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,("document"==a.containment?0:b(window).scrollLeft())+b("document"==a.containment?document: +window).width()-this.helperProportions.width-this.margins.left,("document"==a.containment?0:b(window).scrollTop())+(b("document"==a.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var a=b(a.containment),c=a[0];if(c){a.offset();var d="hidden"!=b(c).css("overflow");this.containment=[(parseInt(b(c).css("borderLeftWidth"),10)||0)+(parseInt(b(c).css("paddingLeft"), +10)||0),(parseInt(b(c).css("borderTopWidth"),10)||0)+(parseInt(b(c).css("paddingTop"),10)||0),(d?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(b(c).css("borderLeftWidth"),10)||0)-(parseInt(b(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(d?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(b(c).css("borderTopWidth"),10)||0)-(parseInt(b(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom]; +this.relative_container=a}}else a.containment.constructor==Array&&(this.containment=a.containment)},_convertPositionTo:function(a,c){c||(c=this.position);var d="absolute"==a?1:-1,g="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(g[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition? +0:("fixed"==this.cssPosition?-this.scrollParent.scrollTop():h?0:g.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():h?0:g.scrollLeft())*d)}},_generatePosition:function(a){var c=this.options,d="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent, +g=/(html|body)/i.test(d[0].tagName),h=a.pageX,e=a.pageY;if(this.originalPosition){var f;this.containment&&(this.relative_container?(f=this.relative_container.offset(),f=[this.containment[0]+f.left,this.containment[1]+f.top,this.containment[2]+f.left,this.containment[3]+f.top]):f=this.containment,a.pageX-this.offset.click.leftf[2]&&(h=f[2]+this.offset.click.left), +a.pageY-this.offset.click.top>f[3]&&(e=f[3]+this.offset.click.top));c.grid&&(e=c.grid[1]?this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY,e=f?!(e-this.offset.click.topf[3])?e:!(e-this.offset.click.topf[2])?h:!(h-this.offset.click.left< +f[0])?h-c.grid[0]:h+c.grid[0]:h)}return{top:e-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollTop():g?0:d.scrollTop()),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollLeft():g?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"); +this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=!1},_trigger:function(a,c,d){d=d||this._uiHash();b.ui.plugin.call(this,a,[c,d]);"drag"==a&&(this.positionAbs=this._convertPositionTo("absolute"));return b.Widget.prototype._trigger.call(this,a,c,d)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});b.extend(b.ui.draggable,{version:"1.8.14"}); +b.ui.plugin.add("draggable","connectToSortable",{start:function(a,c){var d=b(this).data("draggable"),g=d.options,h=b.extend({},c,{item:d.element});d.sortables=[];b(g.connectToSortable).each(function(){var c=b.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",a,h))})},stop:function(a,c){var d=b(this).data("draggable"),g=b.extend({},c,{item:d.element});b.each(d.sortables,function(){this.instance.isOver? +(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(a),this.instance.options.helper=this.instance.options._helper,"original"==d.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",a,g))})},drag:function(a,c){var d=b(this).data("draggable"),g=this;b.each(d.sortables,function(){this.instance.positionAbs= +d.positionAbs;this.instance.helperProportions=d.helperProportions;this.instance.offset.click=d.offset.click;this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=b(g).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},a.target=this.instance.currentItem[0],this.instance._mouseCapture(a, +!0),this.instance._mouseStart(a,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",a),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(a)):this.instance.isOver&& +(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",a,this.instance._uiHash(this.instance)),this.instance._mouseStop(a,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",a),d.dropped=!1)})}});b.ui.plugin.add("draggable","cursor",{start:function(){var a=b("body"),c=b(this).data("draggable").options; +a.css("cursor")&&(c._cursor=a.css("cursor"));a.css("cursor",c.cursor)},stop:function(){var a=b(this).data("draggable").options;a._cursor&&b("body").css("cursor",a._cursor)}});b.ui.plugin.add("draggable","opacity",{start:function(a,c){var d=b(c.helper),g=b(this).data("draggable").options;d.css("opacity")&&(g._opacity=d.css("opacity"));d.css("opacity",g.opacity)},stop:function(a,c){var d=b(this).data("draggable").options;d._opacity&&b(c.helper).css("opacity",d._opacity)}});b.ui.plugin.add("draggable", +"scroll",{start:function(){var a=b(this).data("draggable");a.scrollParent[0]!=document&&"HTML"!=a.scrollParent[0].tagName&&(a.overflowOffset=a.scrollParent.offset())},drag:function(a){var c=b(this).data("draggable"),d=c.options,g=!1;if(c.scrollParent[0]!=document&&"HTML"!=c.scrollParent[0].tagName){if(!d.axis||"x"!=d.axis)c.overflowOffset.top+c.scrollParent[0].offsetHeight-a.pageY=k&&e<=l||f>=k&&f<=l||el)&&(g>=i&&g<=j||h>=i&&h<=j||gj);default:return!1}}; +b.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,c){var d=b.ui.ddmanager.droppables[a.options.scope]||[],g=c?c.type:null,h=(a.currentItem||a.element).find(":data(droppable)").andSelf(),e=0;a:for(;e').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})), +this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize", +"none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize());this.handles=a.handles||(!b(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){"all"== +this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw");var h=this.handles.split(",");this.handles={};for(var e=0;e');/sw|se|ne|nw/.test(f)&&i.css({zIndex:++a.zIndex});"se"==f&&i.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(i)}}this._renderAxis=function(f){var f=f||this.element,c;for(c in this.handles){this.handles[c].constructor==String&&(this.handles[c]= +b(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var a=b(this.handles[c],this.element),d=0,d=/sw|ne|nw|se|n|s/.test(c)?a.outerHeight():a.outerWidth(),a=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");f.css(a,d);this._proportionallyResize()}b(this.handles[c])}};this._renderAxis(this.element);this._handles=b(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!c.resizing){if(this.className)var b=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);c.axis=b&&b[1]?b[1]:"se"}});a.autoHide&&(this._handles.hide(),b(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){b(this).removeClass("ui-resizable-autohide");c._handles.show()}},function(){if(!a.disabled&&!c.resizing){b(this).addClass("ui-resizable-autohide");c._handles.hide()}}));this._mouseInit()},destroy:function(){this._mouseDestroy(); +var c=function(c){b(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){c(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);c(this.originalElement);return this},_mouseCapture:function(c){var a= +!1,h;for(h in this.handles)b(this.handles[h])[0]==c.target&&(a=!0);return!this.options.disabled&&a},_mouseStart:function(c){var g=this.options,h=this.element.position(),e=this.element;this.resizing=!0;this.documentScroll={top:b(document).scrollTop(),left:b(document).scrollLeft()};(e.is(".ui-draggable")||/absolute/.test(e.css("position")))&&e.css({position:"absolute",top:h.top,left:h.left});b.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy(); +var h=a(this.helper.css("left")),f=a(this.helper.css("top"));g.containment&&(h+=b(g.containment).scrollLeft()||0,f+=b(g.containment).scrollTop()||0);this.offset=this.helper.offset();this.position={left:h,top:f};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:h,top:f};this.sizeDiff={width:e.outerWidth()- +e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:c.pageX,top:c.pageY};this.aspectRatio="number"==typeof g.aspectRatio?g.aspectRatio:this.originalSize.width/this.originalSize.height||1;g=b(".ui-resizable-"+this.axis).css("cursor");b("body").css("cursor","auto"==g?this.axis+"-resize":g);e.addClass("ui-resizable-resizing");this._propagate("start",c);return!0},_mouseDrag:function(b){var c=this.helper,a=this.originalMousePosition,e=this._change[this.axis];if(!e)return!1;a= +e.apply(this,[b,b.pageX-a.left||0,b.pageY-a.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)a=this._updateRatio(a,b);a=this._respectSize(a,b);this._propagate("resize",b);c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(a);this._trigger("resize",b,this.ui());return!1},_mouseStop:function(c){this.resizing= +!1;var a=this.options;if(this._helper){var h=this._proportionallyResizeElements,e=h.length&&/textarea/i.test(h[0].nodeName),h=e&&b.ui.hasScroll(h[0],"left")?0:this.sizeDiff.height,e=e?0:this.sizeDiff.width,e={width:this.helper.width()-e,height:this.helper.height()-h},h=parseInt(this.element.css("left"),10)+(this.position.left-this.originalPosition.left)||null,f=parseInt(this.element.css("top"),10)+(this.position.top-this.originalPosition.top)||null;a.animate||this.element.css(b.extend(e,{top:f,left:h})); +this.helper.height(this.size.height);this.helper.width(this.size.width);this._helper&&!a.animate&&this._proportionallyResize()}b("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",c);this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(b){var a=this.options,h,e,f,a={minWidth:c(a.minWidth)?a.minWidth:0,maxWidth:c(a.maxWidth)?a.maxWidth:Infinity,minHeight:c(a.minHeight)?a.minHeight:0,maxHeight:c(a.maxHeight)?a.maxHeight:Infinity}; +if(this._aspectRatio||b)if(b=a.minHeight*this.aspectRatio,e=a.minWidth/this.aspectRatio,h=a.maxHeight*this.aspectRatio,f=a.maxWidth/this.aspectRatio,b>a.minWidth&&(a.minWidth=b),e>a.minHeight&&(a.minHeight=e),hb.width,j=c(b.height)&&a.minHeight&&a.minHeight> +b.height;i&&(b.width=a.minWidth);j&&(b.height=a.minHeight);e&&(b.width=a.maxWidth);f&&(b.height=a.maxHeight);var k=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,m=/sw|nw|w/.test(h),h=/nw|ne|n/.test(h);i&&m&&(b.left=k-a.minWidth);e&&m&&(b.left=k-a.maxWidth);j&&h&&(b.top=l-a.minHeight);f&&h&&(b.top=l-a.maxHeight);(a=!b.width&&!b.height)&&!b.left&&b.top?b.top=null:a&&(!b.top&&b.left)&&(b.left=null);return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var c= +this.helper||this.element,a=0;a');var a=b.browser.msie&&7>b.browser.version,h=a?1:0,a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-h+"px",top:this.elementOffset.top- +h+"px",zIndex:++c.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,c){return{width:this.originalSize.width+c}},w:function(b,c){return{left:this.originalPosition.left+c,width:this.originalSize.width-c}},n:function(b,c,a){return{top:this.originalPosition.top+a,height:this.originalSize.height-a}},s:function(b,c,a){return{height:this.originalSize.height+a}},se:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.e.apply(this, +[c,a,h]))},sw:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[c,a,h]))},ne:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[c,a,h]))},nw:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[c,a,h]))}},_propagate:function(c,a){b.ui.plugin.call(this,c,[a,this.ui()]);"resize"!=c&&this._trigger(c,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement, +element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});b.extend(b.ui.resizable,{version:"1.8.14"});b.ui.plugin.add("resizable","alsoResize",{start:function(){var c=b(this).data("resizable").options,a=function(c){b(c).each(function(){var c=b(this);c.data("resizable-alsoresize",{width:parseInt(c.width(),10),height:parseInt(c.height(),10),left:parseInt(c.css("left"),10),top:parseInt(c.css("top"),10),position:c.css("position")})})}; +"object"==typeof c.alsoResize&&!c.alsoResize.parentNode?c.alsoResize.length?(c.alsoResize=c.alsoResize[0],a(c.alsoResize)):b.each(c.alsoResize,function(b){a(b)}):a(c.alsoResize)},resize:function(c,a){var h=b(this).data("resizable"),e=h.options,f=h.originalSize,i=h.originalPosition,j={height:h.size.height-f.height||0,width:h.size.width-f.width||0,top:h.position.top-i.top||0,left:h.position.left-i.left||0},k=function(c,f){b(c).each(function(){var c=b(this),d=b(this).data("resizable-alsoresize"),i={}, +e=f&&f.length?f:c.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];b.each(e,function(b,c){var a=(d[c]||0)+(j[c]||0);a&&0<=a&&(i[c]=a||null)});b.browser.opera&&/relative/.test(c.css("position"))&&(h._revertToRelativePosition=!0,c.css({position:"absolute",top:"auto",left:"auto"}));c.css(i)})};"object"==typeof e.alsoResize&&!e.alsoResize.nodeType?b.each(e.alsoResize,function(b,c){k(b,c)}):k(e.alsoResize)},stop:function(){var c=b(this).data("resizable"),a=c.options, +h=function(c){b(c).each(function(){var c=b(this);c.css({position:c.data("resizable-alsoresize").position})})};c._revertToRelativePosition&&(c._revertToRelativePosition=!1,"object"==typeof a.alsoResize&&!a.alsoResize.nodeType?b.each(a.alsoResize,function(b){h(b)}):h(a.alsoResize));b(this).removeData("resizable-alsoresize")}});b.ui.plugin.add("resizable","animate",{stop:function(c){var a=b(this).data("resizable"),h=a.options,e=a._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName), +i=f&&b.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height,f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-i},i=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null,j=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(b.extend(f,j&&i?{top:j,left:i}:{}),{duration:h.animateDuration,easing:h.animateEasing,step:function(){var f={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10), +top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&b(e[0]).css({width:f.width,height:f.height});a._updateCache(f);a._propagate("resize",c)}})}});b.ui.plugin.add("resizable","containment",{start:function(){var c=b(this).data("resizable"),g=c.element,h=c.options.containment;if(g=h instanceof b?h.get(0):/parent/.test(h)?g.parent().get(0):h)if(c.containerElement=b(g),/document/.test(h)||h==document)c.containerOffset={left:0,top:0},c.containerPosition={left:0,top:0}, +c.parentData={element:b(document),left:0,top:0,width:b(document).width(),height:b(document).height()||document.body.parentNode.scrollHeight};else{var e=b(g),f=[];b(["Top","Right","Left","Bottom"]).each(function(b,c){f[b]=a(e.css("padding"+c))});c.containerOffset=e.offset();c.containerPosition=e.position();c.containerSize={height:e.innerHeight()-f[3],width:e.innerWidth()-f[1]};var h=c.containerOffset,i=c.containerSize.height,j=c.containerSize.width,j=b.ui.hasScroll(g,"left")?g.scrollWidth:j,i=b.ui.hasScroll(g)? +g.scrollHeight:i;c.parentData={element:g,left:h.left,top:h.top,width:j,height:i}}},resize:function(c){var a=b(this).data("resizable"),h=a.options,e=a.containerOffset,f=a.position,c=a._aspectRatio||c.shiftKey,i={top:0,left:0},j=a.containerElement;j[0]!=document&&/static/.test(j.css("position"))&&(i=e);if(f.left<(a._helper?e.left:0))a.size.width+=a._helper?a.position.left-e.left:a.position.left-i.left,c&&(a.size.height=a.size.width/h.aspectRatio),a.position.left=h.helper?e.left:0;if(f.top<(a._helper? +e.top:0))a.size.height+=a._helper?a.position.top-e.top:a.position.top,c&&(a.size.width=a.size.height*h.aspectRatio),a.position.top=a._helper?e.top:0;a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;h=Math.abs(a.offset.left-i.left+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-i.top:a.offset.top-e.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);i=/relative|absolute/.test(a.containerElement.css("position"));f&&i&&(h-=a.parentData.left); +h+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-h,c&&(a.size.height=a.size.width/a.aspectRatio));e+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-e,c&&(a.size.width=a.size.height*a.aspectRatio))},stop:function(){var a=b(this).data("resizable"),c=a.options,h=a.containerOffset,e=a.containerPosition,f=a.containerElement,i=b(a.helper),j=i.offset(),k=i.outerWidth()-a.sizeDiff.width,i=i.outerHeight()-a.sizeDiff.height;a._helper&&(!c.animate&&/relative/.test(f.css("position")))&& +b(this).css({left:j.left-e.left-h.left,width:k,height:i});a._helper&&(!c.animate&&/static/.test(f.css("position")))&&b(this).css({left:j.left-e.left-h.left,width:k,height:i})}});b.ui.plugin.add("resizable","ghost",{start:function(){var a=b(this).data("resizable"),c=a.options,h=a.size;a.ghost=a.originalElement.clone();a.ghost.css({opacity:0.25,display:"block",position:"relative",height:h.height,width:h.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof c.ghost?c.ghost: +"");a.ghost.appendTo(a.helper)},resize:function(){var a=b(this).data("resizable");a.ghost&&a.ghost.css({position:"relative",height:a.size.height,width:a.size.width})},stop:function(){var a=b(this).data("resizable");a.ghost&&a.helper&&a.helper.get(0).removeChild(a.ghost.get(0))}});b.ui.plugin.add("resizable","grid",{resize:function(){var a=b(this).data("resizable"),c=a.options,h=a.size,e=a.originalSize,f=a.originalPosition,i=a.axis;c.grid="number"==typeof c.grid?[c.grid,c.grid]:c.grid;var j=Math.round((h.width- +e.width)/(c.grid[0]||1))*(c.grid[0]||1),c=Math.round((h.height-e.height)/(c.grid[1]||1))*(c.grid[1]||1);/^(se|s|e)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):/^(ne)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c):(/^(sw)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c),a.position.left=f.left-j)}});var a=function(b){return parseInt(b,10)||0},c=function(b){return!isNaN(parseInt(b, +10))}})(jQuery); +(function(b){b.widget("ui.selectable",b.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var a=this;this.element.addClass("ui-selectable");this.dragged=!1;var c;this.refresh=function(){c=b(a.options.filter,a.element[0]);c.each(function(){var a=b(this),c=a.offset();b.data(this,"selectable-item",{element:this,$element:a,left:c.left,top:c.top,right:c.left+a.outerWidth(),bottom:c.top+a.outerHeight(),startselected:!1,selected:a.hasClass("ui-selected"),selecting:a.hasClass("ui-selecting"), +unselecting:a.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=b("
        ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(a){var c=this;this.opos=[a.pageX,a.pageY];if(!this.options.disabled){var d= +this.options;this.selectees=b(d.filter,this.element[0]);this._trigger("start",a);b(d.appendTo).append(this.helper);this.helper.css({left:a.clientX,top:a.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var d=b.data(this,"selectable-item");d.startselected=!0;a.metaKey||(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",a,{unselecting:d.element}))});b(a.target).parents().andSelf().each(function(){var d= +b.data(this,"selectable-item");if(d){var h=!a.metaKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(h?"ui-unselecting":"ui-selected").addClass(h?"ui-selecting":"ui-unselecting");d.unselecting=!h;d.selecting=h;(d.selected=h)?c._trigger("selecting",a,{selecting:d.element}):c._trigger("unselecting",a,{unselecting:d.element});return!1}})}},_mouseDrag:function(a){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,g=this.opos[0],h=this.opos[1],e=a.pageX,f=a.pageY;if(g> +e)var i=e,e=g,g=i;h>f&&(i=f,f=h,h=i);this.helper.css({left:g,top:h,width:e-g,height:f-h});this.selectees.each(function(){var i=b.data(this,"selectable-item");if(i&&i.element!=c.element[0]){var k=false;d.tolerance=="touch"?k=!(i.left>e||i.rightf||i.bottomg&&i.righth&&i.bottom *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var b=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh(); +this.floating=this.items.length?"x"===b.axis||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;0<=b;b--)this.items[b].item.removeData("sortable-item");return this},_setOption:function(a,c){"disabled"===a?(this.options[a]= +c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):b.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,c){if(this.reverting||this.options.disabled||"static"==this.options.type)return!1;this._refreshItems(a);var d=null,g=this;b(a.target).parents().each(function(){if(b.data(this,"sortable-item")==g)return d=b(this),!1});b.data(a.target,"sortable-item")==g&&(d=b(a.target));if(!d)return!1;if(this.options.handle&&!c){var h=!1;b(this.options.handle,d).find("*").andSelf().each(function(){this== +a.target&&(h=!0)});if(!h)return!1}this.currentItem=d;this._removeCurrentsFromItems();return!0},_mouseStart:function(a,c,d){c=this.options;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition= +this.helper.css("position");b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder(); +c.containment&&this._setContainment();c.cursor&&(b("body").css("cursor")&&(this._storedCursor=b("body").css("cursor")),b("body").css("cursor",c.cursor));c.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",c.opacity));c.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",c.zIndex));this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()); +this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(d=this.containers.length-1;0<=d;d--)this.containers[d]._trigger("activate",a,this._uiHash(this));b.ui.ddmanager&&(b.ui.ddmanager.current=this);b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.dragging=!0;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return!0},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageYb[this.floating?"width":"height"]?g+k>i&&g+ke&&c+lthis.containment[2]&&(h=this.containment[2]+this.offset.click.left),a.pageY-this.offset.click.top>this.containment[3]&&(e=this.containment[3]+this.offset.click.top)),c.grid))e=this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1],e=this.containment?!(e-this.offset.click.topthis.containment[3])?e:!(e-this.offset.click.top< +this.containment[1])?e-c.grid[1]:e+c.grid[1]:e,h=this.originalPageX+Math.round((h-this.originalPageX)/c.grid[0])*c.grid[0],h=this.containment?!(h-this.offset.click.leftthis.containment[2])?h:!(h-this.offset.click.left li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,c=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");a.headers= +a.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||b(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||b(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||b(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||b(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(c.navigation){var d=a.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var g=d.closest(".ui-accordion-header");a.active=g.length?g:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", +function(b){return a._keydown(b)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);b.browser.safari||a.headers.find("a").attr("tabIndex",-1);c.event&&a.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(b){a._clickHandler.call(a,b,this);b.preventDefault()})},_createIcons:function(){var a= +this.options;a.icons&&(b("").addClass("ui-icon "+a.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");(a.autoHeight||a.fillHeight)&&c.css("height","");return b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);"active"==a&&this.activate(c);"icons"==a&&(this._destroyIcons(), +c&&this._createIcons());if("disabled"==a)this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!this.options.disabled&&!a.altKey&&!a.ctrlKey){var c=b.ui.keyCode,d=this.headers.length,g=this.headers.index(a.target),h=!1;switch(a.keyCode){case c.RIGHT:case c.DOWN:h=this.headers[(g+1)%d];break;case c.LEFT:case c.UP:h=this.headers[(g-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:a.target},a.target),a.preventDefault()}return h? +(b(a.target).attr("tabIndex",-1),b(h).attr("tabIndex",0),h.focus(),!1):!0}},resize:function(){var a=this.options,c;if(a.fillSpace){if(b.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height();b.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){c-=b(this).outerHeight(!0)});this.headers.next().each(function(){b(this).height(Math.max(0,c-b(this).innerHeight()+b(this).height()))}).css("overflow", +"auto")}else a.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,b(this).height("").height())}).height(c));return this},activate:function(b){this.options.active=b;b=this._findActive(b)[0];this._clickHandler({target:b},b);return this},_findActive:function(a){return a?"number"===typeof a?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):!1===a?b([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,c){var d=this.options;if(!d.disabled)if(a.target){var g=b(a.currentTarget|| +c),h=g[0]===this.active[0];d.active=d.collapsible&&h?!1:this.headers.index(g);if(!(this.running||!d.collapsible&&h)){var e=this.active,f=g.next(),i=this.active.next(),j={options:d,newHeader:h&&d.collapsible?b([]):g,oldHeader:this.active,newContent:h&&d.collapsible?b([]):f,oldContent:i},k=this.headers.index(this.active[0])>this.headers.index(g[0]);this.active=h?b([]):g;this._toggle(f,i,j,h,k);e.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +h||(g.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),g.next().addClass("ui-accordion-content-active"))}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var i=this.active.next(), +j={options:d,newHeader:b([]),oldHeader:d.active,newContent:b([]),oldContent:i},f=this.active=b([]);this._toggle(f,i,j)}},_toggle:function(a,c,d,g,h){var e=this,f=e.options;e.toShow=a;e.toHide=c;e.data=d;var i=function(){if(e)return e._completed.apply(e,arguments)};e._trigger("changestart",null,e.data);e.running=0===c.size()?a.size():c.size();if(f.animated){d={};d=f.collapsible&&g?{toShow:b([]),toHide:c,complete:i,down:h,autoHeight:f.autoHeight||f.fillSpace}:{toShow:a,toHide:c,complete:i,down:h,autoHeight:f.autoHeight|| +f.fillSpace};f.proxied||(f.proxied=f.animated);f.proxiedDuration||(f.proxiedDuration=f.duration);f.animated=b.isFunction(f.proxied)?f.proxied(d):f.proxied;f.duration=b.isFunction(f.proxiedDuration)?f.proxiedDuration(d):f.proxiedDuration;var g=b.ui.accordion.animations,j=f.duration,k=f.animated;k&&(!g[k]&&!b.easing[k])&&(k="slide");g[k]||(g[k]=function(b){this.slide(b,{easing:k,duration:j||700})});g[k](d)}else f.collapsible&&g?a.toggle():(c.hide(),a.show()),i(!0);c.prev().attr({"aria-expanded":"false", +"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(b){this.running=b?0:--this.running;this.running||(this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data))}});b.extend(b.ui.accordion,{version:"1.8.14", +animations:{slide:function(a,c){a=b.extend({easing:"swing",duration:300},a,c);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),g=0,h={},e={},f,i=a.toShow;f=i[0].style.width;i.width(parseInt(i.parent().width(),10)-parseInt(i.css("paddingLeft"),10)-parseInt(i.css("paddingRight"),10)-(parseInt(i.css("borderLeftWidth"),10)||0)-(parseInt(i.css("borderRightWidth"),10)||0));b.each(["height","paddingTop","paddingBottom"],function(c,f){e[f]="hide";var i=(""+b.css(a.toShow[0],f)).match(/^([\d+-.]+)(.*)$/); +h[f]={value:i[1],unit:i[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(e,{step:function(b,c){"height"==c.prop&&(g=0===c.end-c.start?0:(c.now-c.start)/(c.end-c.start));a.toShow[0].style[c.prop]=g*h[c.prop].value+h[c.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:f,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide", +paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(b){this.slide(b,{easing:b.down?"easeOutBounce":"swing",duration:b.down?1E3:200})}}})})(jQuery); +(function(b){var a=0;b.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var c=this,a=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(a){if(!c.options.disabled&&!c.element.attr("readonly")){g=!1;var d= +b.ui.keyCode;switch(a.keyCode){case d.PAGE_UP:c._move("previousPage",a);break;case d.PAGE_DOWN:c._move("nextPage",a);break;case d.UP:c._move("previous",a);a.preventDefault();break;case d.DOWN:c._move("next",a);a.preventDefault();break;case d.ENTER:case d.NUMPAD_ENTER:c.menu.active&&(g=!0,a.preventDefault());case d.TAB:if(!c.menu.active)break;c.menu.select(a);break;case d.ESCAPE:c.element.val(c.term);c.close(a);break;default:clearTimeout(c.searching),c.searching=setTimeout(function(){c.term!=c.element.val()&& +(c.selectedItem=null,c.search(null,a))},c.options.delay)}}}).bind("keypress.autocomplete",function(b){g&&(g=!1,b.preventDefault())}).bind("focus.autocomplete",function(){c.options.disabled||(c.selectedItem=null,c.previous=c.element.val())}).bind("blur.autocomplete",function(b){c.options.disabled||(clearTimeout(c.searching),c.closing=setTimeout(function(){c.close(b);c._change(b)},150))});this._initSource();this.response=function(){return c._response.apply(c,arguments)};this.menu=b("
          ").addClass("ui-autocomplete").appendTo(b(this.options.appendTo|| +"body",a)[0]).mousedown(function(a){var d=c.menu.element[0];b(a.target).closest(".ui-menu-item").length||setTimeout(function(){b(document).one("mousedown",function(a){a.target!==c.element[0]&&(a.target!==d&&!b.ui.contains(d,a.target))&&c.close()})},1);setTimeout(function(){clearTimeout(c.closing)},13)}).menu({focus:function(b,a){var f=a.item.data("item.autocomplete");!1!==c._trigger("focus",b,{item:f})&&/^key/.test(b.originalEvent.type)&&c.element.val(f.value)},selected:function(b,e){var f=e.item.data("item.autocomplete"), +i=c.previous;c.element[0]!==a.activeElement&&(c.element.focus(),c.previous=i,setTimeout(function(){c.previous=i;c.selectedItem=f},1));!1!==c._trigger("select",b,{item:f})&&c.element.val(f.value);c.term=c.element.val();c.close(b);c.selectedItem=f},blur:function(){c.menu.element.is(":visible")&&c.element.val()!==c.term&&c.element.val(c.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");b.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); +this.menu.element.remove();b.Widget.prototype.destroy.call(this)},_setOption:function(a,d){b.Widget.prototype._setOption.apply(this,arguments);"source"===a&&this._initSource();"appendTo"===a&&this.menu.element.appendTo(b(d||"body",this.element[0].ownerDocument)[0]);"disabled"===a&&(d&&this.xhr)&&this.xhr.abort()},_initSource:function(){var c=this,d,g;b.isArray(this.options.source)?(d=this.options.source,this.source=function(a,c){c(b.ui.autocomplete.filter(d,a.term))}):"string"===typeof this.options.source? +(g=this.options.source,this.source=function(d,e){c.xhr&&c.xhr.abort();c.xhr=b.ajax({url:g,data:d,dataType:"json",autocompleteRequest:++a,success:function(b){this.autocompleteRequest===a&&e(b)},error:function(){this.autocompleteRequest===a&&e([])}})}):this.source=this.options.source},search:function(b,a){b=null!=b?b:this.element.val();this.term=this.element.val();if(b.length").data("item.autocomplete",d).append(b("").text(d.label)).appendTo(a)},_move:function(b,a){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(b)||this.menu.last()&& +/^next/.test(b))this.element.val(this.term),this.menu.deactivate();else this.menu[b](a);else this.search(null,a)},widget:function(){return this.menu.element}});b.extend(b.ui.autocomplete,{escapeRegex:function(b){return b.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,d){var g=RegExp(b.ui.autocomplete.escapeRegex(d),"i");return b.grep(a,function(b){return g.test(b.label||b.value||b)})}})})(jQuery); +(function(b){b.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){b(c.target).closest(".ui-menu-item a").length&&(c.preventDefault(),a.select(c))});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,b(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(b,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,g=this.element.scrollTop(),h=this.element.height();0>d?this.element.scrollTop(g+d):d>=h&&this.element.scrollTop(g+d-h+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",b,{item:c})},deactivate:function(){this.active&& +(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(b){this.move("next",".ui-menu-item:first",b)},previous:function(b){this.move("prev",".ui-menu-item:last",b)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(b,c,d){this.active?(b=this.active[b+"All"](".ui-menu-item").eq(0),b.length?this.activate(d, +b):this.activate(d,this.element.children(c))):this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var c=this.active.offset().top,d=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var a=b(this).offset().top-c-d+b(this).height();return 10>a&&-10a&&-10").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),d=this.options.icons,h=d.primary&&d.secondary,e=[];d.primary||d.secondary?(this.options.text&&e.push("ui-button-text-icon"+(h?"s":d.primary?"-primary":"-secondary")),d.primary&&a.prepend(""),d.secondary&&a.append(""),this.options.text||(e.push(h?"ui-button-icons-only": +"ui-button-icon-only"),this.hasTitle||a.attr("title",c))):e.push("ui-button-text-only");a.addClass(e.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){"disabled"===a&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a="ltr"===this.element.css("direction"); +this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); +b.Widget.prototype.destroy.call(this)}})})(jQuery); +(function(b,a){var c={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},d={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},g=b.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};b.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(a){var c= +b(this).css(a).offset().top;0>c&&b(this).css("top",a.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");"string"!==typeof this.originalTitle&&(this.originalTitle="");this.options.title=this.options.title||this.originalTitle;var a=this,c=a.options,f=c.title||" ",i=b.ui.dialog.getTitleId(a.element),d=(a.uiDialog=b("
          ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +c.dialogClass).css({zIndex:c.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(f){if(c.closeOnEscape&&f.keyCode&&f.keyCode===b.ui.keyCode.ESCAPE){a.close(f);f.preventDefault()}}).attr({role:"dialog","aria-labelledby":i}).mousedown(function(b){a.moveToTop(false,b)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(d);var g=(a.uiDialogTitlebar=b("
          ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(d), +l=b('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){l.addClass("ui-state-hover")},function(){l.removeClass("ui-state-hover")}).focus(function(){l.addClass("ui-state-focus")}).blur(function(){l.removeClass("ui-state-focus")}).click(function(b){a.close(b);return false}).appendTo(g);(a.uiDialogTitlebarCloseText=b("")).addClass("ui-icon ui-icon-closethick").text(c.closeText).appendTo(l);b("").addClass("ui-dialog-title").attr("id", +i).html(f).prependTo(g);b.isFunction(c.beforeclose)&&!b.isFunction(c.beforeClose)&&(c.beforeClose=c.beforeclose);g.find("*").add(g).disableSelection();c.draggable&&b.fn.draggable&&a._makeDraggable();c.resizable&&b.fn.resizable&&a._makeResizable();a._createButtons(c.buttons);a._isOpen=!1;b.fn.bgiframe&&d.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){this.overlay&&this.overlay.destroy();this.uiDialog.hide();this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +this.uiDialog.remove();this.originalTitle&&this.element.attr("title",this.originalTitle);return this},widget:function(){return this.uiDialog},close:function(a){var c=this,f,d;if(!1!==c._trigger("beforeClose",a))return c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",a)}):(c.uiDialog.hide(),c._trigger("close",a)),b.ui.dialog.overlay.resize(),c.options.modal&&(f=0,b(".ui-dialog").each(function(){if(this!== +c.uiDialog[0]){d=b(this).css("z-index");isNaN(d)||(f=Math.max(f,d))}}),b.ui.dialog.maxZ=f),c},isOpen:function(){return this._isOpen},moveToTop:function(a,c){var f=this.options;if(f.modal&&!a||!f.stack&&!f.modal)return this._trigger("focus",c);f.zIndex>b.ui.dialog.maxZ&&(b.ui.dialog.maxZ=f.zIndex);this.overlay&&(b.ui.dialog.maxZ+=1,this.overlay.$el.css("z-index",b.ui.dialog.overlay.maxZ=b.ui.dialog.maxZ));f={scrollTop:this.element.attr("scrollTop"),scrollLeft:this.element.attr("scrollLeft")};b.ui.dialog.maxZ+= +1;this.uiDialog.css("z-index",b.ui.dialog.maxZ);this.element.attr(f);this._trigger("focus",c);return this},open:function(){if(!this._isOpen){var a=this.options,c=this.uiDialog;this.overlay=a.modal?new b.ui.dialog.overlay(this):null;this._size();this._position(a.position);c.show(a.show);this.moveToTop(!0);a.modal&&c.bind("keypress.ui-dialog",function(a){if(a.keyCode===b.ui.keyCode.TAB){var c=b(":tabbable",this),d=c.filter(":first"),c=c.filter(":last");if(a.target===c[0]&&!a.shiftKey)return d.focus(1), +!1;if(a.target===d[0]&&a.shiftKey)return c.focus(1),!1}});b(this.element.find(":tabbable").get().concat(c.find(".ui-dialog-buttonpane :tabbable").get().concat(c.get()))).eq(0).focus();this._isOpen=!0;this._trigger("open");return this}},_createButtons:function(a){var c=this,f=!1,d=b("
          ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),j=b("
          ").addClass("ui-dialog-buttonset").appendTo(d);c.uiDialog.find(".ui-dialog-buttonpane").remove();"object"===typeof a&& +null!==a&&b.each(a,function(){return!(f=!0)});f&&(b.each(a,function(a,f){var f=b.isFunction(f)?{click:f,text:a}:f,d=b('').click(function(){f.click.apply(c.element[0],arguments)}).appendTo(j);b.each(f,function(b,a){if("click"!==b)if(b in g)d[b](a);else d.attr(b,a)});b.fn.button&&d.button()}),d.appendTo(c.uiDialog))},_makeDraggable:function(){function a(b){return{position:b.position,offset:b.offset}}var c=this,f=c.options,d=b(document),g;c.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", +handle:".ui-dialog-titlebar",containment:"document",start:function(d,i){g="auto"===f.height?"auto":b(this).height();b(this).height(b(this).height()).addClass("ui-dialog-dragging");c._trigger("dragStart",d,a(i))},drag:function(b,f){c._trigger("drag",b,a(f))},stop:function(k,l){f.position=[l.position.left-d.scrollLeft(),l.position.top-d.scrollTop()];b(this).removeClass("ui-dialog-dragging").height(g);c._trigger("dragStop",k,a(l));b.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function d(b){return{originalPosition:b.originalPosition, +originalSize:b.originalSize,position:b.position,size:b.size}}var c=c===a?this.options.resizable:c,f=this,i=f.options,g=f.uiDialog.css("position"),c="string"===typeof c?c:"n,e,s,w,se,sw,ne,nw";f.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:f.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:f._minHeight(),handles:c,start:function(a,c){b(this).addClass("ui-dialog-resizing");f._trigger("resizeStart",a,d(c))},resize:function(b,a){f._trigger("resize", +b,d(a))},stop:function(a,c){b(this).removeClass("ui-dialog-resizing");i.height=b(this).height();i.width=b(this).width();f._trigger("resizeStop",a,d(c));b.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var b=this.options;return"auto"===b.height?b.minHeight:Math.min(b.minHeight,b.height)},_position:function(a){var c=[],f=[0,0],d;if(a){if("string"===typeof a||"object"===typeof a&&"0"in a)c=a.split?a.split(" "): +[a[0],a[1]],1===c.length&&(c[1]=c[0]),b.each(["left","top"],function(b,a){+c[b]===c[b]&&(f[b]=c[b],c[b]=a)}),a={my:c.join(" "),at:c.join(" "),offset:f.join(" ")};a=b.extend({},b.ui.dialog.prototype.options.position,a)}else a=b.ui.dialog.prototype.options.position;(d=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(b.extend({of:window},a));d||this.uiDialog.hide()},_setOptions:function(a){var g=this,f={},i=!1;b.each(a,function(b,a){g._setOption(b,a);b in +c&&(i=!0);b in d&&(f[b]=a)});i&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(a,c){var f=this.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":this._createButtons(c);break;case "closeText":this.uiDialogTitlebarCloseText.text(""+c);break;case "dialogClass":f.removeClass(this.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+c);break;case "disabled":c?f.addClass("ui-dialog-disabled"): +f.removeClass("ui-dialog-disabled");break;case "draggable":var d=f.is(":data(draggable)");d&&!c&&f.draggable("destroy");!d&&c&&this._makeDraggable();break;case "position":this._position(c);break;case "resizable":(d=f.is(":data(resizable)"))&&!c&&f.resizable("destroy");d&&"string"===typeof c&&f.resizable("option","handles",c);!d&&!1!==c&&this._makeResizable(c);break;case "title":b(".ui-dialog-title",this.uiDialogTitlebar).html(""+(c||" "))}b.Widget.prototype._setOption.apply(this,arguments)}, +_size:function(){var a=this.options,c,f,d=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});a.minWidth>a.width&&(a.width=a.minWidth);c=this.uiDialog.css({height:"auto",width:a.width}).height();f=Math.max(0,a.minHeight-c);"auto"===a.height?b.support.minHeight?this.element.css({minHeight:f,height:"auto"}):(this.uiDialog.show(),a=this.element.css("height","auto").height(),d||this.uiDialog.hide(),this.element.height(Math.max(a,f))):this.element.height(Math.max(a.height- +c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});b.extend(b.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(b){b=b.attr("id");b||(b=this.uuid+=1);return"ui-dialog-title-"+b},overlay:function(a){this.$el=b.ui.dialog.overlay.create(a)}});b.extend(b.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:b.map("focus mousedown mouseup keydown keypress click".split(" "),function(b){return b+".dialog-overlay"}).join(" "), +create:function(a){0===this.instances.length&&(setTimeout(function(){b.ui.dialog.overlay.instances.length&&b(document).bind(b.ui.dialog.overlay.events,function(a){if(b(a.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});b.fn.bgiframe&&c.bgiframe();this.instances.push(c);return c},destroy:function(a){var c=b.inArray(a,this.instances);-1!=c&&this.oldInstances.push(this.instances.splice(c,1)[0]);0===this.instances.length&&b([document,window]).unbind(".dialog-overlay");a.remove();var f=0;b.each(this.instances,function(){f=Math.max(f,this.css("z-index"))});this.maxZ=f},height:function(){var a,c;return b.browser.msie&&7>b.browser.version?(a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight), +c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),a").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+("min"===c.range||"max"===c.range?" ui-slider-range-"+c.range:""))}for(var e=d.length;e"); +this.handles=d.add(b(h.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(b){b.preventDefault()}).hover(function(){c.disabled||b(this).addClass("ui-state-hover")},function(){b(this).removeClass("ui-state-hover")}).focus(function(){c.disabled?b(this).blur():(b(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),b(this).addClass("ui-state-focus"))}).blur(function(){b(this).removeClass("ui-state-focus")});this.handles.each(function(a){b(this).data("index.ui-slider-handle", +a)});this.handles.keydown(function(c){var d=!0,g=b(this).data("index.ui-slider-handle"),e,h,m;if(!a.options.disabled){switch(c.keyCode){case b.ui.keyCode.HOME:case b.ui.keyCode.END:case b.ui.keyCode.PAGE_UP:case b.ui.keyCode.PAGE_DOWN:case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(d=!1,!a._keySliding&&(a._keySliding=!0,b(this).addClass("ui-state-active"),e=a._start(c,g),!1===e))return}m=a.options.step;e=a.options.values&&a.options.values.length?h=a.values(g): +h=a.value();switch(c.keyCode){case b.ui.keyCode.HOME:h=a._valueMin();break;case b.ui.keyCode.END:h=a._valueMax();break;case b.ui.keyCode.PAGE_UP:h=a._trimAlignValue(e+(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(e-(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:if(e===a._valueMax())return;h=a._trimAlignValue(e+m);break;case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(e===a._valueMin())return;h=a._trimAlignValue(e-m)}a._slide(c, +g,h);return d}}).keyup(function(c){var d=b(this).data("index.ui-slider-handle");a._keySliding&&(a._keySliding=!1,a._stop(c,d),a._change(c,d),b(this).removeClass("ui-state-active"))});this._refreshValue();this._animateOff=!1},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return this},_mouseCapture:function(a){var c= +this.options,d,g,h,e,f;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();d=this._normValueFromMouse({x:a.pageX,y:a.pageY});g=this._valueMax()-this._valueMin()+1;e=this;this.handles.each(function(a){var c=Math.abs(d-e.values(a));g>c&&(g=c,h=b(this),f=a)});!0===c.range&&this.values(1)===c.min&&(f+=1,h=b(this.handles[f]));if(!1===this._start(a,f))return!1;this._mouseSliding=!0;e._handleIndex=f;h.addClass("ui-state-active").focus(); +c=h.offset();this._clickOffset=!b(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-c.left-h.width()/2,top:a.pageY-c.top-h.height()/2-(parseInt(h.css("borderTopWidth"),10)||0)-(parseInt(h.css("borderBottomWidth"),10)||0)+(parseInt(h.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,f,d);return this._animateOff=!0},_mouseStart:function(){return!0},_mouseDrag:function(b){var c=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b, +this._handleIndex,c);return!1},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=!1;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(b){var c;"horizontal"===this.orientation?(c=this.elementSize.width,b=b.x-this.elementOffset.left-(this._clickOffset? +this._clickOffset.left:0)):(c=this.elementSize.height,b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));c=b/c;1c&&(c=0);"vertical"===this.orientation&&(c=1-c);b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+c*b)},_start:function(b,c){var d={handle:this.handles[c],value:this.value()};this.options.values&&this.options.values.length&&(d.value=this.values(c),d.values=this.values());return this._trigger("start",b,d)},_slide:function(b, +c,d){var g;if(this.options.values&&this.options.values.length){g=this.values(c?0:1);if(2===this.options.values.length&&!0===this.options.range&&(0===c&&d>g||1===c&&d=this._valueMax())return this._valueMax();var c=0=c&&(alignValue+=0",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
        • #{label}
        • "},_create:function(){this._tabify(!0)},_setOption:function(b,a){"selected"==b?this.options.collapsible&&a==this.options.selected||this.select(a): +(this.options[b]=a,this._tabify())},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+ ++c},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var a=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++d);return b.cookie.apply(null,[a].concat(b.makeArray(arguments)))},_ui:function(b,a){return{tab:b,panel:a,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var a= +b(this);a.html(a.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function d(a,c){a.css("display","");!b.support.opacity&&c.opacity&&a[0].style.removeAttribute("filter")}var e=this,f=this.options,i=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=b(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return b("a",this)[0]});this.panels=b([]);this.anchors.each(function(a,c){var d=b(c).attr("href"),g=d.split("#")[0],h;if(g&&(g===location.toString().split("#")[0]|| +(h=b("base")[0])&&g===h.href))d=c.hash,c.href=d;i.test(d)?e.panels=e.panels.add(e.element.find(e._sanitizeSelector(d))):d&&"#"!==d?(b.data(c,"href.tabs",d),b.data(c,"load.tabs",d.replace(/#.*$/,"")),d=e._tabId(c),c.href="#"+d,g=e.element.find("#"+d),g.length||(g=b(f.panelTemplate).attr("id",d).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(e.panels[a-1]||e.list),g.data("destroy.tabs",!0)),e.panels=e.panels.add(g)):f.disabled.push(a)});c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"), +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),f.selected===a?(location.hash&&this.anchors.each(function(b,a){if(a.hash==location.hash)return f.selected=b,!1}),"number"!==typeof f.selected&&f.cookie&&(f.selected=parseInt(e._cookie(),10)),"number"!==typeof f.selected&&this.lis.filter(".ui-tabs-selected").length&&(f.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"))),f.selected=f.selected||(this.lis.length?0:-1)):null===f.selected&&(f.selected=-1),f.selected=0<=f.selected&&this.anchors[f.selected]||0>f.selected?f.selected:0,f.disabled=b.unique(f.disabled.concat(b.map(this.lis.filter(".ui-state-disabled"),function(b){return e.lis.index(b)}))).sort(),-1!=b.inArray(f.selected,f.disabled)&&f.disabled.splice(b.inArray(f.selected,f.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"), +0<=f.selected&&this.anchors.length&&(e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(f.selected).addClass("ui-tabs-selected ui-state-active"),e.element.queue("tabs",function(){e._trigger("show",null,e._ui(e.anchors[f.selected],e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash))[0]))}),this.load(f.selected)),b(window).bind("unload",function(){e.lis.add(e.anchors).unbind(".tabs");e.lis=e.anchors=e.panels=null})):f.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[f.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");f.cookie&&this._cookie(f.selected,f.cookie);for(var c=0,j;j=this.lis[c];c++)b(j)[-1!=b.inArray(c,f.disabled)&&!b(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");!1===f.cache&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if("mouseover"!==f.event){var k=function(b,a){a.is(":not(.ui-state-disabled)")&&a.addClass("ui-state-"+b)};this.lis.bind("mouseover.tabs", +function(){k("hover",b(this))});this.lis.bind("mouseout.tabs",function(){b(this).removeClass("ui-state-hover")});this.anchors.bind("focus.tabs",function(){k("focus",b(this).closest("li"))});this.anchors.bind("blur.tabs",function(){b(this).closest("li").removeClass("ui-state-focus")})}var l,m;f.fx&&(b.isArray(f.fx)?(l=f.fx[0],m=f.fx[1]):l=m=f.fx);var p=m?function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.hide().removeClass("ui-tabs-hide").animate(m,m.duration||"normal", +function(){d(c,m);e._trigger("show",null,e._ui(a,c[0]))})}:function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.removeClass("ui-tabs-hide");e._trigger("show",null,e._ui(a,c[0]))},n=l?function(b,a){a.animate(l,l.duration||"normal",function(){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");d(a,l);e.element.dequeue("tabs")})}:function(b,a){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");e.element.dequeue("tabs")}; +this.anchors.bind(f.event+".tabs",function(){var a=this,c=b(a).closest("li"),d=e.panels.filter(":not(.ui-tabs-hide)"),i=e.element.find(e._sanitizeSelector(a.hash));if(c.hasClass("ui-tabs-selected")&&!f.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||e.panels.filter(":animated").length||e._trigger("select",null,e._ui(this,i[0]))===false){this.blur();return false}f.selected=e.anchors.index(this);e.abort();if(f.collapsible){if(c.hasClass("ui-tabs-selected")){f.selected= +-1;f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){n(a,d)}).dequeue("tabs");this.blur();return false}if(!d.length){f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this));this.blur();return false}}f.cookie&&e._cookie(f.selected,f.cookie);if(i.length){d.length&&e.element.queue("tabs",function(){n(a,d)});e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +b.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){"string"==typeof b&&(b=this.anchors.index(this.anchors.filter("[href$="+b+"]")));return b},destroy:function(){var a=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var a= +b.data(this,"href.tabs");a&&(this.href=a);var c=b(this).unbind(".tabs");b.each(["href","load","cache"],function(b,a){c.removeData(a+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){b.data(this,"destroy.tabs")?b(this).remove():b(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});a.cookie&&this._cookie(null,a.cookie);return this},add:function(c, +d,e){e===a&&(e=this.anchors.length);var f=this,i=this.options,d=b(i.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),c=!c.indexOf("#")?c.replace("#",""):this._tabId(b("a",d)[0]);d.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+c);j.length||(j=b(i.panelTemplate).attr("id",c).data("destroy.tabs",!0));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");e>=this.lis.length?(d.appendTo(this.list),j.appendTo(this.list[0].parentNode)): +(d.insertBefore(this.lis[e]),j.insertBefore(this.panels[e]));i.disabled=b.map(i.disabled,function(b){return b>=e?++b:b});this._tabify();1==this.anchors.length&&(i.selected=0,d.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0));this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(a){var a=this._getIndex(a),c=this.options,d=this.lis.eq(a).remove(), +f=this.panels.eq(a).remove();d.hasClass("ui-tabs-selected")&&1=a?--b:b});this._tabify();this._trigger("remove",null,this._ui(d.find("a")[0],f[0]));return this},enable:function(a){var a=this._getIndex(a),c=this.options;if(-1!=b.inArray(a,c.disabled))return this.lis.eq(a).removeClass("ui-state-disabled"),c.disabled=b.grep(c.disabled,function(b){return b!= +a}),this._trigger("enable",null,this._ui(this.anchors[a],this.panels[a])),this},disable:function(b){var b=this._getIndex(b),a=this.options;b!=a.selected&&(this.lis.eq(b).addClass("ui-state-disabled"),a.disabled.push(b),a.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b])));return this},select:function(b){b=this._getIndex(b);if(-1==b)if(this.options.collapsible&&-1!=this.options.selected)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+ +".tabs");return this},load:function(a){var a=this._getIndex(a),c=this,d=this.options,f=this.anchors.eq(a)[0],i=b.data(f,"load.tabs");this.abort();if(!i||0!==this.element.queue("tabs").length&&b.data(f,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(a).addClass("ui-state-processing");if(d.spinner){var j=b("span",f);j.data("label.tabs",j.html()).html(d.spinner)}this.xhr=b.ajax(b.extend({},d.ajaxOptions,{url:i,success:function(i,j){c.element.find(c._sanitizeSelector(f.hash)).html(i);c._cleanup(); +d.cache&&b.data(f,"cache.tabs",!0);c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.success(i,j)}catch(m){}},error:function(b,i){c._cleanup();c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.error(b,i,a,f)}catch(m){}}}));c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(!1,!0);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));this.xhr&&(this.xhr.abort(),delete this.xhr);this._cleanup(); +return this},url:function(b,a){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",a);return this},length:function(){return this.anchors.length}});b.extend(b.ui.tabs,{version:"1.8.14"});b.extend(b.ui.tabs.prototype,{rotation:null,rotate:function(b,a){var c=this,f=this.options,d=c._rotate||(c._rotate=function(a){clearTimeout(c.rotation);c.rotation=setTimeout(function(){var b=f.selected;c.select(++b'))}function d(a){return a.bind("mouseout",function(a){a=b(a.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"); +a.length&&a.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){c=b(c.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!b.datepicker._isDisabledDatepicker(e.inline?a.parent()[0]:e.input[0])&&c.length)c.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),c.addClass("ui-state-hover"),c.hasClass("ui-datepicker-prev")&&c.addClass("ui-datepicker-prev-hover"),c.hasClass("ui-datepicker-next")&& +c.addClass("ui-datepicker-next-hover")})}function g(c,d){b.extend(c,d);for(var e in d)if(null==d[e]||d[e]==a)c[e]=d[e];return c}b.extend(b.ui,{datepicker:{version:"1.8.14"}});var h=(new Date).getTime(),e;b.extend(c.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(b){g(this._defaults,b||{});return this},_attachDatepicker:function(a,c){var d=null,e;for(e in this._defaults){var g= +a.getAttribute("date:"+e);if(g){d=d||{};try{d[e]=eval(g)}catch(m){d[e]=g}}}e=a.nodeName.toLowerCase();g="div"==e||"span"==e;a.id||(this.uuid+=1,a.id="dp"+this.uuid);var h=this._newInst(b(a),g);h.settings=b.extend({},c||{},d||{});"input"==e?this._connectDatepicker(a,h):g&&this._inlineDatepicker(a,h)},_newInst:function(a,c){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:c,dpDiv:!c?this.dpDiv:d(b('
          '))}},_connectDatepicker:function(a,c){var d=b(a);c.append=b([]);c.trigger=b([]);d.hasClass(this.markerClassName)||(this._attachments(d,c),d.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b,a){return this._get(c,a)}),this._autoSize(c),b.data(a,"datepicker", +c))},_attachments:function(a,c){var d=this._get(c,"appendText"),e=this._get(c,"isRTL");c.append&&c.append.remove();d&&(c.append=b(''+d+""),a[e?"before":"after"](c.append));a.unbind("focus",this._showDatepicker);c.trigger&&c.trigger.remove();d=this._get(c,"showOn");("focus"==d||"both"==d)&&a.focus(this._showDatepicker);if("button"==d||"both"==d){var d=this._get(c,"buttonText"),g=this._get(c,"buttonImage");c.trigger=b(this._get(c,"buttonImageOnly")?b("").addClass(this._triggerClass).attr({src:g, +alt:d,title:d}):b('').addClass(this._triggerClass).html(""==g?d:b("").attr({src:g,alt:d,title:d})));a[e?"before":"after"](c.trigger);c.trigger.click(function(){b.datepicker._datepickerShowing&&b.datepicker._lastInput==a[0]?b.datepicker._hideDatepicker():b.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(b){if(this._get(b,"autoSize")&&!b.inline){var a=new Date(2009,11,20),c=this._get(b,"dateFormat");if(c.match(/[DM]/)){var d=function(b){for(var a= +0,c=0,f=0;fa&&(a=b[f].length,c=f);return c};a.setMonth(d(this._get(b,c.match(/MM/)?"monthNames":"monthNamesShort")));a.setDate(d(this._get(b,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())}b.input.attr("size",this._formatDate(b,a).length)}},_inlineDatepicker:function(a,c){var d=b(a);d.hasClass(this.markerClassName)||(d.addClass(this.markerClassName).append(c.dpDiv).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b, +a){return this._get(c,a)}),b.data(a,"datepicker",c),this._setDate(c,this._getDefaultDate(c),!0),this._updateDatepicker(c),this._updateAlternate(c),c.dpDiv.show())},_dialogDatepicker:function(a,c,d,e,h){a=this._dialogInst;a||(this.uuid+=1,this._dialogInput=b(''),this._dialogInput.keydown(this._doKeyDown),b("body").append(this._dialogInput),a=this._dialogInst=this._newInst(this._dialogInput,!1), +a.settings={},b.data(this._dialogInput[0],"datepicker",a));g(a.settings,e||{});c=c&&c.constructor==Date?this._formatDate(a,c):c;this._dialogInput.val(c);this._pos=h?h.length?h:[h.pageX,h.pageY]:null;this._pos||(this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)]);this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+ +"px");a.settings.onSelect=d;this._inDialog=!0;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);b.blockUI&&b.blockUI(this.dpDiv);b.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();b.removeData(a,"datepicker");"input"==e?(d.append.remove(),d.trigger.remove(),c.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown", +this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"==e||"span"==e)&&c.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!1,d.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass),c.children().removeClass("ui-state-disabled"), +c.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!0,d.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass), +c.children().addClass("ui-state-disabled"),c.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(b){if(!b)return!1;for(var a=0;ae||!d||-1n&&n>e?Math.abs(c.left+e-n):0);c.top-=Math.min(c.top,c.top+g>q&&q>g?Math.abs(g+p):0);return c},_findPos:function(a){for(var c= +this._get(this._getInst(a),"isRTL");a&&("hidden"==a.type||1!=a.nodeType||b.expr.filters.hidden(a));)a=a[c?"previousSibling":"nextSibling"];a=b(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");b&&b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var c=this._curInst;if(c&&!(a&&c!=b.data(a,"datepicker"))&&this._datepickerShowing){var a=this._get(c,"showAnim"),d=this._get(c,"duration"),e=function(){b.datepicker._tidyDialog(c); +this._curInst=null};if(b.effects&&b.effects[a])c.dpDiv.hide(a,b.datepicker._get(c,"showOptions"),d,e);else c.dpDiv["slideDown"==a?"slideUp":"fadeIn"==a?"fadeOut":"hide"](a?d:null,e);a||e();b.datepicker._triggerOnClose(c);this._datepickerShowing=!1;this._lastInput=null;this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),b.blockUI&&(b.unblockUI(),b("body").append(this.dpDiv)));this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, +_checkExternalClick:function(a){b.datepicker._curInst&&(a=b(a.target),a[0].id!=b.datepicker._mainDivId&&(0==a.parents("#"+b.datepicker._mainDivId).length&&!a.hasClass(b.datepicker.markerClassName)&&!a.hasClass(b.datepicker._triggerClass)&&b.datepicker._datepickerShowing&&(!b.datepicker._inDialog||!b.blockUI))&&b.datepicker._hideDatepicker())},_adjustDate:function(a,c,d){var a=b(a),e=this._getInst(a[0]);this._isDisabledDatepicker(a[0])||(this._adjustInstDate(e,c+("M"==d?this._get(e,"showCurrentAtPos"): +0),d),this._updateDatepicker(e))},_gotoToday:function(a){var a=b(a),c=this._getInst(a[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate();c.drawMonth=c.selectedMonth=d.getMonth();c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c);this._adjustDate(a)},_selectMonthYear:function(a,c,d){var a=b(a),e=this._getInst(a[0]);e._selectingMonthYear= +!1;e["selected"+("M"==d?"Month":"Year")]=e["draw"+("M"==d?"Month":"Year")]=parseInt(c.options[c.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var c=this._getInst(b(a)[0]);c.input&&c._selectingMonthYear&&setTimeout(function(){c.input.focus()},0);c._selectingMonthYear=!c._selectingMonthYear},_selectDay:function(a,c,d,e){var g=b(a);!b(e).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(g[0])&&(g=this._getInst(g[0]),g.selectedDay=g.currentDay= +b("a",e).html(),g.selectedMonth=g.currentMonth=c,g.selectedYear=g.currentYear=d,this._selectDate(a,this._formatDate(g,g.currentDay,g.currentMonth,g.currentYear)))},_clearDate:function(a){a=b(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,c){var d=this._getInst(b(a)[0]),c=null!=c?c:this._formatDate(d);d.input&&d.input.val(c);this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[c,d]):d.input&&d.input.trigger("change");d.inline?this._updateDatepicker(d): +(this._hideDatepicker(),this._lastInput=d.input[0],"object"!=typeof d.input[0]&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var c=this._get(a,"altField");if(c){var d=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),g=this.formatDate(d,e,this._getFormatConfig(a));b(c).each(function(){b(this).val(g)})}},noWeekends:function(a){a=a.getDay();return[0a,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b= +a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,c,d){if(null==a||null==c)throw"Invalid arguments";c="object"==typeof c?c.toString():c+"";if(""==c)return null;for(var e=(d?d.shortYearCutoff:null)||this._defaults.shortYearCutoff,e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),g=(d?d.dayNamesShort:null)||this._defaults.dayNamesShort,h=(d?d.dayNames:null)||this._defaults.dayNames,p=(d?d.monthNamesShort:null)||this._defaults.monthNamesShort, +n=(d?d.monthNames:null)||this._defaults.monthNames,q=d=-1,o=-1,w=-1,r=!1,u=function(b){(b=E+1d&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=e?0:-100));if(-1b.getYear()%100?"0":"")+b.getYear()%100;break;case "@":o+=b.getTime();break;case "!":o+=1E4*b.getTime()+this._ticksTo1970;break;case "'":h("'")?o+="'":w=!0;break;default:o+=a.charAt(r)}return o},_possibleChars:function(a){for(var b= +"",c=!1,d=function(b){(b=e+1n&&(n+=12,s--);if(u)for(var v=this._daylightSavingAdjust(new Date(u.getFullYear(),u.getMonth()-p[0]*p[1]+1,u.getDate())),v=r&&vv;)n--,0>n&&(n=11,s--);a.drawMonth=n;a.drawYear=s;var v=this._get(a,"prevText"),v=!m?v:this.formatDate(v,this._daylightSavingAdjust(new Date(s,n-q,1)),this._getFormatConfig(a)), +v=this._canAdjustMonth(a,-1,s,n)?''+v+"":g?"":''+v+"",z=this._get(a,"nextText"),z=!m?z:this.formatDate(z,this._daylightSavingAdjust(new Date(s, +n+q,1)),this._getFormatConfig(a)),g=this._canAdjustMonth(a,1,s,n)?''+z+"":g?"":''+z+"",q=this._get(a,"currentText"),z=this._get(a,"gotoCurrent")&& +a.currentDay?w:c,q=!m?q:this.formatDate(q,z,this._getFormatConfig(a)),m=!a.inline?'":"",e=e?'
          '+(d?m:"")+(this._isInRange(a,z)?'":"")+(d?"":m)+"
          ":"",m=parseInt(this._get(a,"firstDay"),10),m=isNaN(m)?0:m,q=this._get(a,"showWeek"),z=this._get(a,"dayNames");this._get(a,"dayNamesShort");var B=this._get(a,"dayNamesMin"),E=this._get(a,"monthNames"),C=this._get(a,"monthNamesShort"),O=this._get(a,"beforeShowDay"),K=this._get(a,"showOtherMonths"),S=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var P=this._getDefaultDate(a),G="",H=0;H'+(/all|left/.test(A)&& +0==H?d?g:v:"")+(/all|right/.test(A)&&0==H?d?v:g:"")+this._generateMonthYearHeader(a,n,s,r,u,0
          '),D=q?'":"",A=0;7>A;A++)var x=(A+m)%7,D=D+("'+B[x]+"");y+=D+"";D=this._getDaysInMonth(s,n);s==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay, +D));A=(this._getFirstDayOfMonth(s,n)-m+7)%7;D=Math.ceil((A+D)/7);this.maxRows=D=o?this.maxRows>D?this.maxRows:D:D;for(var x=this._daylightSavingAdjust(new Date(s,n,1-A)),R=0;R",M=!q?"":'",A=0;7>A;A++){var J=O?O.apply(a.input?a.input[0]:null,[x]):[!0,""],F=x.getMonth()!=n,N=F&&!S||!J[0]||r&&xu,M=M+('");x.setDate(x.getDate()+1);x=this._daylightSavingAdjust(x)}y+=M+""}n++;11
          '+this._get(a,"weekHeader")+"
          '+this._get(a,"calculateWeek")(x)+""+(F&&!K? +" ":N?''+x.getDate()+"":''+x.getDate()+"")+"
          "+(o?"
        "+(0
        ':""):"");L+=y}G+=L}G+=e+(b.browser.msie&& +7>parseInt(b.browser.version,10)&&!a.inline?'':"");a._keyEvent=!1;return G},_generateMonthYearHeader:function(a,b,c,d,e,g,p,n){var q=this._get(a,"changeMonth"),o=this._get(a,"changeYear"),w=this._get(a,"showMonthAfterYear"),r='
        ',u="";if(g||!q)u+=''+p[b]+"";else{for(var p=d&&d.getFullYear()==c,s=e&&e.getFullYear()==c,u=u+('"}w||(r+=u+(g||!q||!o?" ":""));if(!a.yearshtml)if(a.yearshtml="",g||!o)r+=''+c+"";else{var n=this._get(a,"yearRange").split(":"),z=(new Date).getFullYear(),p=function(a){a= +a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?z+parseInt(a,10):parseInt(a,10);return isNaN(a)?z:a},b=p(n[0]),n=Math.max(b,p(n[1]||"")),b=d?Math.max(b,d.getFullYear()):b,n=e?Math.min(n,e.getFullYear()):n;for(a.yearshtml+='";r+=a.yearshtml;a.yearshtml=null}r+=this._get(a,"yearSuffix");w&&(r+=(g||!q||!o?" ":"")+u);return r+"
        "},_adjustInstDate:function(a,b,c){var d=a.drawYear+("Y"==c?b:0),e=a.drawMonth+("M"==c?b:0),b=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+("D"==c?b:0),d=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,b)));a.selectedDay=d.getDate();a.drawMonth=a.selectedMonth=d.getMonth();a.drawYear=a.selectedYear=d.getFullYear();("M"==c|| +"Y"==c)&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),c=c&&bd?d:c},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return null==a?[1,1]:"number"==typeof a?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a, +b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),c=this._daylightSavingAdjust(new Date(c,d+(0>b?b:e[0]*e[1]),1));0>b&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<= +d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff"),b="string"!=typeof b?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);b=b?"object"==typeof b?b:this._daylightSavingAdjust(new Date(d, +c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});b.fn.datepicker=function(a){if(!this.length)return this;b.datepicker.initialized||(b(document).mousedown(b.datepicker._checkExternalClick).find("body").append(b.datepicker.dpDiv),b.datepicker.initialized=!0);var c=Array.prototype.slice.call(arguments,1);return"string"==typeof a&&("isDisabled"==a||"getDate"==a||"widget"==a)||"option"== +a&&2==arguments.length&&"string"==typeof arguments[1]?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this[0]].concat(c)):this.each(function(){typeof a=="string"?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this].concat(c)):b.datepicker._attachDatepicker(this,a)})};b.datepicker=new c;b.datepicker.initialized=!1;b.datepicker.uuid=(new Date).getTime();b.datepicker.version="1.8.14";window["DP_jQuery_"+h]=b})(jQuery); +(function(b,a){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
        ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===a)return this._value();this._setOption("value",b);return this},_setOption:function(a,d){"value"===a&&(this.options.value=d,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete"));b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;"number"!==typeof a&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change"));this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.14"})})(jQuery); +jQuery.effects||function(b,a){function c(a){var c;return a&&a.constructor==Array&&3==a.length?a:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(a))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(a))?[2.55*parseFloat(c[1]),2.55*parseFloat(c[2]),2.55*parseFloat(c[3])]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))?[parseInt(c[1],16),parseInt(c[2], +16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(a))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:/rgba\(0, 0, 0, 0\)/.exec(a)?i.transparent:i[b.trim(a).toLowerCase()]}function d(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]])for(var e=a.length;e--;)c=a[e],"string"==typeof a[c]&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c]);else for(c in a)"string"=== +typeof a[c]&&(b[c]=a[c]);return b}function g(a){var c,d;for(c in a)d=a[c],(null==d||b.isFunction(d)||c in k||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete a[c];return a}function h(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function e(a,c,d,e){"object"==typeof a&&(e=c,d=null,c=a,a=c.effect);b.isFunction(c)&&(e=c,d=null,c={});if("number"==typeof c||b.fx.speeds[c])e=d,d=c,c={};b.isFunction(d)&&(e=d,d=null);c=c||{};d=d||c.duration;d=b.fx.off?0:"number"==typeof d? +d:d in b.fx.speeds?b.fx.speeds[d]:b.fx.speeds._default;e=e||c.complete;return[a,c,d,e]}function f(a){return!a||("number"===typeof a||b.fx.speeds[a])||"string"===typeof a&&!b.effects[a]?!0:!1}b.effects={};b.each("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor borderColor color outlineColor".split(" "),function(a,d){b.fx.step[d]=function(a){if(!a.colorInit){var e;e=a.elem;var f=d,g;do{g=b.curCSS(e,f);if(g!=""&&g!="transparent"||b.nodeName(e,"body"))break;f="backgroundColor"}while(e= +e.parentNode);e=c(g);a.start=e;a.end=c(a.end);a.colorInit=true}a.elem.style[d]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var i={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139], +darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255], +maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},j=["add","remove","toggle"],k={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};b.effects.animateClass=function(a,c,e,f){b.isFunction(e)&&(f=e,e=null);return this.queue(function(){var i=b(this),o=i.attr("style")|| +" ",k=g(d.call(this)),r,u=i.attr("class");b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});r=g(d.call(this));i.attr("class",u);i.animate(h(k,r),{queue:false,duration:c,easing:e,complete:function(){b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});if(typeof i.attr("style")=="object"){i.attr("style").cssText="";i.attr("style").cssText=o}else i.attr("style",o);f&&f.apply(this,arguments);b.dequeue(this)}})})};b.fn.extend({_addClass:b.fn.addClass,addClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this, +[{add:a},c,d,e]):this._addClass(a)},_removeClass:b.fn.removeClass,removeClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this,[{remove:a},c,d,e]):this._removeClass(a)},_toggleClass:b.fn.toggleClass,toggleClass:function(c,d,e,f,g){return"boolean"==typeof d||d===a?e?b.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):b.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(a,c,d,e,f){return b.effects.animateClass.apply(this,[{add:c, +remove:a},d,e,f])}});b.extend(b.effects,{version:"1.8.14",save:function(a,b){for(var c=0;c
        ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});a.wrap(d);d=a.parent();"static"==a.css("position")?(d.css({position:"relative"}),a.css({position:"relative"})): +(b.extend(c,{position:a.css("position"),zIndex:a.css("z-index")}),b.each(["top","left","bottom","right"],function(b,d){c[d]=a.css(d);isNaN(parseInt(c[d],10))&&(c[d]="auto")}),a.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(a){return a.parent().is(".ui-effects-wrapper")?a.parent().replaceWith(a):a},setTransition:function(a,c,d,e){e=e||{};b.each(c,function(b,c){unit=a.cssUnit(c);0(b/=e/2)?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c}, +easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/ +e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:1>(b/=e/2)?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)* +b)+c},easeInOutCirc:function(a,b,c,d,e){return 1>(b/=e/2)?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var a=1.70158,f=0,g=d;if(0==b)return c;if(1==(b/=e))return c+d;f||(f=0.3*e);gb?-0.5*g*Math.pow(2,10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+c:0.5*g*Math.pow(2,-10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+d+c},easeInBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(b,c,d,e, +f,g){g==a&&(g=1.70158);return e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return 1>(c/=f/2)?e/2*c*c*(((g*=1.525)+1)*c-g)+d:e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(a,c,d,e,f){return e-b.easing.easeOutBounce(a,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+0.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+0.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+0.984375)+c},easeInOutBounce:function(a, +c,d,e,f){return c
        ").css({position:"absolute",visibility:"visible",left:-j*(e/d),top:-i*(f/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:e/d,height:f/c,left:h.left+j*(e/d)+("show"==a.options.mode?(j-Math.floor(d/2))*(e/d):0),top:h.top+i*(f/c)+("show"==a.options.mode?(i-Math.floor(c/2))*(f/c):0),opacity:"show"==a.options.mode?0:1}).animate({left:h.left+j*(e/d)+("show"==a.options.mode?0:(j-Math.floor(d/2))*(e/d)),top:h.top+ +i*(f/c)+("show"==a.options.mode?0:(i-Math.floor(c/2))*(f/c)),opacity:"show"==a.options.mode?1:0},a.duration||500);setTimeout(function(){"show"==a.options.mode?g.css({visibility:"visible"}):g.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(g[0]);g.dequeue();b("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(b){b.effects.fold=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.size||15,e=!!a.options.horizFirst,f=a.duration?a.duration/2:b.fx.speeds._default/2;b.effects.save(c,d);c.show();var i=b.effects.createWrapper(c).css({overflow:"hidden"}),j="show"==g!=e,k=j?["width","height"]:["height","width"],j=j?[i.width(),i.height()]:[i.height(),i.width()],l=/([0-9]+)%/.exec(h);l&&(h=parseInt(l[1], +10)/100*j["hide"==g?0:1]);"show"==g&&i.css(e?{height:0,width:h}:{height:h,width:0});e={};l={};e[k[0]]="show"==g?j[0]:h;l[k[1]]="show"==g?j[1]:0;i.animate(e,f,a.options.easing).animate(l,f,a.options.easing,function(){"hide"==g&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +(function(b){b.effects.highlight=function(a){return this.queue(function(){var c=b(this),d=["backgroundImage","backgroundColor","opacity"],g=b.effects.setMode(c,a.options.mode||"show"),h={backgroundColor:c.css("backgroundColor")};"hide"==g&&(h.opacity=0);b.effects.save(c,d);c.show().css({backgroundImage:"none",backgroundColor:a.options.color||"#ffff99"}).animate(h,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){g=="hide"&&c.hide();b.effects.restore(c,d);g=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(b){b.effects.pulsate=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"show");times=2*(a.options.times||5)-1;duration=a.duration?a.duration/2:b.fx.speeds._default/2;isVisible=c.is(":visible");animateTo=0;isVisible||(c.css("opacity",0).show(),animateTo=1);("hide"==d&&isVisible||"show"==d&&!isVisible)&×--;for(d=0;d
        ').appendTo(document.body).addClass(a.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(d,a.duration,a.options.easing,function(){h.remove();a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +/* + * jQuery Highlight plugin + * Based on highlight v3 by Johann Burkard + * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html + * Copyright (c) 2009 Bartek Szopka http://bartaz.github.com/sandbox.js/jquery.highlight.html + * Licensed under MIT license. + */ +jQuery.extend({highlight:function(a,c,b,e){if(a.nodeType===3){if(c=a.data.match(c)){b=document.createElement(b||"span");b.className=e||"highlight";a=a.splitText(c.index);a.splitText(c[0].length);e=a.cloneNode(true);b.appendChild(e);a.parentNode.replaceChild(b,a);return 1}}else if(a.nodeType===1&&a.childNodes&&!/(script|style)/i.test(a.tagName)&&!(a.tagName===b.toUpperCase()&&a.className===e))for(var d=0;d
        ').appendTo("body"); + var d = { width: $c.width() - $c[0].clientWidth, height: $c.height() - $c[0].clientHeight }; + $c.remove(); + window.scrollbarWidth = d.width; + window.scrollbarHeight = d.height; + return dim.match(/^(width|height)$/) ? d[dim] : d; + } + + + /** + * Returns hash container 'display' and 'visibility' + * + * @see $.swap() - swaps CSS, runs callback, resets CSS + */ +, showInvisibly: function ($E, force) { + if (!$E) return {}; + if (!$E.jquery) $E = $($E); + var CSS = { + display: $E.css('display') + , visibility: $E.css('visibility') + }; + if (force || CSS.display === "none") { // only if not *already hidden* + $E.css({ display: "block", visibility: "hidden" }); // show element 'invisibly' so can be measured + return CSS; + } + else return {}; + } + + /** + * Returns data for setting size of an element (container or a pane). + * + * @see _create(), onWindowResize() for container, plus others for pane + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, outerWidth, innerHeight, etc + */ +, getElementDimensions: function ($E) { + var + d = {} // dimensions hash + , x = d.css = {} // CSS hash + , i = {} // TEMP insets + , b, p // TEMP border, padding + , N = $.layout.cssNum + , off = $E.offset() + ; + d.offsetLeft = off.left; + d.offsetTop = off.top; + + $.each("Left,Right,Top,Bottom".split(","), function (idx, e) { // e = edge + b = x["border" + e] = $.layout.borderWidth($E, e); + p = x["padding"+ e] = $.layout.cssNum($E, "padding"+e); + i[e] = b + p; // total offset of content from outer side + d["inset"+ e] = p; + }); + + d.offsetWidth = $E.innerWidth(); // offsetWidth is used in calc when doing manual resize + d.offsetHeight = $E.innerHeight(); // ditto + d.outerWidth = $E.outerWidth(); + d.outerHeight = $E.outerHeight(); + d.innerWidth = max(0, d.outerWidth - i.Left - i.Right); + d.innerHeight = max(0, d.outerHeight - i.Top - i.Bottom); + + x.width = $E.width(); + x.height = $E.height(); + x.top = N($E,"top",true); + x.bottom = N($E,"bottom",true); + x.left = N($E,"left",true); + x.right = N($E,"right",true); + + //d.visible = $E.is(":visible");// && x.width > 0 && x.height > 0; + + return d; + } + +, getElementCSS: function ($E, list) { + var + CSS = {} + , style = $E[0].style + , props = list.split(",") + , sides = "Top,Bottom,Left,Right".split(",") + , attrs = "Color,Style,Width".split(",") + , p, s, a, i, j, k + ; + for (i=0; i < props.length; i++) { + p = props[i]; + if (p.match(/(border|padding|margin)$/)) + for (j=0; j < 4; j++) { + s = sides[j]; + if (p === "border") + for (k=0; k < 3; k++) { + a = attrs[k]; + CSS[p+s+a] = style[p+s+a]; + } + else + CSS[p+s] = style[p+s]; + } + else + CSS[p] = style[p]; + }; + return CSS + } + + /** + * Return the innerWidth for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerWidth (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerWidth of the elem by subtracting padding and borders + */ +, cssWidth: function ($E, outerWidth) { + var + b = $.layout.borderWidth + , n = $.layout.cssNum + ; + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerWidth <= 0) return 0; + + if (!$.support.boxModel) return outerWidth; + + // strip border and padding from outerWidth to get CSS Width + var W = outerWidth + - b($E, "Left") + - b($E, "Right") + - n($E, "paddingLeft") + - n($E, "paddingRight") + ; + + return max(0,W); + } + + /** + * Return the innerHeight for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerHeight (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerHeight of the elem by subtracting padding and borders + */ +, cssHeight: function ($E, outerHeight) { + var + b = $.layout.borderWidth + , n = $.layout.cssNum + ; + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerHeight <= 0) return 0; + + if (!$.support.boxModel) return outerHeight; + + // strip border and padding from outerHeight to get CSS Height + var H = outerHeight + - b($E, "Top") + - b($E, "Bottom") + - n($E, "paddingTop") + - n($E, "paddingBottom") + ; + + return max(0,H); + } + + /** + * Returns the 'current CSS numeric value' for a CSS property - 0 if property does not exist + * + * @see Called by many methods + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {string} prop The name of the CSS property, eg: top, width, etc. + * @param {boolean=} [allowAuto=false] true = return 'auto' if that is value; false = return 0 + * @return {(string|number)} Usually used to get an integer value for position (top, left) or size (height, width) + */ +, cssNum: function ($E, prop, allowAuto) { + if (!$E.jquery) $E = $($E); + var CSS = $.layout.showInvisibly($E) + , p = $.curCSS($E[0], prop, true) + , v = allowAuto && p=="auto" ? p : (parseInt(p, 10) || 0); + $E.css( CSS ); // RESET + return v; + } + +, borderWidth: function (el, side) { + if (el.jquery) el = el[0]; + var b = "border"+ side.substr(0,1).toUpperCase() + side.substr(1); // left => Left + return $.curCSS(el, b+"Style", true) === "none" ? 0 : (parseInt($.curCSS(el, b+"Width", true), 10) || 0); + } + + /** + * Mouse-tracking utility - FUTURE REFERENCE + * + * init: if (!window.mouse) { + * window.mouse = { x: 0, y: 0 }; + * $(document).mousemove( $.layout.trackMouse ); + * } + * + * @param {Object} evt + * +, trackMouse: function (evt) { + window.mouse = { x: evt.clientX, y: evt.clientY }; + } + */ + + /** + * SUBROUTINE for preventPrematureSlideClose option + * + * @param {Object} evt + * @param {Object=} el + */ +, isMouseOverElem: function (evt, el) { + var + $E = $(el || this) + , d = $E.offset() + , T = d.top + , L = d.left + , R = L + $E.outerWidth() + , B = T + $E.outerHeight() + , x = evt.pageX // evt.clientX ? + , y = evt.pageY // evt.clientY ? + ; + // if X & Y are < 0, probably means is over an open SELECT + return ($.layout.browser.msie && x < 0 && y < 0) || ((x >= L && x <= R) && (y >= T && y <= B)); + } + + /** + * Message/Logging Utility + * + * @example $.layout.msg("My message"); // log text + * @example $.layout.msg("My message", true); // alert text + * @example $.layout.msg({ foo: "bar" }, "Title"); // log hash-data, with custom title + * @example $.layout.msg({ foo: "bar" }, true, "Title", { sort: false }); -OR- + * @example $.layout.msg({ foo: "bar" }, "Title", { sort: false, display: true }); // alert hash-data + * + * @param {(Object|string)} info String message OR Hash/Array + * @param {(Boolean|string|Object)=} [popup=false] True means alert-box - can be skipped + * @param {(Object|string)=} [debugTitle=""] Title for Hash data - can be skipped + * @param {Object=} [debutOpts={}] Extra options for debug output + */ +, msg: function (info, popup, debugTitle, debugOpts) { + if ($.isPlainObject(info) && window.debugData) { + if (typeof popup === "string") { + debugOpts = debugTitle; + debugTitle = popup; + } + else if (typeof debugTitle === "object") { + debugOpts = debugTitle; + debugTitle = null; + } + var t = debugTitle || "log( )" + , o = $.extend({ sort: false, returnHTML: false, display: false }, debugOpts); + if (popup === true || o.display) + debugData( info, t, o ); + else if (window.console) + console.log(debugData( info, t, o )); + } + else if (popup) + alert(info); + else if (window.console) + console.log(info); + else { + var id = "#layoutLogger" + , $l = $(id); + if (!$l.length) + $l = createLog(); + $l.children("ul").append('
      • '+ info.replace(/\/g,">") +'
      • '); + } + + function createLog () { + var pos = $.support.fixedPosition ? 'fixed' : 'absolute' + , $e = $('
        ' + + '
        ' + + 'XLayout console.log
        ' + + '
          ' + + '
          ' + ).appendTo("body"); + $e.css('left', $(window).width() - $e.outerWidth() - 5) + if ($.ui.draggable) $e.draggable({ handle: ':first-child' }); + return $e; + }; + } + +}; + +var lang = $.layout.language; // alias used in defaults... + +// DEFAULT OPTIONS - CHANGE IF DESIRED +$.layout.defaults = { +/* + * LAYOUT & LAYOUT-CONTAINER OPTIONS + * - none of these options are applicable to individual panes + */ + name: "" // Not required, but useful for buttons and used for the state-cookie +, containerSelector: "" // ONLY used when specifying a childOptions - to find container-element that is NOT directly-nested +, containerClass: "ui-layout-container" // layout-container element +, scrollToBookmarkOnLoad: true // after creating a layout, scroll to bookmark in URL (.../page.htm#myBookmark) +, resizeWithWindow: true // bind thisLayout.resizeAll() to the window.resize event +, resizeWithWindowDelay: 200 // delay calling resizeAll because makes window resizing very jerky +, resizeWithWindowMaxDelay: 0 // 0 = none - force resize every XX ms while window is being resized +, onresizeall_start: null // CALLBACK when resizeAll() STARTS - NOT pane-specific +, onresizeall_end: null // CALLBACK when resizeAll() ENDS - NOT pane-specific +, onload_start: null // CALLBACK when Layout inits - after options initialized, but before elements +, onload_end: null // CALLBACK when Layout inits - after EVERYTHING has been initialized +, onunload_start: null // CALLBACK when Layout is destroyed OR onWindowUnload +, onunload_end: null // CALLBACK when Layout is destroyed OR onWindowUnload +, autoBindCustomButtons: false // search for buttons with ui-layout-button class and auto-bind them +, initPanes: true // false = DO NOT initialize the panes onLoad - will init later +, showErrorMessages: true // enables fatal error messages to warn developers of common errors +, showDebugMessages: false // display console-and-alert debug msgs - IF this Layout version _has_ debugging code! +// Changing this zIndex value will cause other zIndex values to automatically change +, zIndex: null // the PANE zIndex - resizers and masks will be +1 +// DO NOT CHANGE the zIndex values below unless you clearly understand their relationships +, zIndexes: { // set _default_ z-index values here... + pane_normal: 0 // normal z-index for panes + , content_mask: 1 // applied to overlays used to mask content INSIDE panes during resizing + , resizer_normal: 2 // normal z-index for resizer-bars + , pane_sliding: 100 // applied to *BOTH* the pane and its resizer when a pane is 'slid open' + , pane_animate: 1000 // applied to the pane when being animated - not applied to the resizer + , resizer_drag: 10000 // applied to the CLONED resizer-bar when being 'dragged' + } +/* + * PANE DEFAULT SETTINGS + * - settings under the 'panes' key become the default settings for *all panes* + * - ALL pane-options can also be set specifically for each panes, which will override these 'default values' + */ +, panes: { // default options for 'all panes' - will be overridden by 'per-pane settings' + applyDemoStyles: false // NOTE: renamed from applyDefaultStyles for clarity + , closable: true // pane can open & close + , resizable: true // when open, pane can be resized + , slidable: true // when closed, pane can 'slide open' over other panes - closes on mouse-out + , initClosed: false // true = init pane as 'closed' + , initHidden: false // true = init pane as 'hidden' - no resizer-bar/spacing + // SELECTORS + //, paneSelector: "" // MUST be pane-specific - jQuery selector for pane + , contentSelector: ".ui-layout-content" // INNER div/element to auto-size so only it scrolls, not the entire pane! + , contentIgnoreSelector: ".ui-layout-ignore" // element(s) to 'ignore' when measuring 'content' + , findNestedContent: false // true = $P.find(contentSelector), false = $P.children(contentSelector) + // GENERIC ROOT-CLASSES - for auto-generated classNames + , paneClass: "ui-layout-pane" // Layout Pane + , resizerClass: "ui-layout-resizer" // Resizer Bar + , togglerClass: "ui-layout-toggler" // Toggler Button + , buttonClass: "ui-layout-button" // CUSTOM Buttons - eg: '[ui-layout-button]-toggle/-open/-close/-pin' + // ELEMENT SIZE & SPACING + //, size: 100 // MUST be pane-specific -initial size of pane + , minSize: 0 // when manually resizing a pane + , maxSize: 0 // ditto, 0 = no limit + , spacing_open: 6 // space between pane and adjacent panes - when pane is 'open' + , spacing_closed: 6 // ditto - when pane is 'closed' + , togglerLength_open: 50 // Length = WIDTH of toggler button on north/south sides - HEIGHT on east/west sides + , togglerLength_closed: 50 // 100% OR -1 means 'full height/width of resizer bar' - 0 means 'hidden' + , togglerAlign_open: "center" // top/left, bottom/right, center, OR... + , togglerAlign_closed: "center" // 1 => nn = offset from top/left, -1 => -nn == offset from bottom/right + , togglerTip_open: lang.Close // Toggler tool-tip (title) + , togglerTip_closed: lang.Open // ditto + , togglerContent_open: "" // text or HTML to put INSIDE the toggler + , togglerContent_closed: "" // ditto + // RESIZING OPTIONS + , resizerDblClickToggle: true // + , autoResize: true // IF size is 'auto' or a percentage, then recalc 'pixel size' whenever the layout resizes + , autoReopen: true // IF a pane was auto-closed due to noRoom, reopen it when there is room? False = leave it closed + , resizerDragOpacity: 1 // option for ui.draggable + //, resizerCursor: "" // MUST be pane-specific - cursor when over resizer-bar + , maskContents: false // true = add DIV-mask over-or-inside this pane so can 'drag' over IFRAMES + , maskObjects: false // true = add IFRAME-mask over-or-inside this pane to cover objects/applets - content-mask will overlay this mask + , maskZindex: null // will override zIndexes.content_mask if specified - not applicable to iframe-panes + , resizingGrid: false // grid size that the resizers will snap-to during resizing, eg: [20,20] + , livePaneResizing: false // true = LIVE Resizing as resizer is dragged + , liveContentResizing: false // true = re-measure header/footer heights as resizer is dragged + , liveResizingTolerance: 1 // how many px change before pane resizes, to control performance + // TIPS & MESSAGES - also see lang object + , noRoomToOpenTip: lang.noRoomToOpenTip + , resizerTip: lang.Resize // Resizer tool-tip (title) + , sliderTip: lang.Slide // resizer-bar triggers 'sliding' when pane is closed + , sliderCursor: "pointer" // cursor when resizer-bar will trigger 'sliding' + , slideTrigger_open: "click" // click, dblclick, mouseenter + , slideTrigger_close: "mouseleave"// click, mouseleave + , slideDelay_open: 300 // applies only for mouseenter event - 0 = instant open + , slideDelay_close: 300 // applies only for mouseleave event (300ms is the minimum!) + , hideTogglerOnSlide: false // when pane is slid-open, should the toggler show? + , preventQuickSlideClose: $.layout.browser.webkit // Chrome triggers slideClosed as it is opening + , preventPrematureSlideClose: false // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + // HOT-KEYS & MISC + , showOverflowOnHover: false // will bind allowOverflow() utility to pane.onMouseOver + , enableCursorHotkey: true // enabled 'cursor' hotkeys + //, customHotkey: "" // MUST be pane-specific - EITHER a charCode OR a character + , customHotkeyModifier: "SHIFT" // either 'SHIFT', 'CTRL' or 'CTRL+SHIFT' - NOT 'ALT' + // PANE ANIMATION + // NOTE: fxSss_open, fxSss_close & fxSss_size options (eg: fxName_open) are auto-generated if not passed + , fxName: "slide" // ('none' or blank), slide, drop, scale -- only relevant to 'open' & 'close', NOT 'size' + , fxSpeed: null // slow, normal, fast, 200, nnn - if passed, will OVERRIDE fxSettings.duration + , fxSettings: {} // can be passed, eg: { easing: "easeOutBounce", duration: 1500 } + , fxOpacityFix: true // tries to fix opacity in IE to restore anti-aliasing after animation + , animatePaneSizing: false // true = animate resizing after dragging resizer-bar OR sizePane() is called + /* NOTE: Action-specific FX options are auto-generated from the options above if not specifically set: + fxName_open: "slide" // 'Open' pane animation + fnName_close: "slide" // 'Close' pane animation + fxName_size: "slide" // 'Size' pane animation - when animatePaneSizing = true + fxSpeed_open: null + fxSpeed_close: null + fxSpeed_size: null + fxSettings_open: {} + fxSettings_close: {} + fxSettings_size: {} + */ + // CHILD/NESTED LAYOUTS + , childOptions: null // Layout-options for nested/child layout - even {} is valid as options + , initChildLayout: true // true = child layout will be created as soon as _this_ layout completes initialization + , destroyChildLayout: true // true = destroy child-layout if this pane is destroyed + , resizeChildLayout: true // true = trigger child-layout.resizeAll() when this pane is resized + // PANE CALLBACKS + , triggerEventsOnLoad: false // true = trigger onopen OR onclose callbacks when layout initializes + , triggerEventsDuringLiveResize: true // true = trigger onresize callback REPEATEDLY if livePaneResizing==true + , onshow_start: null // CALLBACK when pane STARTS to Show - BEFORE onopen/onhide_start + , onshow_end: null // CALLBACK when pane ENDS being Shown - AFTER onopen/onhide_end + , onhide_start: null // CALLBACK when pane STARTS to Close - BEFORE onclose_start + , onhide_end: null // CALLBACK when pane ENDS being Closed - AFTER onclose_end + , onopen_start: null // CALLBACK when pane STARTS to Open + , onopen_end: null // CALLBACK when pane ENDS being Opened + , onclose_start: null // CALLBACK when pane STARTS to Close + , onclose_end: null // CALLBACK when pane ENDS being Closed + , onresize_start: null // CALLBACK when pane STARTS being Resized ***FOR ANY REASON*** + , onresize_end: null // CALLBACK when pane ENDS being Resized ***FOR ANY REASON*** + , onsizecontent_start: null // CALLBACK when sizing of content-element STARTS + , onsizecontent_end: null // CALLBACK when sizing of content-element ENDS + , onswap_start: null // CALLBACK when pane STARTS to Swap + , onswap_end: null // CALLBACK when pane ENDS being Swapped + , ondrag_start: null // CALLBACK when pane STARTS being ***MANUALLY*** Resized + , ondrag_end: null // CALLBACK when pane ENDS being ***MANUALLY*** Resized + } +/* + * PANE-SPECIFIC SETTINGS + * - options listed below MUST be specified per-pane - they CANNOT be set under 'panes' + * - all options under the 'panes' key can also be set specifically for any pane + * - most options under the 'panes' key apply only to 'border-panes' - NOT the the center-pane + */ +, north: { + paneSelector: ".ui-layout-north" + , size: "auto" // eg: "auto", "30%", .30, 200 + , resizerCursor: "n-resize" // custom = url(myCursor.cur) + , customHotkey: "" // EITHER a charCode (43) OR a character ("o") + } +, south: { + paneSelector: ".ui-layout-south" + , size: "auto" + , resizerCursor: "s-resize" + , customHotkey: "" + } +, east: { + paneSelector: ".ui-layout-east" + , size: 200 + , resizerCursor: "e-resize" + , customHotkey: "" + } +, west: { + paneSelector: ".ui-layout-west" + , size: 200 + , resizerCursor: "w-resize" + , customHotkey: "" + } +, center: { + paneSelector: ".ui-layout-center" + , minWidth: 0 + , minHeight: 0 + } +}; + +$.layout.optionsMap = { + // layout/global options - NOT pane-options + layout: ("stateManagement,effects,zIndexes," + + "name,zIndex,scrollToBookmarkOnLoad,showErrorMessages," + + "resizeWithWindow,resizeWithWindowDelay,resizeWithWindowMaxDelay," + + "onresizeall,onresizeall_start,onresizeall_end,onload,onunload,autoBindCustomButtons").split(",") +// borderPanes: [ ALL options that are NOT specified as 'layout' ] + // default.panes options that apply to the center-pane (most options apply _only_ to border-panes) +, center: ("paneClass,contentSelector,contentIgnoreSelector,findNestedContent,applyDemoStyles,triggerEventsOnLoad," + + "showOverflowOnHover,maskContents,maskObjects,liveContentResizing," + + "childOptions,initChildLayout,resizeChildLayout,destroyChildLayout," + + "onresize,onresize_start,onresize_end,onsizecontent,onsizecontent_start,onsizecontent_end").split(",") + // options that MUST be specifically set 'per-pane' - CANNOT set in the panes (defaults) key +, noDefault: ("paneSelector,resizerCursor,customHotkey").split(",") +}; + +/** + * Processes options passed in converts flat-format data into subkey (JSON) format + * In flat-format, subkeys are _currently_ separated with 2 underscores, like north__optName + * Plugins may also call this method so they can transform their own data + * + * @param {!Object} hash Data/options passed by user - may be a single level or nested levels + * @return {Object} Returns hash of minWidth & minHeight + */ +$.layout.transformData = function (hash) { + var json = { panes: {}, center: {} } // init return object + , data, branch, optKey, keys, key, val, i, c; + + if (typeof hash !== "object") return json; // no options passed + + // convert all 'flat-keys' to 'sub-key' format + for (optKey in hash) { + branch = json; + data = $.layout.optionsMap.layout; + val = hash[ optKey ]; + keys = optKey.split("__"); // eg: west__size or north__fxSettings__duration + c = keys.length - 1; + // convert underscore-delimited to subkeys + for (i=0; i <= c; i++) { + key = keys[i]; + if (i === c) + branch[key] = val; + else if (!branch[key]) + branch[key] = {}; // create the subkey + // recurse to sub-key for next loop - if not done + branch = branch[key]; + } + } + + return json; +} + +// INTERNAL CONFIG DATA - DO NOT CHANGE THIS! +$.layout.backwardCompatibility = { + // data used by renameOldOptions() + map: { + // OLD Option Name: NEW Option Name + applyDefaultStyles: "applyDemoStyles" + , resizeNestedLayout: "resizeChildLayout" + , resizeWhileDragging: "livePaneResizing" + , resizeContentWhileDragging: "liveContentResizing" + , triggerEventsWhileDragging: "triggerEventsDuringLiveResize" + , maskIframesOnResize: "maskContents" + , useStateCookie: "stateManagement.enabled" + , "cookie.autoLoad": "stateManagement.autoLoad" + , "cookie.autoSave": "stateManagement.autoSave" + , "cookie.keys": "stateManagement.stateKeys" + , "cookie.name": "stateManagement.cookie.name" + , "cookie.domain": "stateManagement.cookie.domain" + , "cookie.path": "stateManagement.cookie.path" + , "cookie.expires": "stateManagement.cookie.expires" + , "cookie.secure": "stateManagement.cookie.secure" + } + /** + * @param {Object} opts + */ +, renameOptions: function (opts) { + var map = $.layout.backwardCompatibility.map + , oldData, newData, value + ; + for (var itemPath in map) { + oldData = getBranch( itemPath ); + value = oldData.branch[ oldData.key ] + if (value !== undefined) { + newData = getBranch( map[itemPath], true ) + newData.branch[ newData.key ] = value; + delete oldData.branch[ oldData.key ]; + } + } + + /** + * @param {string} path + * @param {boolean=} [create=false] Create path if does not exist + */ + function getBranch (path, create) { + var a = path.split(".") // split keys into array + , c = a.length - 1 + , D = { branch: opts, key: a[c] } // init branch at top & set key (last item) + , i = 0, k, undef; + for (; i 0) { + if (autoHide && $E.data('autoHidden') && $E.innerHeight() > 0) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + // make hidden, then visible to 'refresh' display after animation + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerHeight + * @param {boolean=} [autoHide=false] + */ +, setOuterHeight = function (el, outerHeight, autoHide) { + var $E = el, h; + if (isStr(el)) $E = $Ps[el]; // west + else if (!el.jquery) $E = $(el); + h = cssH($E, outerHeight); + $E.css({ height: h, visibility: "visible" }); // may have been 'hidden' by sizeContent + if (h > 0 && $E.innerWidth() > 0) { + if (autoHide && $E.data('autoHidden')) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerSize + * @param {boolean=} [autoHide=false] + */ +, setOuterSize = function (el, outerSize, autoHide) { + if (_c[pane].dir=="horz") // pane = north or south + setOuterHeight(el, outerSize, autoHide); + else // pane = east or west + setOuterWidth(el, outerSize, autoHide); + } + + + /** + * Converts any 'size' params to a pixel/integer size, if not already + * If 'auto' or a decimal/percentage is passed as 'size', a pixel-size is calculated + * + /** + * @param {string} pane + * @param {(string|number)=} size + * @param {string=} [dir] + * @return {number} + */ +, _parseSize = function (pane, size, dir) { + if (!dir) dir = _c[pane].dir; + + if (isStr(size) && size.match(/%/)) + size = (size === '100%') ? -1 : parseInt(size, 10) / 100; // convert % to decimal + + if (size === 0) + return 0; + else if (size >= 1) + return parseInt(size, 10); + + var o = options, avail = 0; + if (dir=="horz") // north or south or center.minHeight + avail = sC.innerHeight - ($Ps.north ? o.north.spacing_open : 0) - ($Ps.south ? o.south.spacing_open : 0); + else if (dir=="vert") // east or west or center.minWidth + avail = sC.innerWidth - ($Ps.west ? o.west.spacing_open : 0) - ($Ps.east ? o.east.spacing_open : 0); + + if (size === -1) // -1 == 100% + return avail; + else if (size > 0) // percentage, eg: .25 + return round(avail * size); + else if (pane=="center") + return 0; + else { // size < 0 || size=='auto' || size==Missing || size==Invalid + // auto-size the pane + var dim = (dir === "horz" ? "height" : "width") + , $P = $Ps[pane] + , $C = dim === 'height' ? $Cs[pane] : false + , vis = $.layout.showInvisibly($P) // show pane invisibly if hidden + , szP = $P.css(dim) // SAVE current pane size + , szC = $C ? $C.css(dim) : 0 // SAVE current content size + ; + $P.css(dim, "auto"); + if ($C) $C.css(dim, "auto"); + size = (dim === "height") ? $P.outerHeight() : $P.outerWidth(); // MEASURE + $P.css(dim, szP).css(vis); // RESET size & visibility + if ($C) $C.css(dim, szC); + return size; + } + } + + /** + * Calculates current 'size' (outer-width or outer-height) of a border-pane - optionally with 'pane-spacing' added + * + * @param {(string|!Object)} pane + * @param {boolean=} [inclSpace=false] + * @return {number} Returns EITHER Width for east/west panes OR Height for north/south panes - adjusted for boxModel & browser + */ +, getPaneSize = function (pane, inclSpace) { + var + $P = $Ps[pane] + , o = options[pane] + , s = state[pane] + , oSp = (inclSpace ? o.spacing_open : 0) + , cSp = (inclSpace ? o.spacing_closed : 0) + ; + if (!$P || s.isHidden) + return 0; + else if (s.isClosed || (s.isSliding && inclSpace)) + return cSp; + else if (_c[pane].dir === "horz") + return $P.outerHeight() + oSp; + else // dir === "vert" + return $P.outerWidth() + oSp; + } + + /** + * Calculate min/max pane dimensions and limits for resizing + * + * @param {string} pane + * @param {boolean=} [slide=false] + */ +, setSizeLimits = function (pane, slide) { + if (!isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , dir = c.dir + , side = c.side.toLowerCase() + , type = c.sizeType.toLowerCase() + , isSliding = (slide != undefined ? slide : s.isSliding) // only open() passes 'slide' param + , $P = $Ps[pane] + , paneSpacing = o.spacing_open + // measure the pane on the *opposite side* from this pane + , altPane = _c.oppositeEdge[pane] + , altS = state[altPane] + , $altP = $Ps[altPane] + , altPaneSize = (!$altP || altS.isVisible===false || altS.isSliding ? 0 : (dir=="horz" ? $altP.outerHeight() : $altP.outerWidth())) + , altPaneSpacing = ((!$altP || altS.isHidden ? 0 : options[altPane][ altS.isClosed !== false ? "spacing_closed" : "spacing_open" ]) || 0) + // limitSize prevents this pane from 'overlapping' opposite pane + , containerSize = (dir=="horz" ? sC.innerHeight : sC.innerWidth) + , minCenterDims = cssMinDims("center") + , minCenterSize = dir=="horz" ? max(options.center.minHeight, minCenterDims.minHeight) : max(options.center.minWidth, minCenterDims.minWidth) + // if pane is 'sliding', then ignore center and alt-pane sizes - because 'overlays' them + , limitSize = (containerSize - paneSpacing - (isSliding ? 0 : (_parseSize("center", minCenterSize, dir) + altPaneSize + altPaneSpacing))) + , minSize = s.minSize = max( _parseSize(pane, o.minSize), cssMinDims(pane).minSize ) + , maxSize = s.maxSize = min( (o.maxSize ? _parseSize(pane, o.maxSize) : 100000), limitSize ) + , r = s.resizerPosition = {} // used to set resizing limits + , top = sC.insetTop + , left = sC.insetLeft + , W = sC.innerWidth + , H = sC.innerHeight + , rW = o.spacing_open // subtract resizer-width to get top/left position for south/east + ; + switch (pane) { + case "north": r.min = top + minSize; + r.max = top + maxSize; + break; + case "west": r.min = left + minSize; + r.max = left + maxSize; + break; + case "south": r.min = top + H - maxSize - rW; + r.max = top + H - minSize - rW; + break; + case "east": r.min = left + W - maxSize - rW; + r.max = left + W - minSize - rW; + break; + }; + } + + /** + * Returns data for setting the size/position of center pane. Also used to set Height for east/west panes + * + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, (outer) width and (outer) height + */ +, calcNewCenterPaneDims = function () { + var d = { + top: getPaneSize("north", true) // true = include 'spacing' value for pane + , bottom: getPaneSize("south", true) + , left: getPaneSize("west", true) + , right: getPaneSize("east", true) + , width: 0 + , height: 0 + }; + + // NOTE: sC = state.container + // calc center-pane outer dimensions + d.width = sC.innerWidth - d.left - d.right; // outerWidth + d.height = sC.innerHeight - d.bottom - d.top; // outerHeight + // add the 'container border/padding' to get final positions relative to the container + d.top += sC.insetTop; + d.bottom += sC.insetBottom; + d.left += sC.insetLeft; + d.right += sC.insetRight; + + return d; + } + + + /** + * @param {!Object} el + * @param {boolean=} [allStates=false] + */ +, getHoverClasses = function (el, allStates) { + var + $El = $(el) + , type = $El.data("layoutRole") + , pane = $El.data("layoutEdge") + , o = options[pane] + , root = o[type +"Class"] + , _pane = "-"+ pane // eg: "-west" + , _open = "-open" + , _closed = "-closed" + , _slide = "-sliding" + , _hover = "-hover " // NOTE the trailing space + , _state = $El.hasClass(root+_closed) ? _closed : _open + , _alt = _state === _closed ? _open : _closed + , classes = (root+_hover) + (root+_pane+_hover) + (root+_state+_hover) + (root+_pane+_state+_hover) + ; + if (allStates) // when 'removing' classes, also remove alternate-state classes + classes += (root+_alt+_hover) + (root+_pane+_alt+_hover); + + if (type=="resizer" && $El.hasClass(root+_slide)) + classes += (root+_slide+_hover) + (root+_pane+_slide+_hover); + + return $.trim(classes); + } +, addHover = function (evt, el) { + var $E = $(el || this); + if (evt && $E.data("layoutRole") === "toggler") + evt.stopPropagation(); // prevent triggering 'slide' on Resizer-bar + $E.addClass( getHoverClasses($E) ); + } +, removeHover = function (evt, el) { + var $E = $(el || this); + $E.removeClass( getHoverClasses($E, true) ); + } + +, onResizerEnter = function (evt) { // ALSO called by toggler.mouseenter + if ($.fn.disableSelection) + $("body").disableSelection(); + } +, onResizerLeave = function (evt, el) { + var + e = el || this // el is only passed when called by the timer + , pane = $(e).data("layoutEdge") + , name = pane +"ResizerLeave" + ; + timer.clear(pane+"_openSlider"); // cancel slideOpen timer, if set + timer.clear(name); // cancel enableSelection timer - may re/set below + // this method calls itself on a timer because it needs to allow + // enough time for dragging to kick-in and set the isResizing flag + // dragging has a 100ms delay set, so this delay must be >100 + if (!el) // 1st call - mouseleave event + timer.set(name, function(){ onResizerLeave(evt, e); }, 200); + // if user is resizing, then dragStop will enableSelection(), so can skip it here + else if (!state[pane].isResizing && $.fn.enableSelection) // 2nd call - by timer + $("body").enableSelection(); + } + +/* + * ########################### + * INITIALIZATION METHODS + * ########################### + */ + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see none - triggered onInit + * @return mixed true = fully initialized | false = panes not initialized (yet) | 'cancel' = abort + */ +, _create = function () { + // initialize config/options + initOptions(); + var o = options; + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // init plugins for this layout, if there are any (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onCreate ); + + // options & state have been initialized, so now run beforeLoad callback + // onload will CANCEL layout creation if it returns false + if (false === _runCallbacks("onload_start")) + return 'cancel'; + + // initialize the container element + _initContainer(); + + // bind hotkey function - keyDown - if required + initHotkeys(); + + // bind window.onunload + $(window).bind("unload."+ sID, unload); + + // init plugins for this layout, if there are any (eg: customButtons) + runPluginCallbacks( Instance, $.layout.onLoad ); + + // if layout elements are hidden, then layout WILL NOT complete initialization! + // initLayoutElements will set initialized=true and run the onload callback IF successful + if (o.initPanes) _initLayoutElements(); + + delete state.creatingLayout; + + return state.initialized; + } + + /** + * Initialize the layout IF not already + * + * @see All methods in Instance run this test + * @return boolean true = layoutElements have been initialized | false = panes are not initialized (yet) + */ +, isInitialized = function () { + if (state.initialized || state.creatingLayout) return true; // already initialized + else return _initLayoutElements(); // try to init panes NOW + } + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see _create() & isInitialized + * @return An object pointer to the instance created + */ +, _initLayoutElements = function (retry) { + // initialize config/options + var o = options; + + // CANNOT init panes inside a hidden container! + if (!$N.is(":visible")) { + // handle Chrome bug where popup window 'has no height' + // if layout is BODY element, try again in 50ms + // SEE: http://layout.jquery-dev.net/samples/test_popup_window.html + if ( !retry && browser.webkit && $N[0].tagName === "BODY" ) + setTimeout(function(){ _initLayoutElements(true); }, 50); + return false; + } + + // a center pane is required, so make sure it exists + if (!getPane("center").length) { + if (options.showErrorMessages) + _log( lang.errCenterPaneMissing, true ); + return false; + } + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // update Container dims + $.extend(sC, elDims( $N )); + + // initialize all layout elements + initPanes(); // size & position panes - calls initHandles() - which calls initResizable() + + if (o.scrollToBookmarkOnLoad) { + var l = self.location; + if (l.hash) l.replace( l.hash ); // scrollTo Bookmark + } + + // check to see if this layout 'nested' inside a pane + if (Instance.hasParentLayout) + o.resizeWithWindow = false; + // bind resizeAll() for 'this layout instance' to window.resize event + else if (o.resizeWithWindow) + $(window).bind("resize."+ sID, windowResize); + + delete state.creatingLayout; + state.initialized = true; + + // init plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onReady ); + + // now run the onload callback, if exists + _runCallbacks("onload_end"); + + return true; // elements initialized successfully + } + + /** + * Initialize nested layouts - called when _initLayoutElements completes + * + * NOT CURRENTLY USED + * + * @see _initLayoutElements + * @return An object pointer to the instance created + */ +, _initChildLayouts = function () { + $.each(_c.allPanes, function (idx, pane) { + if (options[pane].initChildLayout) + createChildLayout( pane ); + }); + } + + /** + * Initialize nested layouts for a specific pane - can optionally pass layout-options + * + * @see _initChildLayouts + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {Object=} [opts] Layout-options - if passed, will OVERRRIDE options[pane].childOptions + * @return An object pointer to the layout instance created - or null + */ +, createChildLayout = function (evt_or_pane, opts) { + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , C = children + ; + if ($P) { + var $C = $Cs[pane] + , o = opts || options[pane].childOptions + , d = "layout" + // determine which element is supposed to be the 'child container' + // if pane has a 'containerSelector' OR a 'content-div', use those instead of the pane + , $Cont = o.containerSelector ? $P.find( o.containerSelector ) : ($C || $P) + , containerFound = $Cont.length + // see if a child-layout ALREADY exists on this element + , child = containerFound ? (C[pane] = $Cont.data(d) || null) : null + ; + // if no layout exists, but childOptions are set, try to create the layout now + if (!child && containerFound && o) + child = C[pane] = $Cont.eq(0).layout(o) || null; + if (child) + child.hasParentLayout = true; // set parent-flag in child + } + Instance[pane].child = C[pane]; // ALWAYS set pane-object pointer, even if null + } + +, windowResize = function () { + var delay = Number(options.resizeWithWindowDelay); + if (delay < 10) delay = 100; // MUST have a delay! + // resizing uses a delay-loop because the resize event fires repeatly - except in FF, but delay anyway + timer.clear("winResize"); // if already running + timer.set("winResize", function(){ + timer.clear("winResize"); + timer.clear("winResizeRepeater"); + var dims = elDims( $N ); + // only trigger resizeAll() if container has changed size + if (dims.innerWidth !== sC.innerWidth || dims.innerHeight !== sC.innerHeight) + resizeAll(); + }, delay); + // ALSO set fixed-delay timer, if not already running + if (!timer.data["winResizeRepeater"]) setWindowResizeRepeater(); + } + +, setWindowResizeRepeater = function () { + var delay = Number(options.resizeWithWindowMaxDelay); + if (delay > 0) + timer.set("winResizeRepeater", function(){ setWindowResizeRepeater(); resizeAll(); }, delay); + } + +, unload = function () { + var o = options; + + _runCallbacks("onunload_start"); + + // trigger plugin callabacks for this layout (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onUnload ); + + _runCallbacks("onunload_end"); + } + + /** + * Validate and initialize container CSS and events + * + * @see _create() + */ +, _initContainer = function () { + var + N = $N[0] + , tag = sC.tagName = N.tagName + , id = sC.id = N.id + , cls = sC.className = N.className + , o = options + , name = o.name + , fullPage= (tag === "BODY") + , props = "overflow,position,margin,padding,border" + , css = "layoutCSS" + , CSS = {} + , hid = "hidden" // used A LOT! + // see if this container is a 'pane' inside an outer-layout + , parent = $N.data("parentLayout") // parent-layout Instance + , pane = $N.data("layoutEdge") // pane-name in parent-layout + , isChild = parent && pane + ; + // sC -> state.container + sC.selector = $N.selector.split(".slice")[0]; + sC.ref = (o.name ? o.name +' layout / ' : '') + tag + (id ? "#"+id : cls ? '.['+cls+']' : ''); // used in messages + + $N .data({ + layout: Instance + , layoutContainer: sID // FLAG to indicate this is a layout-container - contains unique internal ID + }) + .addClass(o.containerClass) + ; + var layoutMethods = { + destroy: '' + , initPanes: '' + , resizeAll: 'resizeAll' + , resize: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in layoutMethods) { + $N.bind("layout"+ name.toLowerCase() +"."+ sID, Instance[ layoutMethods[name] || name ]); + } + + // if this container is another layout's 'pane', then set child/parent pointers + if (isChild) { + // update parent flag + Instance.hasParentLayout = true; + // set pointers to THIS child-layout (Instance) in parent-layout + // NOTE: parent.PANE.child is an ALIAS to parent.children.PANE + parent[pane].child = parent.children[pane] = $N.data("layout"); + } + + // SAVE original container CSS for use in destroy() + if (!$N.data(css)) { + // handle props like overflow different for BODY & HTML - has 'system default' values + if (fullPage) { + CSS = $.extend( elCSS($N, props), { + height: $N.css("height") + , overflow: $N.css("overflow") + , overflowX: $N.css("overflowX") + , overflowY: $N.css("overflowY") + }); + // ALSO SAVE CSS + var $H = $("html"); + $H.data(css, { + height: "auto" // FF would return a fixed px-size! + , overflow: $H.css("overflow") + , overflowX: $H.css("overflowX") + , overflowY: $H.css("overflowY") + }); + } + else // handle props normally for non-body elements + CSS = elCSS($N, props+",top,bottom,left,right,width,height,overflow,overflowX,overflowY"); + + $N.data(css, CSS); + } + + try { // format html/body if this is a full page layout + if (fullPage) { + $("html").css({ + height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + }); + $("body").css({ + position: "relative" + , height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + , margin: 0 + , padding: 0 // TODO: test whether body-padding could be handled? + , border: "none" // a body-border creates problems because it cannot be measured! + }); + + // set current layout-container dimensions + $.extend(sC, elDims( $N )); + } + else { // set required CSS for overflow and position + // ENSURE container will not 'scroll' + CSS = { overflow: hid, overflowX: hid, overflowY: hid } + var + p = $N.css("position") + , h = $N.css("height") + ; + // if this is a NESTED layout, then container/outer-pane ALREADY has position and height + if (!isChild) { + if (!p || !p.match(/fixed|absolute|relative/)) + CSS.position = "relative"; // container MUST have a 'position' + /* + if (!h || h=="auto") + CSS.height = "100%"; // container MUST have a 'height' + */ + } + $N.css( CSS ); + + // set current layout-container dimensions + if ( $N.is(":visible") ) { + $.extend(sC, elDims( $N )); + if (o.showErrorMessages && sC.innerHeight < 1) + _log( lang.errContainerHeight.replace(/CONTAINER/, sC.ref), true ); + } + } + } catch (ex) {} + } + + /** + * Bind layout hotkeys - if options enabled + * + * @see _create() and addPane() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHotkeys = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + // bind keyDown to capture hotkeys, if option enabled for ANY pane + $.each(panes, function (i, pane) { + var o = options[pane]; + if (o.enableCursorHotkey || o.customHotkey) { + $(document).bind("keydown."+ sID, keyDown); // only need to bind this ONCE + return false; // BREAK - binding was done + } + }); + } + + /** + * Build final OPTIONS data + * + * @see _create() + */ +, initOptions = function () { + var data, d, pane, key, val, i, c, o; + + // reprocess user's layout-options to have correct options sub-key structure + opts = $.layout.transformData( opts ); // panes = default subkey + + // auto-rename old options for backward compatibility + opts = $.layout.backwardCompatibility.renameAllOptions( opts ); + + // if user-options has 'panes' key (pane-defaults), process it... + if (!$.isEmptyObject(opts.panes)) { + // REMOVE any pane-defaults that MUST be set per-pane + data = $.layout.optionsMap.noDefault; + for (i=0, c=data.length; i 0) { + z.pane_normal = zo; + z.content_mask = max(zo+1, z.content_mask); // MIN = +1 + z.resizer_normal = max(zo+2, z.resizer_normal); // MIN = +2 + } + + function createFxOptions ( pane ) { + var o = options[pane] + , d = options.panes; + // ensure fxSettings key to avoid errors + if (!o.fxSettings) o.fxSettings = {}; + if (!d.fxSettings) d.fxSettings = {}; + + $.each(["_open","_close","_size"], function (i,n) { + var + sName = "fxName"+ n + , sSpeed = "fxSpeed"+ n + , sSettings = "fxSettings"+ n + // recalculate fxName according to specificity rules + , fxName = o[sName] = + o[sName] // options.west.fxName_open + || d[sName] // options.panes.fxName_open + || o.fxName // options.west.fxName + || d.fxName // options.panes.fxName + || "none" // MEANS $.layout.defaults.panes.fxName == "" || false || null || 0 + ; + // validate fxName to ensure is valid effect - MUST have effect-config data in options.effects + if (fxName === "none" || !$.effects || !$.effects[fxName] || !options.effects[fxName]) + fxName = o[sName] = "none"; // effect not loaded OR unrecognized fxName + + // set vars for effects subkeys to simplify logic + var fx = options.effects[fxName] || {} // effects.slide + , fx_all = fx.all || null // effects.slide.all + , fx_pane = fx[pane] || null // effects.slide.west + ; + // create fxSpeed[_open|_close|_size] + o[sSpeed] = + o[sSpeed] // options.west.fxSpeed_open + || d[sSpeed] // options.west.fxSpeed_open + || o.fxSpeed // options.west.fxSpeed + || d.fxSpeed // options.panes.fxSpeed + || null // DEFAULT - let fxSetting.duration control speed + ; + // create fxSettings[_open|_close|_size] + o[sSettings] = $.extend( + {} + , fx_all // effects.slide.all + , fx_pane // effects.slide.west + , d.fxSettings // options.panes.fxSettings + , o.fxSettings // options.west.fxSettings + , d[sSettings] // options.panes.fxSettings_open + , o[sSettings] // options.west.fxSettings_open + ); + }); + + // DONE creating action-specific-settings for this pane, + // so DELETE generic options - are no longer meaningful + delete o.fxName; + delete o.fxSpeed; + delete o.fxSettings; + } + + // DELETE 'panes' key now that we are done - values were copied to EACH pane + delete options.panes; + } + + /** + * Initialize module objects, styling, size and position for all panes + * + * @see _initElements() + * @param {string} pane The pane to process + */ +, getPane = function (pane) { + var sel = options[pane].paneSelector + if (sel.substr(0,1)==="#") // ID selector + // NOTE: elements selected 'by ID' DO NOT have to be 'children' + return $N.find(sel).eq(0); + else { // class or other selector + var $P = $N.children(sel).eq(0); + // look for the pane nested inside a 'form' element + return $P.length ? $P : $N.children("form:first").children(sel).eq(0); + } + } + +, initPanes = function () { + // NOTE: do north & south FIRST so we can measure their height - do center LAST + $.each(_c.allPanes, function (idx, pane) { + addPane( pane, true ); + }); + + // init the pane-handles NOW in case we have to hide or close the pane below + initHandles(); + + // now that all panes have been initialized and initially-sized, + // make sure there is really enough space available for each pane + $.each(_c.borderPanes, function (i, pane) { + if ($Ps[pane] && state[pane].isVisible) { // pane is OPEN + setSizeLimits(pane); + makePaneFit(pane); // pane may be Closed, Hidden or Resized by makePaneFit() + } + }); + // size center-pane AGAIN in case we 'closed' a border-pane in loop above + sizeMidPanes("center"); + + // Chrome/Webkit sometimes fires callbacks BEFORE it completes resizing! + // Before RC30.3, there was a 10ms delay here, but that caused layout + // to load asynchrously, which is BAD, so try skipping delay for now + + // process pane contents and callbacks, and init/resize child-layout if exists + $.each(_c.allPanes, function (i, pane) { + var o = options[pane]; + if ($Ps[pane]) { + if (state[pane].isVisible) { // pane is OPEN + sizeContent(pane); + // trigger pane.onResize if triggerEventsOnLoad = true + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); + } + // init childLayout - even if pane is not visible + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + }); + } + + /** + * Add a pane to the layout - subroutine of initPanes() + * + * @see initPanes() + * @param {string} pane The pane to process + * @param {boolean=} [force=false] Size content after init + */ +, addPane = function (pane, force) { + if (!force && !isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , fx = s.fx + , dir = c.dir + , spacing = o.spacing_open || 0 + , isCenter = (pane === "center") + , CSS = {} + , $P = $Ps[pane] + , size, minSize, maxSize + ; + // if pane-pointer already exists, remove the old one first + if ($P) + removePane( pane, false, true, false ); + else + $Cs[pane] = false; // init + + $P = $Ps[pane] = getPane(pane); + if (!$P.length) { + $Ps[pane] = false; // logic + return; + } + + // SAVE original Pane CSS + if (!$P.data("layoutCSS")) { + var props = "position,top,left,bottom,right,width,height,overflow,zIndex,display,backgroundColor,padding,margin,border"; + $P.data("layoutCSS", elCSS($P, props)); + } + + // create alias for pane data in Instance - initHandles will add more + Instance[pane] = { name: pane, pane: $Ps[pane], content: $Cs[pane], options: options[pane], state: state[pane], child: children[pane] }; + + // add classes, attributes & events + $P .data({ + parentLayout: Instance // pointer to Layout Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "pane" + }) + .css(c.cssReq).css("zIndex", options.zIndexes.pane_normal) + .css(o.applyDemoStyles ? c.cssDemo : {}) // demo styles + .addClass( o.paneClass +" "+ o.paneClass+"-"+pane ) // default = "ui-layout-pane ui-layout-pane-west" - may be a dupe of 'paneSelector' + .bind("mouseenter."+ sID, addHover ) + .bind("mouseleave."+ sID, removeHover ) + ; + var paneMethods = { + hide: '' + , show: '' + , toggle: '' + , close: '' + , open: '' + , slideOpen: '' + , slideClose: '' + , slideToggle: '' + , size: 'manualSizePane' + , sizePane: 'manualSizePane' + , sizeContent: '' + , sizeHandles: '' + , enableClosable: '' + , disableClosable: '' + , enableSlideable: '' + , disableSlideable: '' + , enableResizable: '' + , disableResizable: '' + , swapPanes: 'swapPanes' + , swap: 'swapPanes' + , move: 'swapPanes' + , removePane: 'removePane' + , remove: 'removePane' + , createChildLayout: '' + , resizeChildLayout: '' + , resizeAll: 'resizeAll' + , resizeLayout: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in paneMethods) { + $P.bind("layoutpane"+ name.toLowerCase() +"."+ sID, Instance[ paneMethods[name] || name ]); + } + + // see if this pane has a 'scrolling-content element' + initContent(pane, false); // false = do NOT sizeContent() - called later + + if (!isCenter) { + // call _parseSize AFTER applying pane classes & styles - but before making visible (if hidden) + // if o.size is auto or not valid, then MEASURE the pane and use that as its 'size' + size = s.size = _parseSize(pane, o.size); + minSize = _parseSize(pane,o.minSize) || 1; + maxSize = _parseSize(pane,o.maxSize) || 100000; + if (size > 0) size = max(min(size, maxSize), minSize); + + // state for border-panes + s.isClosed = false; // true = pane is closed + s.isSliding = false; // true = pane is currently open by 'sliding' over adjacent panes + s.isResizing= false; // true = pane is in process of being resized + s.isHidden = false; // true = pane is hidden - no spacing, resizer or toggler is visible! + + // array for 'pin buttons' whose classNames are auto-updated on pane-open/-close + if (!s.pins) s.pins = []; + } + // states common to ALL panes + s.tagName = $P[0].tagName; + s.edge = pane; // useful if pane is (or about to be) 'swapped' - easy find out where it is (or is going) + s.noRoom = false; // true = pane 'automatically' hidden due to insufficient room - will unhide automatically + s.isVisible = true; // false = pane is invisible - closed OR hidden - simplify logic + + // set css-position to account for container borders & padding + switch (pane) { + case "north": CSS.top = sC.insetTop; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "south": CSS.bottom = sC.insetBottom; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "west": CSS.left = sC.insetLeft; // top, bottom & height set by sizeMidPanes() + break; + case "east": CSS.right = sC.insetRight; // ditto + break; + case "center": // top, left, width & height set by sizeMidPanes() + } + + if (dir === "horz") // north or south pane + CSS.height = cssH($P, size); + else if (dir === "vert") // east or west pane + CSS.width = cssW($P, size); + //else if (isCenter) {} + + $P.css(CSS); // apply size -- top, bottom & height will be set by sizeMidPanes + if (dir != "horz") sizeMidPanes(pane, true); // true = skipCallback + + // close or hide the pane if specified in settings + if (o.initClosed && o.closable && !o.initHidden) + close(pane, true, true); // true, true = force, noAnimation + else if (o.initHidden || o.initClosed) + hide(pane); // will be completely invisible - no resizer or spacing + else if (!s.noRoom) + // make the pane visible - in case was initially hidden + $P.css("display","block"); + // ELSE setAsOpen() - called later by initHandles() + + // RESET visibility now - pane will appear IF display:block + $P.css("visibility","visible"); + + // check option for auto-handling of pop-ups & drop-downs + if (o.showOverflowOnHover) + $P.hover( allowOverflow, resetOverflow ); + + // if manually adding a pane AFTER layout initialization, then... + if (state.initialized) { + initHandles( pane ); + initHotkeys( pane ); + resizeAll(); // will sizeContent if pane is visible + if (s.isVisible) { // pane is OPEN + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); // a previously existing childLayout + } + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + } + + /** + * Initialize module objects, styling, size and position for all resize bars and toggler buttons + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHandles = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + + // create toggler DIVs for each pane, and set object pointers for them, eg: $R.north = north toggler DIV + $.each(panes, function (i, pane) { + var $P = $Ps[pane]; + $Rs[pane] = false; // INIT + $Ts[pane] = false; + if (!$P) return; // pane does not exist - skip + + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , rClass = o.resizerClass + , tClass = o.togglerClass + , side = c.side.toLowerCase() + , spacing = (s.isVisible ? o.spacing_open : o.spacing_closed) + , _pane = "-"+ pane // used for classNames + , _state = (s.isVisible ? "-open" : "-closed") // used for classNames + , I = Instance[pane] + // INIT RESIZER BAR + , $R = I.resizer = $Rs[pane] = $("
          ") + // INIT TOGGLER BUTTON + , $T = I.toggler = (o.closable ? $Ts[pane] = $("
          ") : false) + ; + + //if (s.isVisible && o.resizable) ... handled by initResizable + if (!s.isVisible && o.slidable) + $R.attr("title", o.sliderTip).css("cursor", o.sliderCursor); + + $R // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "paneLeft-resizer" + .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-resizer" : "")) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "resizer" + }) + .css(_c.resizers.cssReq).css("zIndex", options.zIndexes.resizer_normal) + .css(o.applyDemoStyles ? _c.resizers.cssDemo : {}) // add demo styles + .addClass(rClass +" "+ rClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if resizing is not enabled - handle with CSS instead + .hover(onResizerEnter, onResizerLeave) // ALWAYS NEED resizer.mouseleave to balance toggler.mouseenter + .appendTo($N) // append DIV to container + ; + + if ($T) { + $T // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "#paneLeft-toggler" + .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-toggler" : "")) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "toggler" + }) + .css(_c.togglers.cssReq) // add base/required styles + .css(o.applyDemoStyles ? _c.togglers.cssDemo : {}) // add demo styles + .addClass(tClass +" "+ tClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if toggling is not enabled - handle with CSS instead + .bind("mouseenter", onResizerEnter) // NEED toggler.mouseenter because mouseenter MAY NOT fire on resizer + .appendTo($R) // append SPAN to resizer DIV + ; + // ADD INNER-SPANS TO TOGGLER + if (o.togglerContent_open) // ui-layout-open + $(""+ o.togglerContent_open +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .data("layoutRole", "togglerContent") + .data("layoutEdge", pane) + .addClass("content content-open") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-open instead! + ; + if (o.togglerContent_closed) // ui-layout-closed + $(""+ o.togglerContent_closed +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .addClass("content content-closed") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-closed instead! + ; + // ADD TOGGLER.click/.hover + enableClosable(pane); + } + + // add Draggable events + initResizable(pane); + + // ADD CLASSNAMES & SLIDE-BINDINGS - eg: class="resizer resizer-west resizer-open" + if (s.isVisible) + setAsOpen(pane); // onOpen will be called, but NOT onResize + else { + setAsClosed(pane); // onClose will be called + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + }); + + // SET ALL HANDLE DIMENSIONS + sizeHandles(); + } + + + /** + * Initialize scrolling ui-layout-content div - if exists + * + * @see initPane() - or externally after an Ajax injection + * @param {string} [pane] The pane to process + * @param {boolean=} [resize=true] Size content after init + */ +, initContent = function (pane, resize) { + if (!isInitialized()) return; + var + o = options[pane] + , sel = o.contentSelector + , I = Instance[pane] + , $P = $Ps[pane] + , $C + ; + if (sel) $C = I.content = $Cs[pane] = (o.findNestedContent) + ? $P.find(sel).eq(0) // match 1-element only + : $P.children(sel).eq(0) + ; + if ($C && $C.length) { + $C.data("layoutRole", "content"); + // SAVE original Pane CSS + if (!$C.data("layoutCSS")) + $C.data("layoutCSS", elCSS($C, "height")); + $C.css( _c.content.cssReq ); + if (o.applyDemoStyles) { + $C.css( _c.content.cssDemo ); // add padding & overflow: auto to content-div + $P.css( _c.content.cssDemoPane ); // REMOVE padding/scrolling from pane + } + state[pane].content = {}; // init content state + if (resize !== false) sizeContent(pane); + // sizeContent() is called AFTER init of all elements + } + else + I.content = $Cs[pane] = false; + } + + + /** + * Add resize-bars to all panes that specify it in options + * -dependancy: $.fn.resizable - will skip if not found + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initResizable = function (panes) { + var draggingAvailable = $.layout.plugins.draggable + , side // set in start() + ; + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (idx, pane) { + var o = options[pane]; + if (!draggingAvailable || !$Ps[pane] || !o.resizable) { + o.resizable = false; + return true; // skip to next + } + + var s = state[pane] + , z = options.zIndexes + , c = _c[pane] + , side = c.dir=="horz" ? "top" : "left" + , opEdge = _c.oppositeEdge[pane] + , masks = pane +",center,"+ opEdge + (c.dir=="horz" ? ",west,east" : "") + , $P = $Ps[pane] + , $R = $Rs[pane] + , base = o.resizerClass + , lastPos = 0 // used when live-resizing + , r, live // set in start because may change + // 'drag' classes are applied to the ORIGINAL resizer-bar while dragging is in process + , resizerClass = base+"-drag" // resizer-drag + , resizerPaneClass = base+"-"+pane+"-drag" // resizer-north-drag + // 'helper' class is applied to the CLONED resizer-bar while it is being dragged + , helperClass = base+"-dragging" // resizer-dragging + , helperPaneClass = base+"-"+pane+"-dragging" // resizer-north-dragging + , helperLimitClass = base+"-dragging-limit" // resizer-drag + , helperPaneLimitClass = base+"-"+pane+"-dragging-limit" // resizer-north-drag + , helperClassesSet = false // logic var + ; + + if (!s.isClosed) + $R.attr("title", o.resizerTip) + .css("cursor", o.resizerCursor); // n-resize, s-resize, etc + + $R.draggable({ + containment: $N[0] // limit resizing to layout container + , axis: (c.dir=="horz" ? "y" : "x") // limit resizing to horz or vert axis + , delay: 0 + , distance: 1 + , grid: o.resizingGrid + // basic format for helper - style it using class: .ui-draggable-dragging + , helper: "clone" + , opacity: o.resizerDragOpacity + , addClasses: false // avoid ui-state-disabled class when disabled + //, iframeFix: o.draggableIframeFix // TODO: consider using when bug is fixed + , zIndex: z.resizer_drag + + , start: function (e, ui) { + // REFRESH options & state pointers in case we used swapPanes + o = options[pane]; + s = state[pane]; + // re-read options + live = o.livePaneResizing; + + // ondrag_start callback - will CANCEL hide if returns false + // TODO: dragging CANNOT be cancelled like this, so see if there is a way? + if (false === _runCallbacks("ondrag_start", pane)) return false; + + s.isResizing = true; // prevent pane from closing while resizing + timer.clear(pane+"_closeSlider"); // just in case already triggered + + // SET RESIZER LIMITS - used in drag() + setSizeLimits(pane); // update pane/resizer state + r = s.resizerPosition; + lastPos = ui.position[ side ] + + $R.addClass( resizerClass +" "+ resizerPaneClass ); // add drag classes + helperClassesSet = false; // reset logic var - see drag() + + // DISABLE TEXT SELECTION (probably already done by resizer.mouseOver) + $('body').disableSelection(); + + // MASK PANES CONTAINING IFRAMES, APPLETS OR OTHER TROUBLESOME ELEMENTS + showMasks( masks ); + } + + , drag: function (e, ui) { + if (!helperClassesSet) { // can only add classes after clone has been added to the DOM + //$(".ui-draggable-dragging") + ui.helper + .addClass( helperClass +" "+ helperPaneClass ) // add helper classes + .css({ right: "auto", bottom: "auto" }) // fix dir="rtl" issue + .children().css("visibility","hidden") // hide toggler inside dragged resizer-bar + ; + helperClassesSet = true; + // draggable bug!? RE-SET zIndex to prevent E/W resize-bar showing through N/S pane! + if (s.isSliding) $Ps[pane].css("zIndex", z.pane_sliding); + } + // CONTAIN RESIZER-BAR TO RESIZING LIMITS + var limit = 0; + if (ui.position[side] < r.min) { + ui.position[side] = r.min; + limit = -1; + } + else if (ui.position[side] > r.max) { + ui.position[side] = r.max; + limit = 1; + } + // ADD/REMOVE dragging-limit CLASS + if (limit) { + ui.helper.addClass( helperLimitClass +" "+ helperPaneLimitClass ); // at dragging-limit + window.defaultStatus = (limit>0 && pane.match(/north|west/)) || (limit<0 && pane.match(/south|east/)) ? lang.maxSizeWarning : lang.minSizeWarning; + } + else { + ui.helper.removeClass( helperLimitClass +" "+ helperPaneLimitClass ); // not at dragging-limit + window.defaultStatus = ""; + } + // DYNAMICALLY RESIZE PANES IF OPTION ENABLED + // won't trigger unless resizer has actually moved! + if (live && Math.abs(ui.position[side] - lastPos) >= o.liveResizingTolerance) { + lastPos = ui.position[side]; + resizePanes(e, ui, pane) + } + } + + , stop: function (e, ui) { + $('body').enableSelection(); // RE-ENABLE TEXT SELECTION + window.defaultStatus = ""; // clear 'resizing limit' message from statusbar + $R.removeClass( resizerClass +" "+ resizerPaneClass ); // remove drag classes from Resizer + s.isResizing = false; + resizePanes(e, ui, pane, true, masks); // true = resizingDone + } + + }); + }); + + /** + * resizePanes + * + * Sub-routine called from stop() - and drag() if livePaneResizing + * + * @param {!Object} evt + * @param {!Object} ui + * @param {string} pane + * @param {boolean=} [resizingDone=false] + */ + var resizePanes = function (evt, ui, pane, resizingDone, masks) { + var dragPos = ui.position + , c = _c[pane] + , o = options[pane] + , s = state[pane] + , resizerPos + ; + switch (pane) { + case "north": resizerPos = dragPos.top; break; + case "west": resizerPos = dragPos.left; break; + case "south": resizerPos = sC.offsetHeight - dragPos.top - o.spacing_open; break; + case "east": resizerPos = sC.offsetWidth - dragPos.left - o.spacing_open; break; + }; + // remove container margin from resizer position to get the pane size + var newSize = resizerPos - sC["inset"+ c.side]; + + // Disable OR Resize Mask(s) created in drag.start + if (!resizingDone) { + // ensure we meet liveResizingTolerance criteria + if (Math.abs(newSize - s.size) < o.liveResizingTolerance) + return; // SKIP resize this time + // resize the pane + manualSizePane(pane, newSize, false, true); // true = noAnimation + sizeMasks(); // resize all visible masks + } + else { // resizingDone + // ondrag_end callback + if (false !== _runCallbacks("ondrag_end", pane)) + manualSizePane(pane, newSize, false, true); // true = noAnimation + hideMasks(); // hide all masks, which include panes with 'content/iframe-masks' + if (s.isSliding && masks) // RE-SHOW only 'object-masks' so objects won't show through sliding pane + showMasks( masks, true ); // true = onlyForObjects + } + }; + } + + /** + * sizeMask + * + * Needed to overlay a DIV over an IFRAME-pane because mask CANNOT be *inside* the pane + * Called when mask created, and during livePaneResizing + */ +, sizeMask = function () { + var $M = $(this) + , pane = $M.data("layoutMask") // eg: "west" + , s = state[pane] + ; + // only masks over an IFRAME-pane need manual resizing + if (s.tagName == "IFRAME" && s.isVisible) // no need to mask closed/hidden panes + $M.css({ + top: s.offsetTop + , left: s.offsetLeft + , width: s.outerWidth + , height: s.outerHeight + }); + /* ALT Method... + var $P = $Ps[pane]; + $M.css( $P.position() ).css({ width: $P[0].offsetWidth, height: $P[0].offsetHeight }); + */ + } +, sizeMasks = function () { + $Ms.each( sizeMask ); // resize all 'visible' masks + } + +, showMasks = function (panes, onlyForObjects) { + var a = panes ? panes.split(",") : $.layout.config.allPanes + , z = options.zIndexes + , o, s; + $.each(a, function(i,p){ + s = state[p]; + o = options[p]; + if (s.isVisible && ( (!onlyForObjects && o.maskContents) || o.maskObjects )) { + getMasks(p).each(function(){ + sizeMask.call(this); + this.style.zIndex = s.isSliding ? z.pane_sliding+1 : z.pane_normal+1 + this.style.display = "block"; + }); + } + }); + } + +, hideMasks = function () { + // ensure no pane is resizing - could be a timing issue + var skip; + $.each( $.layout.config.borderPanes, function(i,p){ + if (state[p].isResizing) { + skip = true; + return false; // BREAK + } + }); + if (!skip) + $Ms.hide(); // hide ALL masks + } + +, getMasks = function (pane) { + var $Masks = $([]) + , $M, i = 0, c = $Ms.length + ; + for (; i CSS + if (sC.tagName === "BODY" && ($N = $("html")).data(css)) // RESET CSS + $N.css( $N.data(css) ).removeData(css); + + // trigger plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onDestroy ); + + // trigger state-management and onunload callback + unload(); + + // clear the Instance of everything except for container & options (so could recreate) + // RE-CREATE: myLayout = myLayout.container.layout( myLayout.options ); + for (n in Instance) + if (!n.match(/^(container|options)$/)) delete Instance[ n ]; + // add a 'destroyed' flag to make it easy to check + Instance.destroyed = true; + + // if this is a child layout, CLEAR the child-pointer in the parent + /* for now the pointer REMAINS, but with only container, options and destroyed keys + if (parentPane) { + var layout = parentPane.pane.data("parentLayout"); + parentPane.child = layout.children[ parentPane.name ] = null; + } + */ + + return Instance; // for coding convenience + } + + /** + * Remove a pane from the layout - subroutine of destroy() + * + * @see destroy() + * @param {string} pane The pane to process + * @param {boolean=} [remove=false] Remove the DOM element? + * @param {boolean=} [skipResize=false] Skip calling resizeAll()? + */ +, removePane = function (evt_or_pane, remove, skipResize, destroyChild) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $C = $Cs[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + ; + //alert( '$P.length = '+ $P.length ); + // NOTE: elements can still exist even after remove() + // so check for missing data(), which is cleared by removed() + if ($P && $.isEmptyObject( $P.data() )) $P = false; + if ($C && $.isEmptyObject( $C.data() )) $C = false; + if ($R && $.isEmptyObject( $R.data() )) $R = false; + if ($T && $.isEmptyObject( $T.data() )) $T = false; + + if ($P) $P.stop(true, true); + + // check for a child layout + var o = options[pane] + , s = state[pane] + , d = "layout" + , css = "layoutCSS" + , child = children[pane] || ($P ? $P.data(d) : 0) || ($C ? $C.data(d) : 0) || null + , destroy = destroyChild !== undefined ? destroyChild : o.destroyChildLayout + ; + + // FIRST destroy the child-layout(s) + if (destroy && child && !child.destroyed) { + child.destroy(true); // tell child-layout to destroy ALL its child-layouts too + if (child.destroyed) // destroy was successful + child = null; // clear pointer for logic below + } + + if ($P && remove && !child) + $P.remove(); + else if ($P && $P[0]) { + // create list of ALL pane-classes that need to be removed + var root = o.paneClass // default="ui-layout-pane" + , pRoot = root +"-"+ pane // eg: "ui-layout-pane-west" + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + , classes = [ root, root+_open, root+_closed, root+_sliding, // generic classes + pRoot, pRoot+_open, pRoot+_closed, pRoot+_sliding ] // pane-specific classes + ; + $.merge(classes, getHoverClasses($P, true)); // ADD hover-classes + // remove all Layout classes from pane-element + $P .removeClass( classes.join(" ") ) // remove ALL pane-classes + .removeData("parentLayout") + .removeData("layoutPane") + .removeData("layoutRole") + .removeData("layoutEdge") + .removeData("autoHidden") // in case set + .unbind("."+ sID) // remove ALL Layout events + // TODO: remove these extra unbind commands when jQuery is fixed + //.unbind("mouseenter"+ sID) + //.unbind("mouseleave"+ sID) + ; + // do NOT reset CSS if this pane/content is STILL the container of a nested layout! + // the nested layout will reset its 'container' CSS when/if it is destroyed + if ($C && $C.data(d)) { + // a content-div may not have a specific width, so give it one to contain the Layout + $C.width( $C.width() ); + child.resizeAll(); // now resize the Layout + } + else if ($C) + $C.css( $C.data(css) ).removeData(css).removeData("layoutRole"); + // remove pane AFTER content in case there was a nested layout + if (!$P.data(d)) + $P.css( $P.data(css) ).removeData(css); + } + + // REMOVE pane resizer and toggler elements + if ($T) $T.remove(); + if ($R) $R.remove(); + + // CLEAR all pointers and state data + Instance[pane] = $Ps[pane] = $Cs[pane] = $Rs[pane] = $Ts[pane] = children[pane] = false; + s = { removed: true }; + + if (!skipResize) + resizeAll(); + } + + +/* + * ########################### + * ACTION METHODS + * ########################### + */ + +, _hidePane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , s = $P[0].style + ; + if (o.useOffscreenClose) { + if (!$P.data(_c.offscreenReset)) + $P.data(_c.offscreenReset, { left: s.left, right: s.right }); + $P.css( _c.offscreenCSS ); + } + else + $P.hide().removeData(_c.offscreenReset); + } + +, _showPane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , off = _c.offscreenCSS + , old = $P.data(_c.offscreenReset) + , s = $P[0].style + ; + $P .show() // ALWAYS show, just in case + .removeData(_c.offscreenReset); + if (o.useOffscreenClose && old) { + if (s.left == off.left) + s.left = old.left; + if (s.right == off.right) + s.right = old.right; + } + } + + + /** + * Completely 'hides' a pane, including its spacing - as if it does not exist + * The pane is not actually 'removed' from the source, so can use 'show' to un-hide it + * + * @param {string} pane The pane being hidden, ie: north, south, east, or west + * @param {boolean=} [noAnimation=false] + */ +, hide = function (evt_or_pane, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || s.isHidden) return; // pane does not exist OR is already hidden + + // onhide_start callback - will CANCEL hide if returns false + if (state.initialized && false === _runCallbacks("onhide_start", pane)) return; + + s.isSliding = false; // just in case + + // now hide the elements + if ($R) $R.hide(); // hide resizer-bar + if (!state.initialized || s.isClosed) { + s.isClosed = true; // to trigger open-animation on show() + s.isHidden = true; + s.isVisible = false; + if (!state.initialized) + _hidePane(pane); // no animation when loading page + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center"); + if (state.initialized || o.triggerEventsOnLoad) + _runCallbacks("onhide_end", pane); + } + else { + s.isHiding = true; // used by onclose + close(pane, false, noAnimation); // adjust all panes to fit + } + } + + /** + * Show a hidden pane - show as 'closed' by default unless openPane = true + * + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [openPane=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, show = function (evt_or_pane, openPane, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || !s.isHidden) return; // pane does not exist OR is not hidden + + // onshow_start callback - will CANCEL show if returns false + if (false === _runCallbacks("onshow_start", pane)) return; + + s.isSliding = false; // just in case + s.isShowing = true; // used by onopen/onclose + //s.isHidden = false; - will be set by open/close - if not cancelled + + // now show the elements + //if ($R) $R.show(); - will be shown by open/close + if (openPane === false) + close(pane, true); // true = force + else + open(pane, false, noAnimation, noAlert); // adjust all panes to fit + } + + + /** + * Toggles a pane open/closed by calling either open or close + * + * @param {string} pane The pane being toggled, ie: north, south, east, or west + * @param {boolean=} [slide=false] + */ +, toggle = function (evt_or_pane, slide) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + ; + if (evt) // called from to $R.dblclick OR triggerPaneEvent + evt.stopImmediatePropagation(); + if (s.isHidden) + show(pane); // will call 'open' after unhiding it + else if (s.isClosed) + open(pane, !!slide); + else + close(pane); + } + + + /** + * Utility method used during init or other auto-processes + * + * @param {string} pane The pane being closed + * @param {boolean=} [setHandles=false] + */ +, _closePane = function (pane, setHandles) { + var + $P = $Ps[pane] + , s = state[pane] + ; + _hidePane(pane); + s.isClosed = true; + s.isVisible = false; + // UNUSED: if (setHandles) setAsClosed(pane, true); // true = force + } + + /** + * Close the specified pane (animation optional), and resize all other panes as needed + * + * @param {string} pane The pane being closed, ie: north, south, east, or west + * @param {boolean=} [force=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [skipCallback=false] + */ +, close = function (evt_or_pane, force, noAnimation, skipCallback) { + var pane = evtPane.call(this, evt_or_pane); + // if pane has been initialized, but NOT the complete layout, close pane instantly + if (!state.initialized && $Ps[pane]) { + _closePane(pane); // INIT pane as closed + return; + } + if (!isInitialized()) return; + + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing, isHiding, wasSliding; + + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.closable && !s.isShowing && !s.isHiding) // invalid request // (!o.resizable && !o.closable) ??? + || (!force && s.isClosed && !s.isShowing) // already closed + ) return queueNext(); + + // onclose_start callback - will CANCEL hide if returns false + // SKIP if just 'showing' a hidden pane as 'closed' + var abort = !s.isShowing && false === _runCallbacks("onclose_start", pane); + + // transfer logic vars to temp vars + isShowing = s.isShowing; + isHiding = s.isHiding; + wasSliding = s.isSliding; + // now clear the logic vars (REQUIRED before aborting) + delete s.isShowing; + delete s.isHiding; + + if (abort) return queueNext(); + + doFX = !noAnimation && !s.isClosed && (o.fxName_close != "none"); + s.isMoving = true; + s.isClosed = true; + s.isVisible = false; + // update isHidden BEFORE sizing panes + if (isHiding) s.isHidden = true; + else if (isShowing) s.isHidden = false; + + if (s.isSliding) // pane is being closed, so UNBIND trigger events + bindStopSlidingEvents(pane, false); // will set isSliding=false + else // resize panes adjacent to this one + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center", false); // false = NOT skipCallback + + // if this pane has a resizer bar, move it NOW - before animation + setAsClosed(pane); + + // CLOSE THE PANE + if (doFX) { // animate the close + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.hide( o.fxName_close, o.fxSettings_close, o.fxSpeed_close, function () { + lockPaneForFX(pane, false); // undo + if (s.isClosed) close_2(); + queueNext(); + }); + } + else { // hide the pane without animation + _hidePane(pane); + close_2(); + queueNext(); + }; + }); + + // SUBROUTINE + function close_2 () { + s.isMoving = false; + bindStartSlidingEvent(pane, true); // will enable if o.slidable = true + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane ); + } + + // hide any masks shown while closing + hideMasks(); + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad)) { + // onclose callback - UNLESS just 'showing' a hidden pane as 'closed' + if (!isShowing) _runCallbacks("onclose_end", pane); + // onhide OR onshow callback + if (isShowing) _runCallbacks("onshow_end", pane); + if (isHiding) _runCallbacks("onhide_end", pane); + } + } + } + + /** + * @param {string} pane The pane just closed, ie: north, south, east, or west + */ +, setAsClosed = function (pane) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + ; + $R + .css(side, sC[inset]) // move the resizer + .removeClass( rClass+_open +" "+ rClass+_pane+_open ) + .removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + .addClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .unbind("dblclick."+ sID) + ; + // DISABLE 'resizing' when closed - do this BEFORE bindStartSlidingEvent? + if (o.resizable && $.layout.plugins.draggable) + $R + .draggable("disable") + .removeClass("ui-state-disabled") // do NOT apply disabled styling - not suitable here + .css("cursor", "default") + .attr("title","") + ; + + // if pane has a toggler button, adjust that too + if ($T) { + $T + .removeClass( tClass+_open +" "+ tClass+_pane+_open ) + .addClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .attr("title", o.togglerTip_closed) // may be blank + ; + // toggler-content - if exists + $T.children(".content-open").hide(); + $T.children(".content-closed").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, false); + + if (state.initialized) { + // resize 'length' and position togglers for adjacent panes + sizeHandles(); + } + } + + /** + * Open the specified pane (animation optional), and resize all other panes as needed + * + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [slide=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, open = function (evt_or_pane, slide, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.resizable && !o.closable && !s.isShowing) // invalid request + || (s.isVisible && !s.isSliding) // already open + ) return queueNext(); + + // pane can ALSO be unhidden by just calling show(), so handle this scenario + if (s.isHidden && !s.isShowing) { + queueNext(); // call before show() because it needs the queue free + show(pane, true); + return; + } + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else + // make sure there is enough space available to open the pane + setSizeLimits(pane, slide); + + // onopen_start callback - will CANCEL open if returns false + var cbReturn = _runCallbacks("onopen_start", pane); + + if (cbReturn === "abort") + return queueNext(); + + // update pane-state again in case options were changed in onopen_start + if (cbReturn !== "NC") // NC = "No Callback" + setSizeLimits(pane, slide); + + if (s.minSize > s.maxSize) { // INSUFFICIENT ROOM FOR PANE TO OPEN! + syncPinBtns(pane, false); // make sure pin-buttons are reset + if (!noAlert && o.noRoomToOpenTip) + alert(o.noRoomToOpenTip); + return queueNext(); // ABORT + } + + if (slide) // START Sliding - will set isSliding=true + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (s.isSliding) // PIN PANE (stop sliding) - open pane 'normally' instead + bindStopSlidingEvents(pane, false); // UNBIND trigger events - will set isSliding=false + else if (o.slidable) + bindStartSlidingEvent(pane, false); // UNBIND trigger events + + s.noRoom = false; // will be reset by makePaneFit if 'noRoom' + makePaneFit(pane); + + // transfer logic var to temp var + isShowing = s.isShowing; + // now clear the logic var + delete s.isShowing; + + doFX = !noAnimation && s.isClosed && (o.fxName_open != "none"); + s.isMoving = true; + s.isVisible = true; + s.isClosed = false; + // update isHidden BEFORE sizing panes - WHY??? Old? + if (isShowing) s.isHidden = false; + + if (doFX) { // ANIMATE + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + if (s.isSliding) masks += ","+ _c.oppositeEdge[pane]; + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.show( o.fxName_open, o.fxSettings_open, o.fxSpeed_open, function() { + lockPaneForFX(pane, false); // undo + if (s.isVisible) open_2(); // continue + queueNext(); + }); + } + else { // no animation + _showPane(pane);// just show pane and... + open_2(); // continue + queueNext(); + }; + }); + + // SUBROUTINE + function open_2 () { + s.isMoving = false; + + // cure iframe display issues + _fixIframe(pane); + + // NOTE: if isSliding, then other panes are NOT 'resized' + if (!s.isSliding) { // resize all panes adjacent to this one + hideMasks(); // remove any masks shown while opening + sizeMidPanes(_c[pane].dir=="vert" ? "center" : "", false); // false = NOT skipCallback + } + + // set classes, position handles and execute callbacks... + setAsOpen(pane); + }; + + } + + /** + * @param {string} pane The pane just opened, ie: north, south, east, or west + * @param {boolean=} [skipCallback=false] + */ +, setAsOpen = function (pane, skipCallback) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _closed = "-closed" + , _sliding= "-sliding" + ; + $R + .css(side, sC[inset] + getPaneSize(pane)) // move the resizer + .removeClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .addClass( rClass+_open +" "+ rClass+_pane+_open ) + ; + if (s.isSliding) + $R.addClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + else // in case 'was sliding' + $R.removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + + if (o.resizerDblClickToggle) + $R.bind("dblclick", toggle ); + removeHover( 0, $R ); // remove hover classes + if (o.resizable && $.layout.plugins.draggable) + $R .draggable("enable") + .css("cursor", o.resizerCursor) + .attr("title", o.resizerTip); + else if (!s.isSliding) + $R.css("cursor", "default"); // n-resize, s-resize, etc + + // if pane also has a toggler button, adjust that too + if ($T) { + $T .removeClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .addClass( tClass+_open +" "+ tClass+_pane+_open ) + .attr("title", o.togglerTip_open); // may be blank + removeHover( 0, $T ); // remove hover classes + // toggler-content - if exists + $T.children(".content-closed").hide(); + $T.children(".content-open").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, !s.isSliding); + + // update pane-state dimensions - BEFORE resizing content + $.extend(s, elDims($P)); + + if (state.initialized) { + // resize resizer & toggler sizes for all panes + sizeHandles(); + // resize content every time pane opens - to be sure + sizeContent(pane, true); // true = remeasure headers/footers, even if 'pane.isMoving' + } + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad) && $P.is(":visible")) { + // onopen callback + _runCallbacks("onopen_end", pane); + // onshow callback - TODO: should this be here? + if (s.isShowing) _runCallbacks("onshow_end", pane); + + // ALSO call onresize because layout-size *may* have changed while pane was closed + if (state.initialized) + _runCallbacks("onresize_end", pane); + } + + // TODO: Somehow sizePane("north") is being called after this point??? + } + + + /** + * slideOpen / slideClose / slideToggle + * + * Pass-though methods for sliding + */ +, slideOpen = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + , delay = options[pane].slideDelay_open + ; + // prevent event from triggering on NEW resizer binding created below + if (evt) evt.stopImmediatePropagation(); + + if (s.isClosed && evt && evt.type === "mouseenter" && delay > 0) + // trigger = mouseenter - use a delay + timer.set(pane+"_openSlider", open_NOW, delay); + else + open_NOW(); // will unbind events if is already open + + /** + * SUBROUTINE for timed open + */ + function open_NOW () { + if (!s.isClosed) // skip if no longer closed! + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (!s.isMoving) + open(pane, true); // true = slide - open() will handle binding + }; + } + +, slideClose = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , delay = s.isMoving ? 1000 : 300 // MINIMUM delay - option may override + ; + if (s.isClosed || s.isResizing) + return; // skip if already closed OR in process of resizing + else if (o.slideTrigger_close === "click") + close_NOW(); // close immediately onClick + else if (o.preventQuickSlideClose && s.isMoving) + return; // handle Chrome quick-close on slide-open + else if (o.preventPrematureSlideClose && evt && $.layout.isMouseOverElem(evt, $Ps[pane])) + return; // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + else if (evt) // trigger = mouseleave - use a delay + // 1 sec delay if 'opening', else .3 sec + timer.set(pane+"_closeSlider", close_NOW, max(o.slideDelay_close, delay)); + else // called programically + close_NOW(); + + /** + * SUBROUTINE for timed close + */ + function close_NOW () { + if (s.isClosed) // skip 'close' if already closed! + bindStopSlidingEvents(pane, false); // UNBIND trigger events - TODO: is this needed here? + else if (!s.isMoving) + close(pane); // close will handle unbinding + }; + } + + /** + * @param {string} pane The pane being opened, ie: north, south, east, or west + */ +, slideToggle = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + toggle(pane, true); + } + + + /** + * Must set left/top on East/South panes so animation will work properly + * + * @param {string} pane The pane to lock, 'east' or 'south' - any other is ignored! + * @param {boolean} doLock true = set left/top, false = remove + */ +, lockPaneForFX = function (pane, doLock) { + var $P = $Ps[pane] + , s = state[pane] + , o = options[pane] + , z = options.zIndexes + ; + if (doLock) { + $P.css({ zIndex: z.pane_animate }); // overlay all elements during animation + if (pane=="south") + $P.css({ top: sC.insetTop + sC.innerHeight - $P.outerHeight() }); + else if (pane=="east") + $P.css({ left: sC.insetLeft + sC.innerWidth - $P.outerWidth() }); + } + else { // animation DONE - RESET CSS + // TODO: see if this can be deleted. It causes a quick-close when sliding in Chrome + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + if (pane=="south") + $P.css({ top: "auto" }); + // if pane is positioned 'off-screen', then DO NOT screw with it! + else if (pane=="east" && !$P.css("left").match(/\-99999/)) + $P.css({ left: "auto" }); + // fix anti-aliasing in IE - only needed for animations that change opacity + if (browser.msie && o.fxOpacityFix && o.fxName_open != "slide" && $P.css("filter") && $P.css("opacity") == 1) + $P[0].style.removeAttribute('filter'); + } + } + + + /** + * Toggle sliding functionality of a specific pane on/off by adding removing 'slide open' trigger + * + * @see open(), close() + * @param {string} pane The pane to enable/disable, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable sliding? + */ +, bindStartSlidingEvent = function (pane, enable) { + var o = options[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , evtName = o.slideTrigger_open.toLowerCase() + ; + if (!$R || (enable && !o.slidable)) return; + + // make sure we have a valid event + if (evtName.match(/mouseover/)) + evtName = o.slideTrigger_open = "mouseenter"; + else if (!evtName.match(/click|dblclick|mouseenter/)) + evtName = o.slideTrigger_open = "click"; + + $R + // add or remove event + [enable ? "bind" : "unbind"](evtName +'.'+ sID, slideOpen) + // set the appropriate cursor & title/tip + .css("cursor", enable ? o.sliderCursor : "default") + .attr("title", enable ? o.sliderTip : "") + ; + } + + /** + * Add or remove 'mouseleave' events to 'slide close' when pane is 'sliding' open or closed + * Also increases zIndex when pane is sliding open + * See bindStartSlidingEvent for code to control 'slide open' + * + * @see slideOpen(), slideClose() + * @param {string} pane The pane to process, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable events? + */ +, bindStopSlidingEvents = function (pane, enable) { + var o = options[pane] + , s = state[pane] + , c = _c[pane] + , z = options.zIndexes + , evtName = o.slideTrigger_close.toLowerCase() + , action = (enable ? "bind" : "unbind") + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + s.isSliding = enable; // logic + timer.clear(pane+"_closeSlider"); // just in case + + // remove 'slideOpen' event from resizer + // ALSO will raise the zIndex of the pane & resizer + if (enable) bindStartSlidingEvent(pane, false); + + // RE/SET zIndex - increases when pane is sliding-open, resets to normal when not + $P.css("zIndex", enable ? z.pane_sliding : z.pane_normal); + $R.css("zIndex", enable ? z.pane_sliding+2 : z.resizer_normal); // NOTE: mask = pane_sliding+1 + + // make sure we have a valid event + if (!evtName.match(/click|mouseleave/)) + evtName = o.slideTrigger_close = "mouseleave"; // also catches 'mouseout' + + // add/remove slide triggers + $R[action](evtName, slideClose); // base event on resize + // need extra events for mouseleave + if (evtName === "mouseleave") { + // also close on pane.mouseleave + $P[action]("mouseleave."+ sID, slideClose); + // cancel timer when mouse moves between 'pane' and 'resizer' + $R[action]("mouseenter."+ sID, cancelMouseOut); + $P[action]("mouseenter."+ sID, cancelMouseOut); + } + + if (!enable) + timer.clear(pane+"_closeSlider"); + else if (evtName === "click" && !o.resizable) { + // IF pane is not resizable (which already has a cursor and tip) + // then set the a cursor & title/tip on resizer when sliding + $R.css("cursor", enable ? o.sliderCursor : "default"); + $R.attr("title", enable ? o.togglerTip_open : ""); // use Toggler-tip, eg: "Close Pane" + } + + // SUBROUTINE for mouseleave timer clearing + function cancelMouseOut (evt) { + timer.clear(pane+"_closeSlider"); + evt.stopPropagation(); + } + } + + + /** + * Hides/closes a pane if there is insufficient room - reverses this when there is room again + * MUST have already called setSizeLimits() before calling this method + * + * @param {string} pane The pane being resized + * @param {boolean=} [isOpening=false] Called from onOpen? + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, makePaneFit = function (pane, isOpening, skipCallback, force) { + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isSidePane = c.dir==="vert" + , hasRoom = false + ; + // special handling for center & east/west panes + if (pane === "center" || (isSidePane && s.noVerticalRoom)) { + // see if there is enough room to display the pane + // ERROR: hasRoom = s.minHeight <= s.maxHeight && (isSidePane || s.minWidth <= s.maxWidth); + hasRoom = (s.maxHeight >= 0); + if (hasRoom && s.noRoom) { // previously hidden due to noRoom, so show now + _showPane(pane); + if ($R) $R.show(); + s.isVisible = true; + s.noRoom = false; + if (isSidePane) s.noVerticalRoom = false; + _fixIframe(pane); + } + else if (!hasRoom && !s.noRoom) { // not currently hidden, so hide now + _hidePane(pane); + if ($R) $R.hide(); + s.isVisible = false; + s.noRoom = true; + } + } + + // see if there is enough room to fit the border-pane + if (pane === "center") { + // ignore center in this block + } + else if (s.minSize <= s.maxSize) { // pane CAN fit + hasRoom = true; + if (s.size > s.maxSize) // pane is too big - shrink it + sizePane(pane, s.maxSize, skipCallback, force, true); // true = noAnimation + else if (s.size < s.minSize) // pane is too small - enlarge it + sizePane(pane, s.minSize, skipCallback, force, true); + // need s.isVisible because new pseudoClose method keeps pane visible, but off-screen + else if ($R && s.isVisible && $P.is(":visible")) { + // make sure resizer-bar is positioned correctly + // handles situation where nested layout was 'hidden' when initialized + var side = c.side.toLowerCase() + , pos = s.size + sC["inset"+ c.side] + ; + if ($.layout.cssNum($R, side) != pos) $R.css( side, pos ); + } + + // if was previously hidden due to noRoom, then RESET because NOW there is room + if (s.noRoom) { + // s.noRoom state will be set by open or show + if (s.wasOpen && o.closable) { + if (o.autoReopen) + open(pane, false, true, true); // true = noAnimation, true = noAlert + else // leave the pane closed, so just update state + s.noRoom = false; + } + else + show(pane, s.wasOpen, true, true); // true = noAnimation, true = noAlert + } + } + else { // !hasRoom - pane CANNOT fit + if (!s.noRoom) { // pane not set as noRoom yet, so hide or close it now... + s.noRoom = true; // update state + s.wasOpen = !s.isClosed && !s.isSliding; + if (s.isClosed){} // SKIP + else if (o.closable) // 'close' if possible + close(pane, true, true); // true = force, true = noAnimation + else // 'hide' pane if cannot just be closed + hide(pane, true); // true = noAnimation + } + } + } + + + /** + * sizePane / manualSizePane + * sizePane is called only by internal methods whenever a pane needs to be resized + * manualSizePane is an exposed flow-through method allowing extra code when pane is 'manually resized' + * + * @param {string} pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [noAnimation=false] + */ +, manualSizePane = function (evt_or_pane, size, skipCallback, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + // if resizing callbacks have been delayed and resizing is now DONE, force resizing to complete... + , forceResize = o.livePaneResizing && !s.isResizing + ; + // ANY call to manualSizePane disables autoResize - ie, percentage sizing + o.autoResize = false; + // flow-through... + sizePane(pane, size, skipCallback, forceResize, noAnimation); // will animate resize if option enabled + } + + /** + * @param {string} pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] Force resizing even if does not seem necessary + * @param {boolean=} [noAnimation=false] + */ +, sizePane = function (evt_or_pane, size, skipCallback, force, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) // probably NEVER called from event? + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , side = _c[pane].side.toLowerCase() + , dimName = _c[pane].sizeType.toLowerCase() + , inset = "inset"+ _c[pane].side + , skipResizeWhileDragging = s.isResizing && !o.triggerEventsDuringLiveResize + , doFX = noAnimation !== true && o.animatePaneSizing + , oldSize, newSize + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + // calculate 'current' min/max sizes + setSizeLimits(pane); // update pane-state + oldSize = s.size; + size = _parseSize(pane, size); // handle percentages & auto + size = max(size, _parseSize(pane, o.minSize)); + size = min(size, s.maxSize); + if (size < s.minSize) { // not enough room for pane! + queueNext(); // call before makePaneFit() because it needs the queue free + makePaneFit(pane, false, skipCallback); // will hide or close pane + return; + } + + // IF newSize is same as oldSize, then nothing to do - abort + if (!force && size === oldSize) + return queueNext(); + + // onresize_start callback CANNOT cancel resizing because this would break the layout! + if (!skipCallback && state.initialized && s.isVisible) + _runCallbacks("onresize_start", pane); + + // resize the pane, and make sure its visible + newSize = cssSize(pane, size); + + if (doFX && $P.is(":visible")) { // ANIMATE + var fx = $.layout.effects.size[pane] || $.layout.effects.size.all + , easing = o.fxSettings_size.easing || fx.easing + , z = options.zIndexes + , props = {}; + props[ dimName ] = newSize +'px'; + s.isMoving = true; + // overlay all elements during animation + $P.css({ zIndex: z.pane_animate }) + .show().animate( props, o.fxSpeed_size, easing, function(){ + // reset zIndex after animation + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + s.isMoving = false; + sizePane_2(); // continue + queueNext(); + }); + } + else { // no animation + $P.css( dimName, newSize ); // resize pane + // if pane is visible, then + if ($P.is(":visible")) + sizePane_2(); // continue + else { + // pane is NOT VISIBLE, so just update state data... + // when pane is *next opened*, it will have the new size + s.size = size; // update state.size + $.extend(s, elDims($P)); // update state dimensions + } + queueNext(); + }; + + }); + + // SUBROUTINE + function sizePane_2 () { + /* Panes are sometimes not sized precisely in some browsers!? + * This code will resize the pane up to 3 times to nudge the pane to the correct size + */ + var actual = dimName==='width' ? $P.outerWidth() : $P.outerHeight() + , tries = [{ + pane: pane + , count: 1 + , target: size + , actual: actual + , correct: (size === actual) + , attempt: size + , cssSize: newSize + }] + , lastTry = tries[0] + , msg = 'Inaccurate size after resizing the '+ pane +'-pane.' + ; + while ( !lastTry.correct ) { + thisTry = { pane: pane, count: lastTry.count+1, target: size }; + + if (lastTry.actual > size) + thisTry.attempt = max(0, lastTry.attempt - (lastTry.actual - size)); + else // lastTry.actual < size + thisTry.attempt = max(0, lastTry.attempt + (size - lastTry.actual)); + + thisTry.cssSize = cssSize(pane, thisTry.attempt); + $P.css( dimName, thisTry.cssSize ); + + thisTry.actual = dimName=='width' ? $P.outerWidth() : $P.outerHeight(); + thisTry.correct = (size === thisTry.actual); + + // if showDebugMessages, log attempts and alert the user of this *non-fatal error* + if (options.showDebugMessages) { + if ( tries.length === 1) { + _log(msg, false); + _log(lastTry, false); + } + _log(thisTry, false); + } + + // after 4 tries, is as close as its gonna get! + if (tries.length > 3) break; + + tries.push( thisTry ); + lastTry = tries[ tries.length - 1 ]; + } + // END TESTING CODE + + // update pane-state dimensions + s.size = size; + $.extend(s, elDims($P)); + + if (s.isVisible && $P.is(":visible")) { + // reposition the resizer-bar + if ($R) $R.css( side, size + sC[inset] ); + // resize the content-div + sizeContent(pane); + } + + if (!skipCallback && !skipResizeWhileDragging && state.initialized && s.isVisible) + _runCallbacks("onresize_end", pane); + + // resize all the adjacent panes, and adjust their toggler buttons + // when skipCallback passed, it means the controlling method will handle 'other panes' + if (!skipCallback) { + // also no callback if live-resize is in progress and NOT triggerEventsDuringLiveResize + if (!s.isSliding) sizeMidPanes(_c[pane].dir=="horz" ? "" : "center", skipResizeWhileDragging, force); + sizeHandles(); + } + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (size < oldSize && state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane, false, skipCallback ); + } + + // DEBUG - ALERT user/developer so they know there was a sizing problem + if (options.showDebugMessages && tries.length > 1) + _log(msg +'\nSee the Error Console for details.', true); + } + } + + /** + * @see initPanes(), sizePane(), resizeAll(), open(), close(), hide() + * @param {string} panes The pane(s) being resized, comma-delmited string + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, sizeMidPanes = function (panes, skipCallback, force) { + panes = (panes ? panes : "east,west,center").split(","); + + $.each(panes, function (i, pane) { + if (!$Ps[pane]) return; // NO PANE - skip + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isCenter= (pane=="center") + , hasRoom = true + , CSS = {} + , newCenter = calcNewCenterPaneDims() + ; + // update pane-state dimensions + $.extend(s, elDims($P)); + + if (pane === "center") { + if (!force && s.isVisible && newCenter.width === s.outerWidth && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // set state for makePaneFit() logic + $.extend(s, cssMinDims(pane), { + maxWidth: newCenter.width + , maxHeight: newCenter.height + }); + CSS = newCenter; + // convert OUTER width/height to CSS width/height + CSS.width = cssW($P, CSS.width); + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, CSS.height); + hasRoom = CSS.width >= 0 && CSS.height >= 0; // height >= 0 = ALWAYS TRUE NOW + // during layout init, try to shrink east/west panes to make room for center + if (!state.initialized && o.minWidth > s.outerWidth) { + var + reqPx = o.minWidth - s.outerWidth + , minE = options.east.minSize || 0 + , minW = options.west.minSize || 0 + , sizeE = state.east.size + , sizeW = state.west.size + , newE = sizeE + , newW = sizeW + ; + if (reqPx > 0 && state.east.isVisible && sizeE > minE) { + newE = max( sizeE-minE, sizeE-reqPx ); + reqPx -= sizeE-newE; + } + if (reqPx > 0 && state.west.isVisible && sizeW > minW) { + newW = max( sizeW-minW, sizeW-reqPx ); + reqPx -= sizeW-newW; + } + // IF we found enough extra space, then resize the border panes as calculated + if (reqPx === 0) { + if (sizeE != minE) + sizePane('east', newE, true, force, true); // true = skipCallback/noAnimation - initPanes will handle when done + if (sizeW != minW) + sizePane('west', newW, true, force, true); + // now start over! + sizeMidPanes('center', skipCallback, force); + return; // abort this loop + } + } + } + else { // for east and west, set only the height, which is same as center height + // set state.min/maxWidth/Height for makePaneFit() logic + if (s.isVisible && !s.noVerticalRoom) + $.extend(s, elDims($P), cssMinDims(pane)) + if (!force && !s.noVerticalRoom && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // east/west have same top, bottom & height as center + CSS.top = newCenter.top; + CSS.bottom = newCenter.bottom; + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, newCenter.height); + s.maxHeight = CSS.height; + hasRoom = (s.maxHeight >= 0); // ALWAYS TRUE NOW + if (!hasRoom) s.noVerticalRoom = true; // makePaneFit() logic + } + + if (hasRoom) { + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_start", pane); + + $P.css(CSS); // apply the CSS to pane + sizeHandles(pane); // also update resizer length + if (s.noRoom && !s.isClosed && !s.isHidden) + makePaneFit(pane); // will re-open/show auto-closed/hidden pane + if (s.isVisible) { + $.extend(s, elDims($P)); // update pane dimensions + if (state.initialized) sizeContent(pane); // also resize the contents, if exists + } + } + else if (!s.noRoom && s.isVisible) // no room for pane + makePaneFit(pane); // will hide or close pane + + if (!s.isVisible) + return true; // DONE - next pane + + /* + * Extra CSS for IE6 or IE7 in Quirks-mode - add 'width' to NORTH/SOUTH panes + * Normally these panes have only 'left' & 'right' positions so pane auto-sizes + * ALSO required when pane is an IFRAME because will NOT default to 'full width' + */ + if (pane === "center") { // finished processing midPanes + var b = $.layout.browser; + var fix = b.isIE6 || (b.msie && !$.support.boxModel); + if ($Ps.north && (fix || state.north.tagName=="IFRAME")) + $Ps.north.css("width", cssW($Ps.north, sC.innerWidth)); + if ($Ps.south && (fix || state.south.tagName=="IFRAME")) + $Ps.south.css("width", cssW($Ps.south, sC.innerWidth)); + } + + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_end", pane); + }); + } + + + /** + * @see window.onresize(), callbacks or custom code + */ +, resizeAll = function () { + if (!state.initialized) { + _initLayoutElements(); + return; // no need to resize since we just initialized! + } + var oldW = sC.innerWidth + , oldH = sC.innerHeight + ; + // cannot size layout when 'container' is hidden or collapsed + if (!$N.is(":visible:") ) return; + $.extend( state.container, elDims( $N ) ); // UPDATE container dimensions + if (!sC.outerHeight) return; + + // onresizeall_start will CANCEL resizing if returns false + // state.container has already been set, so user can access this info for calcuations + if (false === _runCallbacks("onresizeall_start")) return false; + + var // see if container is now 'smaller' than before + shrunkH = (sC.innerHeight < oldH) + , shrunkW = (sC.innerWidth < oldW) + , $P, o, s, dir + ; + // NOTE special order for sizing: S-N-E-W + $.each(["south","north","east","west"], function (i, pane) { + if (!$Ps[pane]) return; // no pane - SKIP + s = state[pane]; + o = options[pane]; + dir = _c[pane].dir; + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else { + setSizeLimits(pane); + makePaneFit(pane, false, true, true); // true=skipCallback/forceResize + } + }); + + sizeMidPanes("", true, true); // true=skipCallback, true=forceResize + sizeHandles(); // reposition the toggler elements + + // trigger all individual pane callbacks AFTER layout has finished resizing + o = options; // reuse alias + $.each(_c.allPanes, function (i, pane) { + $P = $Ps[pane]; + if (!$P) return; // SKIP + if (state[pane].isVisible) // undefined for non-existent panes + _runCallbacks("onresize_end", pane); // callback - if exists + }); + + _runCallbacks("onresizeall_end"); + //_triggerLayoutEvent(pane, 'resizeall'); + } + + /** + * Whenever a pane resizes or opens that has a nested layout, trigger resizeAll + * + * @param {string} pane The pane just resized or opened + */ +, resizeChildLayout = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + if (!options[pane].resizeChildLayout) return; + var $P = $Ps[pane] + , $C = $Cs[pane] + , d = "layout" + , P = Instance[pane] + , L = children[pane] + ; + // user may have manually set EITHER instance pointer, so handle that + if (P.child && !L) { + // have to reverse the pointers! + var el = P.child.container; + L = children[pane] = (el ? el.data(d) : 0) || null; // set pointer _directly_ to layout instance + } + + // if a layout-pointer exists, see if child has been destroyed + if (L && L.destroyed) + L = children[pane] = null; // clear child pointers + // no child layout pointer is set - see if there is a child layout NOW + if (!L) L = children[pane] = $P.data(d) || ($C ? $C.data(d) : 0) || null; // set/update child pointers + + // ALWAYS refresh the pane.child alias + P.child = children[pane]; + + if (L) L.resizeAll(); + } + + + /** + * IF pane has a content-div, then resize all elements inside pane to fit pane-height + * + * @param {string=} [panes=""] The pane(s) being resized + * @param {boolean=} [remeasure=false] Should the content (header/footer) be remeasured? + */ +, sizeContent = function (evt_or_panes, remeasure) { + if (!isInitialized()) return; + + var panes = evtPane.call(this, evt_or_panes); + panes = panes ? panes.split(",") : _c.allPanes; + + $.each(panes, function (idx, pane) { + var + $P = $Ps[pane] + , $C = $Cs[pane] + , o = options[pane] + , s = state[pane] + , m = s.content // m = measurements + ; + if (!$P || !$C || !$P.is(":visible")) return true; // NOT VISIBLE - skip + + // if content-element was REMOVED, update OR remove the pointer + if (!$C.length) { + initContent(pane, false); // false = do NOT sizeContent() - already there! + if (!$C) return; // no replacement element found - pointer have been removed + } + + // onsizecontent_start will CANCEL resizing if returns false + if (false === _runCallbacks("onsizecontent_start", pane)) return; + + // skip re-measuring offsets if live-resizing + if ((!s.isMoving && !s.isResizing) || o.liveContentResizing || remeasure || m.top == undefined) { + _measure(); + // if any footers are below pane-bottom, they may not measure correctly, + // so allow pane overflow and re-measure + if (m.hiddenFooters > 0 && $P.css("overflow") === "hidden") { + $P.css("overflow", "visible"); + _measure(); // remeasure while overflowing + $P.css("overflow", "hidden"); + } + } + // NOTE: spaceAbove/Below *includes* the pane paddingTop/Bottom, but not pane.borders + var newH = s.innerHeight - (m.spaceAbove - s.css.paddingTop) - (m.spaceBelow - s.css.paddingBottom); + + if (!$C.is(":visible") || m.height != newH) { + // size the Content element to fit new pane-size - will autoHide if not enough room + setOuterHeight($C, newH, true); // true=autoHide + m.height = newH; // save new height + }; + + if (state.initialized) + _runCallbacks("onsizecontent_end", pane); + + function _below ($E) { + return max(s.css.paddingBottom, (parseInt($E.css("marginBottom"), 10) || 0)); + }; + + function _measure () { + var + ignore = options[pane].contentIgnoreSelector + , $Fs = $C.nextAll().not(ignore || ':lt(0)') // not :lt(0) = ALL + , $Fs_vis = $Fs.filter(':visible') + , $F = $Fs_vis.filter(':last') + ; + m = { + top: $C[0].offsetTop + , height: $C.outerHeight() + , numFooters: $Fs.length + , hiddenFooters: $Fs.length - $Fs_vis.length + , spaceBelow: 0 // correct if no content footer ($E) + } + m.spaceAbove = m.top; // just for state - not used in calc + m.bottom = m.top + m.height; + if ($F.length) + //spaceBelow = (LastFooter.top + LastFooter.height) [footerBottom] - Content.bottom + max(LastFooter.marginBottom, pane.paddingBotom) + m.spaceBelow = ($F[0].offsetTop + $F.outerHeight()) - m.bottom + _below($F); + else // no footer - check marginBottom on Content element itself + m.spaceBelow = _below($C); + }; + }); + } + + + /** + * Called every time a pane is opened, closed, or resized to slide the togglers to 'center' and adjust their length if necessary + * + * @see initHandles(), open(), close(), resizeAll() + * @param {string=} [panes=""] The pane(s) being resized + */ +, sizeHandles = function (evt_or_panes) { + var panes = evtPane.call(this, evt_or_panes) + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (i, pane) { + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , $TC + ; + if (!$P || !$R) return; + + var + dir = _c[pane].dir + , _state = (s.isClosed ? "_closed" : "_open") + , spacing = o["spacing"+ _state] + , togAlign = o["togglerAlign"+ _state] + , togLen = o["togglerLength"+ _state] + , paneLen + , left + , offset + , CSS = {} + ; + + if (spacing === 0) { + $R.hide(); + return; + } + else if (!s.noRoom && !s.isHidden) // skip if resizer was hidden for any reason + $R.show(); // in case was previously hidden + + // Resizer Bar is ALWAYS same width/height of pane it is attached to + if (dir === "horz") { // north/south + //paneLen = $P.outerWidth(); // s.outerWidth || + paneLen = sC.innerWidth; // handle offscreen-panes + s.resizerLength = paneLen; + left = $.layout.cssNum($P, "left") + $R.css({ + width: cssW($R, paneLen) // account for borders & padding + , height: cssH($R, spacing) // ditto + , left: left > -9999 ? left : sC.insetLeft // handle offscreen-panes + }); + } + else { // east/west + paneLen = $P.outerHeight(); // s.outerHeight || + s.resizerLength = paneLen; + $R.css({ + height: cssH($R, paneLen) // account for borders & padding + , width: cssW($R, spacing) // ditto + , top: sC.insetTop + getPaneSize("north", true) // TODO: what if no North pane? + //, top: $.layout.cssNum($Ps["center"], "top") + }); + } + + // remove hover classes + removeHover( o, $R ); + + if ($T) { + if (togLen === 0 || (s.isSliding && o.hideTogglerOnSlide)) { + $T.hide(); // always HIDE the toggler when 'sliding' + return; + } + else + $T.show(); // in case was previously hidden + + if (!(togLen > 0) || togLen === "100%" || togLen > paneLen) { + togLen = paneLen; + offset = 0; + } + else { // calculate 'offset' based on options.PANE.togglerAlign_open/closed + if (isStr(togAlign)) { + switch (togAlign) { + case "top": + case "left": offset = 0; + break; + case "bottom": + case "right": offset = paneLen - togLen; + break; + case "middle": + case "center": + default: offset = round((paneLen - togLen) / 2); // 'default' catches typos + } + } + else { // togAlign = number + var x = parseInt(togAlign, 10); // + if (togAlign >= 0) offset = x; + else offset = paneLen - togLen + x; // NOTE: x is negative! + } + } + + if (dir === "horz") { // north/south + var width = cssW($T, togLen); + $T.css({ + width: width // account for borders & padding + , height: cssH($T, spacing) // ditto + , left: offset // TODO: VERIFY that toggler positions correctly for ALL values + , top: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginLeft", round((width-$TC.outerWidth())/2)); // could be negative + }); + } + else { // east/west + var height = cssH($T, togLen); + $T.css({ + height: height // account for borders & padding + , width: cssW($T, spacing) // ditto + , top: offset // POSITION the toggler + , left: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginTop", round((height-$TC.outerHeight())/2)); // could be negative + }); + } + + // remove ALL hover classes + removeHover( 0, $T ); + } + + // DONE measuring and sizing this resizer/toggler, so can be 'hidden' now + if (!state.initialized && (o.initHidden || s.noRoom)) { + $R.hide(); + if ($T) $T.hide(); + } + }); + } + + + /** + * @param {string} pane + */ +, enableClosable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + , o = options[pane] + ; + if (!$T) return; + o.closable = true; + $T .bind("click."+ sID, function(evt){ evt.stopPropagation(); toggle(pane); }) + .css("visibility", "visible") + .css("cursor", "pointer") + .attr("title", state[pane].isClosed ? o.togglerTip_closed : o.togglerTip_open) // may be blank + .show(); + } + /** + * @param {string} pane + * @param {boolean=} [hide=false] + */ +, disableClosable = function (evt_or_pane, hide) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + ; + if (!$T) return; + options[pane].closable = false; + // is closable is disable, then pane MUST be open! + if (state[pane].isClosed) open(pane, false, true); + $T .unbind("."+ sID) + .css("visibility", hide ? "hidden" : "visible") // instead of hide(), which creates logic issues + .css("cursor", "default") + .attr("title", ""); + } + + + /** + * @param {string} pane + */ +, enableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].slidable = true; + if (s.isClosed) + bindStartSlidingEvent(pane, true); + } + /** + * @param {string} pane + */ +, disableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R) return; + options[pane].slidable = false; + if (state[pane].isSliding) + close(pane, false, true); + else { + bindStartSlidingEvent(pane, false); + $R .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + } + + + /** + * @param {string} pane + */ +, enableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + , o = options[pane] + ; + if (!$R || !$R.data('draggable')) return; + o.resizable = true; + $R.draggable("enable"); + if (!state[pane].isClosed) + $R .css("cursor", o.resizerCursor) + .attr("title", o.resizerTip); + } + /** + * @param {string} pane + */ +, disableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].resizable = false; + $R .draggable("disable") + .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + + + /** + * Move a pane from source-side (eg, west) to target-side (eg, east) + * If pane exists on target-side, move that to source-side, ie, 'swap' the panes + * + * @param {string} pane1 The pane/edge being swapped + * @param {string} pane2 ditto + */ +, swapPanes = function (evt_or_pane1, pane2) { + if (!isInitialized()) return; + var pane1 = evtPane.call(this, evt_or_pane1); + // change state.edge NOW so callbacks can know where pane is headed... + state[pane1].edge = pane2; + state[pane2].edge = pane1; + // run these even if NOT state.initialized + if (false === _runCallbacks("onswap_start", pane1) + || false === _runCallbacks("onswap_start", pane2) + ) { + state[pane1].edge = pane1; // reset + state[pane2].edge = pane2; + return; + } + + var + oPane1 = copy( pane1 ) + , oPane2 = copy( pane2 ) + , sizes = {} + ; + sizes[pane1] = oPane1 ? oPane1.state.size : 0; + sizes[pane2] = oPane2 ? oPane2.state.size : 0; + + // clear pointers & state + $Ps[pane1] = false; + $Ps[pane2] = false; + state[pane1] = {}; + state[pane2] = {}; + + // ALWAYS remove the resizer & toggler elements + if ($Ts[pane1]) $Ts[pane1].remove(); + if ($Ts[pane2]) $Ts[pane2].remove(); + if ($Rs[pane1]) $Rs[pane1].remove(); + if ($Rs[pane2]) $Rs[pane2].remove(); + $Rs[pane1] = $Rs[pane2] = $Ts[pane1] = $Ts[pane2] = false; + + // transfer element pointers and data to NEW Layout keys + move( oPane1, pane2 ); + move( oPane2, pane1 ); + + // cleanup objects + oPane1 = oPane2 = sizes = null; + + // make panes 'visible' again + if ($Ps[pane1]) $Ps[pane1].css(_c.visible); + if ($Ps[pane2]) $Ps[pane2].css(_c.visible); + + // fix any size discrepancies caused by swap + resizeAll(); + + // run these even if NOT state.initialized + _runCallbacks("onswap_end", pane1); + _runCallbacks("onswap_end", pane2); + + return; + + function copy (n) { // n = pane + var + $P = $Ps[n] + , $C = $Cs[n] + ; + return !$P ? false : { + pane: n + , P: $P ? $P[0] : false + , C: $C ? $C[0] : false + , state: $.extend(true, {}, state[n]) + , options: $.extend(true, {}, options[n]) + } + }; + + function move (oPane, pane) { + if (!oPane) return; + var + P = oPane.P + , C = oPane.C + , oldPane = oPane.pane + , c = _c[pane] + , side = c.side.toLowerCase() + , inset = "inset"+ c.side + // save pane-options that should be retained + , s = $.extend({}, state[pane]) + , o = options[pane] + // RETAIN side-specific FX Settings - more below + , fx = { resizerCursor: o.resizerCursor } + , re, size, pos + ; + $.each("fxName,fxSpeed,fxSettings".split(","), function (i, k) { + fx[k +"_open"] = o[k +"_open"]; + fx[k +"_close"] = o[k +"_close"]; + fx[k +"_size"] = o[k +"_size"]; + }); + + // update object pointers and attributes + $Ps[pane] = $(P) + .data({ + layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + }) + .css(_c.hidden) + .css(c.cssReq) + ; + $Cs[pane] = C ? $(C) : false; + + // set options and state + options[pane] = $.extend({}, oPane.options, fx); + state[pane] = $.extend({}, oPane.state); + + // change classNames on the pane, eg: ui-layout-pane-east ==> ui-layout-pane-west + re = new RegExp(o.paneClass +"-"+ oldPane, "g"); + P.className = P.className.replace(re, o.paneClass +"-"+ pane); + + // ALWAYS regenerate the resizer & toggler elements + initHandles(pane); // create the required resizer & toggler + + // if moving to different orientation, then keep 'target' pane size + if (c.dir != _c[oldPane].dir) { + size = sizes[pane] || 0; + setSizeLimits(pane); // update pane-state + size = max(size, state[pane].minSize); + // use manualSizePane to disable autoResize - not useful after panes are swapped + manualSizePane(pane, size, true, true); // true/true = skipCallback/noAnimation + } + else // move the resizer here + $Rs[pane].css(side, sC[inset] + (state[pane].isVisible ? getPaneSize(pane) : 0)); + + + // ADD CLASSNAMES & SLIDE-BINDINGS + if (oPane.state.isVisible && !s.isVisible) + setAsOpen(pane, true); // true = skipCallback + else { + setAsClosed(pane); + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + // DESTROY the object + oPane = null; + }; + } + + + /** + * INTERNAL method to sync pin-buttons when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), setAsOpen(), setAsClosed() + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns = function (pane, doPin) { + if ($.layout.plugins.buttons) + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(Instance, $(selector), pane, doPin); + }); + } + +; // END var DECLARATIONS + + /** + * Capture keys when enableCursorHotkey - toggle pane if hotkey pressed + * + * @see document.keydown() + */ + function keyDown (evt) { + if (!evt) return true; + var code = evt.keyCode; + if (code < 33) return true; // ignore special keys: ENTER, TAB, etc + + var + PANE = { + 38: "north" // Up Cursor - $.ui.keyCode.UP + , 40: "south" // Down Cursor - $.ui.keyCode.DOWN + , 37: "west" // Left Cursor - $.ui.keyCode.LEFT + , 39: "east" // Right Cursor - $.ui.keyCode.RIGHT + } + , ALT = evt.altKey // no worky! + , SHIFT = evt.shiftKey + , CTRL = evt.ctrlKey + , CURSOR = (CTRL && code >= 37 && code <= 40) + , o, k, m, pane + ; + + if (CURSOR && options[PANE[code]].enableCursorHotkey) // valid cursor-hotkey + pane = PANE[code]; + else if (CTRL || SHIFT) // check to see if this matches a custom-hotkey + $.each(_c.borderPanes, function (i, p) { // loop each pane to check its hotkey + o = options[p]; + k = o.customHotkey; + m = o.customHotkeyModifier; // if missing or invalid, treated as "CTRL+SHIFT" + if ((SHIFT && m=="SHIFT") || (CTRL && m=="CTRL") || (CTRL && SHIFT)) { // Modifier matches + if (k && code === (isNaN(k) || k <= 9 ? k.toUpperCase().charCodeAt(0) : k)) { // Key matches + pane = p; + return false; // BREAK + } + } + }); + + // validate pane + if (!pane || !$Ps[pane] || !options[pane].closable || state[pane].isHidden) + return true; + + toggle(pane); + + evt.stopPropagation(); + evt.returnValue = false; // CANCEL key + return false; + }; + + +/* + * ###################################### + * UTILITY METHODS + * called externally or by initButtons + * ###################################### + */ + + /** + * Change/reset a pane overflow setting & zIndex to allow popups/drop-downs to work + * + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function allowOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + ; + + // if pane is already raised, then reset it before doing it again! + // this would happen if allowOverflow is attached to BOTH the pane and an element + if (s.cssSaved) + resetOverflow(pane); // reset previous CSS before continuing + + // if pane is raised by sliding or resizing, or its closed, then abort + if (s.isSliding || s.isResizing || s.isClosed) { + s.cssSaved = false; + return; + } + + var + newCSS = { zIndex: (options.zIndexes.resizer_normal + 1) } + , curCSS = {} + , of = $P.css("overflow") + , ofX = $P.css("overflowX") + , ofY = $P.css("overflowY") + ; + // determine which, if any, overflow settings need to be changed + if (of != "visible") { + curCSS.overflow = of; + newCSS.overflow = "visible"; + } + if (ofX && !ofX.match(/visible|auto/)) { + curCSS.overflowX = ofX; + newCSS.overflowX = "visible"; + } + if (ofY && !ofY.match(/visible|auto/)) { + curCSS.overflowY = ofX; + newCSS.overflowY = "visible"; + } + + // save the current overflow settings - even if blank! + s.cssSaved = curCSS; + + // apply new CSS to raise zIndex and, if necessary, make overflow 'visible' + $P.css( newCSS ); + + // make sure the zIndex of all other panes is normal + $.each(_c.allPanes, function(i, p) { + if (p != pane) resetOverflow(p); + }); + + }; + /** + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function resetOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + , CSS = s.cssSaved || {} + ; + // reset the zIndex + if (!s.isSliding && !s.isResizing) + $P.css("zIndex", options.zIndexes.pane_normal); + + // reset Overflow - if necessary + $P.css( CSS ); + + // clear var + s.cssSaved = false; + }; + +/* + * ##################### + * CREATE/RETURN LAYOUT + * ##################### + */ + + // validate that container exists + var $N = $(this).eq(0); // FIRST matching Container element + if (!$N.length) { + if (options.showErrorMessages) + _log( lang.errContainerMissing, true ); + return null; + }; + + // Users retrieve Instance of a layout with: $N.layout() OR $N.data("layout") + // return the Instance-pointer if layout has already been initialized + if ($N.data("layoutContainer") && $N.data("layout")) + return $N.data("layout"); // cached pointer + + // init global vars + var + $Ps = {} // Panes x5 - set in initPanes() + , $Cs = {} // Content x5 - set in initPanes() + , $Rs = {} // Resizers x4 - set in initHandles() + , $Ts = {} // Togglers x4 - set in initHandles() + , $Ms = $([]) // Masks - up to 2 masks per pane (IFRAME + DIV) + // aliases for code brevity + , sC = state.container // alias for easy access to 'container dimensions' + , sID = state.id // alias for unique layout ID/namespace - eg: "layout435" + ; + + // create Instance object to expose data & option Properties, and primary action Methods + var Instance = { + // layout data + options: options // property - options hash + , state: state // property - dimensions hash + // object pointers + , container: $N // property - object pointers for layout container + , panes: $Ps // property - object pointers for ALL Panes: panes.north, panes.center + , contents: $Cs // property - object pointers for ALL Content: contents.north, contents.center + , resizers: $Rs // property - object pointers for ALL Resizers, eg: resizers.north + , togglers: $Ts // property - object pointers for ALL Togglers, eg: togglers.north + // border-pane open/close + , hide: hide // method - ditto + , show: show // method - ditto + , toggle: toggle // method - pass a 'pane' ("north", "west", etc) + , open: open // method - ditto + , close: close // method - ditto + , slideOpen: slideOpen // method - ditto + , slideClose: slideClose // method - ditto + , slideToggle: slideToggle // method - ditto + // pane actions + , setSizeLimits: setSizeLimits // method - pass a 'pane' - update state min/max data + , _sizePane: sizePane // method -intended for user by plugins only! + , sizePane: manualSizePane // method - pass a 'pane' AND an 'outer-size' in pixels or percent, or 'auto' + , sizeContent: sizeContent // method - pass a 'pane' + , swapPanes: swapPanes // method - pass TWO 'panes' - will swap them + // pane element methods + , initContent: initContent // method - ditto + , addPane: addPane // method - pass a 'pane' + , removePane: removePane // method - pass a 'pane' to remove from layout, add 'true' to delete the pane-elem + , createChildLayout: createChildLayout// method - pass a 'pane' and (optional) layout-options (OVERRIDES options[pane].childOptions + // special pane option setting + , enableClosable: enableClosable // method - pass a 'pane' + , disableClosable: disableClosable // method - ditto + , enableSlidable: enableSlidable // method - ditto + , disableSlidable: disableSlidable // method - ditto + , enableResizable: enableResizable // method - ditto + , disableResizable: disableResizable// method - ditto + // utility methods for panes + , allowOverflow: allowOverflow // utility - pass calling element (this) + , resetOverflow: resetOverflow // utility - ditto + // layout control + , destroy: destroy // method - no parameters + , initPanes: isInitialized // method - no parameters + , resizeAll: resizeAll // method - no parameters + // callback triggering + , runCallbacks: _runCallbacks // method - pass evtName & pane (if a pane-event), eg: trigger("onopen", "west") + // alias collections of options, state and children - created in addPane and extended elsewhere + , hasParentLayout: false // set by initContainer() + , children: children // pointers to child-layouts, eg: Instance.children["west"] + , north: false // alias group: { name: pane, pane: $Ps[pane], options: options[pane], state: state[pane], child: children[pane] } + , south: false // ditto + , west: false // ditto + , east: false // ditto + , center: false // ditto + }; + + // create the border layout NOW + if (_create() === 'cancel') // onload_start callback returned false to CANCEL layout creation + return null; + else // true OR false -- if layout-elements did NOT init (hidden or do not exist), can auto-init later + return Instance; // return the Instance object + +} + + + + +/** + * jquery.layout.state 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * @dependancies: $.ui.cookie (above) + * + * @support: http://groups.google.com/group/jquery-ui-layout + */ +/* + * State-management options stored in options.stateManagement, which includes a .cookie hash + * Default options saves ALL KEYS for ALL PANES, ie: pane.size, pane.isClosed, pane.isHidden + * + * // STATE/COOKIE OPTIONS + * @example $(el).layout({ + stateManagement: { + enabled: true + , stateKeys: "east.size,west.size,east.isClosed,west.isClosed" + , cookie: { name: "appLayout", path: "/" } + } + }) + * @example $(el).layout({ stateManagement__enabled: true }) // enable auto-state-management using cookies + * @example $(el).layout({ stateManagement__cookie: { name: "appLayout", path: "/" } }) + * @example $(el).layout({ stateManagement__cookie__name: "appLayout", stateManagement__cookie__path: "/" }) + * + * // STATE/COOKIE METHODS + * @example myLayout.saveCookie( "west.isClosed,north.size,south.isHidden", {expires: 7} ); + * @example myLayout.loadCookie(); + * @example myLayout.deleteCookie(); + * @example var JSON = myLayout.readState(); // CURRENT Layout State + * @example var JSON = myLayout.readCookie(); // SAVED Layout State (from cookie) + * @example var JSON = myLayout.state.stateData; // LAST LOADED Layout State (cookie saved in layout.state hash) + * + * CUSTOM STATE-MANAGEMENT (eg, saved in a database) + * @example var JSON = myLayout.readState( "west.isClosed,north.size,south.isHidden" ); + * @example myLayout.loadState( JSON ); + */ + +/** + * UI COOKIE UTILITY + * + * A $.cookie OR $.ui.cookie namespace *should be standard*, but until then... + * This creates $.ui.cookie so Layout does not need the cookie.jquery.js plugin + * NOTE: This utility is REQUIRED by the layout.state plugin + * + * Cookie methods in Layout are created as part of State Management + */ +if (!$.ui) $.ui = {}; +$.ui.cookie = { + + // cookieEnabled is not in DOM specs, but DOES works in all browsers,including IE6 + acceptsCookies: !!navigator.cookieEnabled + +, read: function (name) { + var + c = document.cookie + , cs = c ? c.split(';') : [] + , pair // loop var + ; + for (var i=0, n=cs.length; i < n; i++) { + pair = $.trim(cs[i]).split('='); // name=value pair + if (pair[0] == name) // found the layout cookie + return decodeURIComponent(pair[1]); + + } + return null; + } + +, write: function (name, val, cookieOpts) { + var + params = '' + , date = '' + , clear = false + , o = cookieOpts || {} + , x = o.expires + ; + if (x && x.toUTCString) + date = x; + else if (x === null || typeof x === 'number') { + date = new Date(); + if (x > 0) + date.setDate(date.getDate() + x); + else { + date.setFullYear(1970); + clear = true; + } + } + if (date) params += ';expires='+ date.toUTCString(); + if (o.path) params += ';path='+ o.path; + if (o.domain) params += ';domain='+ o.domain; + if (o.secure) params += ';secure'; + document.cookie = name +'='+ (clear ? "" : encodeURIComponent( val )) + params; // write or clear cookie + } + +, clear: function (name) { + $.ui.cookie.write(name, '', {expires: -1}); + } + +}; +// if cookie.jquery.js is not loaded, create an alias to replicate it +// this may be useful to other plugins or code dependent on that plugin +if (!$.cookie) $.cookie = function (k, v, o) { + var C = $.ui.cookie; + if (v === null) + C.clear(k); + else if (v === undefined) + return C.read(k); + else + C.write(k, v, o); +}; + + +// tell Layout that the state plugin is available +$.layout.plugins.stateManagement = true; + +// Add State-Management options to layout.defaults +$.layout.config.optionRootKeys.push("stateManagement"); +$.layout.defaults.stateManagement = { + enabled: false // true = enable state-management, even if not using cookies +, autoSave: true // Save a state-cookie when page exits? +, autoLoad: true // Load the state-cookie when Layout inits? + // List state-data to save - must be pane-specific +, stateKeys: "north.size,south.size,east.size,west.size,"+ + "north.isClosed,south.isClosed,east.isClosed,west.isClosed,"+ + "north.isHidden,south.isHidden,east.isHidden,west.isHidden" +, cookie: { + name: "" // If not specified, will use Layout.name, else just "Layout" + , domain: "" // blank = current domain + , path: "" // blank = current page, '/' = entire website + , expires: "" // 'days' to keep cookie - leave blank for 'session cookie' + , secure: false + } +}; +// Set stateManagement as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("stateManagement"); + +/* + * State Management methods + */ +$.layout.state = { + + /** + * Get the current layout state and save it to a cookie + * + * myLayout.saveCookie( keys, cookieOpts ) + * + * @param {Object} inst + * @param {(string|Array)=} keys + * @param {Object=} opts + */ + saveCookie: function (inst, keys, cookieOpts) { + var o = inst.options + , oS = o.stateManagement + , oC = $.extend(true, {}, oS.cookie, cookieOpts || null) + , data = inst.state.stateData = inst.readState( keys || oS.stateKeys ) // read current panes-state + ; + $.ui.cookie.write( oC.name || o.name || "Layout", $.layout.state.encodeJSON(data), oC ); + return $.extend(true, {}, data); // return COPY of state.stateData data + } + + /** + * Remove the state cookie + * + * @param {Object} inst + */ +, deleteCookie: function (inst) { + var o = inst.options; + $.ui.cookie.clear( o.stateManagement.cookie.name || o.name || "Layout" ); + } + + /** + * Read & return data from the cookie - as JSON + * + * @param {Object} inst + */ +, readCookie: function (inst) { + var o = inst.options; + var c = $.ui.cookie.read( o.stateManagement.cookie.name || o.name || "Layout" ); + // convert cookie string back to a hash and return it + return c ? $.layout.state.decodeJSON(c) : {}; + } + + /** + * Get data from the cookie and USE IT to loadState + * + * @param {Object} inst + */ +, loadCookie: function (inst) { + var c = $.layout.state.readCookie(inst); // READ the cookie + if (c) { + inst.state.stateData = $.extend(true, {}, c); // SET state.stateData + inst.loadState(c); // LOAD the retrieved state + } + return c; + } + + /** + * Update layout options from the cookie, if one exists + * + * @param {Object} inst + * @param {Object=} stateData + * @param {boolean=} animate + */ +, loadState: function (inst, stateData, animate) { + stateData = $.layout.transformData( stateData ); // panes = default subkey + if ($.isEmptyObject( stateData )) return; + $.extend(true, inst.options, stateData); // update layout options + // if layout has already been initialized, then UPDATE layout state + if (inst.state.initialized) { + var pane, vis, o, s, h, c + , noAnimate = (animate===false) + ; + $.each($.layout.config.borderPanes, function (idx, pane) { + state = inst.state[pane]; + o = stateData[ pane ]; + if (typeof o != 'object') return; // no key, continue + s = o.size; + c = o.initClosed; + h = o.initHidden; + vis = state.isVisible; + // resize BEFORE opening + if (!vis) + inst.sizePane(pane, s, false, false); + if (h === true) inst.hide(pane, noAnimate); + else if (c === false) inst.open (pane, false, noAnimate); + else if (c === true) inst.close(pane, false, noAnimate); + else if (h === false) inst.show (pane, false, noAnimate); + // resize AFTER any other actions + if (vis) + inst.sizePane(pane, s, false, noAnimate); // animate resize if option passed + }); + }; + } + + /** + * Get the *current layout state* and return it as a hash + * + * @param {Object=} inst + * @param {(string|Array)=} keys + */ +, readState: function (inst, keys) { + var + data = {} + , alt = { isClosed: 'initClosed', isHidden: 'initHidden' } + , state = inst.state + , panes = $.layout.config.allPanes + , pair, pane, key, val + ; + if (!keys) keys = inst.options.stateManagement.stateKeys; // if called by user + if ($.isArray(keys)) keys = keys.join(","); + // convert keys to an array and change delimiters from '__' to '.' + keys = keys.replace(/__/g, ".").split(','); + // loop keys and create a data hash + for (var i=0, n=keys.length; i < n; i++) { + pair = keys[i].split("."); + pane = pair[0]; + key = pair[1]; + if ($.inArray(pane, panes) < 0) continue; // bad pane! + val = state[ pane ][ key ]; + if (val == undefined) continue; + if (key=="isClosed" && state[pane]["isSliding"]) + val = true; // if sliding, then *really* isClosed + ( data[pane] || (data[pane]={}) )[ alt[key] ? alt[key] : key ] = val; + } + return data; + } + + /** + * Stringify a JSON hash so can save in a cookie or db-field + */ +, encodeJSON: function (JSON) { + return parse(JSON); + function parse (h) { + var D=[], i=0, k, v, t; // k = key, v = value + for (k in h) { + v = h[k]; + t = typeof v; + if (t == 'string') // STRING - add quotes + v = '"'+ v +'"'; + else if (t == 'object') // SUB-KEY - recurse into it + v = parse(v); + D[i++] = '"'+ k +'":'+ v; + } + return '{'+ D.join(',') +'}'; + }; + } + + /** + * Convert stringified JSON back to a hash object + * @see $.parseJSON(), adding in jQuery 1.4.1 + */ +, decodeJSON: function (str) { + try { return $.parseJSON ? $.parseJSON(str) : window["eval"]("("+ str +")") || {}; } + catch (e) { return {}; } + } + + +, _create: function (inst) { + var _ = $.layout.state; + // ADD State-Management plugin methods to inst + $.extend( inst, { + // readCookie - update options from cookie - returns hash of cookie data + readCookie: function () { return _.readCookie(inst); } + // deleteCookie + , deleteCookie: function () { _.deleteCookie(inst); } + // saveCookie - optionally pass keys-list and cookie-options (hash) + , saveCookie: function (keys, cookieOpts) { return _.saveCookie(inst, keys, cookieOpts); } + // loadCookie - readCookie and use to loadState() - returns hash of cookie data + , loadCookie: function () { return _.loadCookie(inst); } + // loadState - pass a hash of state to use to update options + , loadState: function (stateData, animate) { _.loadState(inst, stateData, animate); } + // readState - returns hash of current layout-state + , readState: function (keys) { return _.readState(inst, keys); } + // add JSON utility methods too... + , encodeJSON: _.encodeJSON + , decodeJSON: _.decodeJSON + }); + + // init state.stateData key, even if plugin is initially disabled + inst.state.stateData = {}; + + // read and load cookie-data per options + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoLoad) // update the options from the cookie + inst.loadCookie(); + else // don't modify options - just store cookie data in state.stateData + inst.state.stateData = inst.readCookie(); + } + } + +, _unload: function (inst) { + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoSave) // save a state-cookie automatically + inst.saveCookie(); + else // don't save a cookie, but do store state-data in state.stateData key + inst.state.stateData = inst.readState(); + } + } + +}; + +// add state initialization method to Layout's onCreate array of functions +$.layout.onCreate.push( $.layout.state._create ); +$.layout.onUnload.push( $.layout.state._unload ); + + + + +/** + * jquery.layout.buttons 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * Docs: [ to come ] + * Tips: [ to come ] + */ + +// tell Layout that the state plugin is available +$.layout.plugins.buttons = true; + +// Add buttons options to layout.defaults +$.layout.defaults.autoBindCustomButtons = false; +// Specify autoBindCustomButtons as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("autoBindCustomButtons"); + +var lang = $.layout.language; + +/* + * Button methods + */ +$.layout.buttons = { + + /** + * Searches for .ui-layout-button-xxx elements and auto-binds them as layout-buttons + * + * @see _create() + * + * @param {Object} inst Layout Instance object + */ + init: function (inst) { + var pre = "ui-layout-button-" + , layout = inst.options.name || "" + , name; + $.each("toggle,open,close,pin,toggle-slide,open-slide".split(","), function (i, action) { + $.each($.layout.config.borderPanes, function (ii, pane) { + $("."+pre+action+"-"+pane).each(function(){ + // if button was previously 'bound', data.layoutName was set, but is blank if layout has no 'name' + name = $(this).data("layoutName") || $(this).attr("layoutName"); + if (name == undefined || name === layout) + inst.bindButton(this, action, pane); + }); + }); + }); + } + + /** + * Helper function to validate params received by addButton utilities + * + * Two classes are added to the element, based on the buttonClass... + * The type of button is appended to create the 2nd className: + * - ui-layout-button-pin // action btnClass + * - ui-layout-button-pin-west // action btnClass + pane + * - ui-layout-button-toggle + * - ui-layout-button-open + * - ui-layout-button-close + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * + * @return {Array.} If both params valid, the element matching 'selector' in a jQuery wrapper - otherwise returns null + */ +, get: function (inst, selector, pane, action) { + var $E = $(selector) + , o = inst.options + , err = o.showErrorMessages + ; + if (!$E.length) { // element not found + if (err) $.layout.msg(lang.errButton + lang.selector +": "+ selector, true); + } + else if ($.inArray(pane, $.layout.config.borderPanes) < 0) { // invalid 'pane' sepecified + if (err) $.layout.msg(lang.errButton + lang.pane +": "+ pane, true); + $E = $(""); // NO BUTTON + } + else { // VALID + var btn = o[pane].buttonClass +"-"+ action; + $E .addClass( btn +" "+ btn +"-"+ pane ) + .data("layoutName", o.name); // add layout identifier - even if blank! + } + return $E; + } + + + /** + * NEW syntax for binding layout-buttons - will eventually replace addToggle, addOpen, etc. + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} action + * @param {string} pane + */ +, bind: function (inst, selector, action, pane) { + var _ = $.layout.buttons; + switch (action.toLowerCase()) { + case "toggle": _.addToggle (inst, selector, pane); break; + case "open": _.addOpen (inst, selector, pane); break; + case "close": _.addClose (inst, selector, pane); break; + case "pin": _.addPin (inst, selector, pane); break; + case "toggle-slide": _.addToggle (inst, selector, pane, true); break; + case "open-slide": _.addOpen (inst, selector, pane, true); break; + } + return inst; + } + + /** + * Add a custom Toggler button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addToggle: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "toggle") + .click(function(evt){ + inst.toggle(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Open button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addOpen: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "open") + .attr("title", lang.Open) + .click(function (evt) { + inst.open(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Close button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + */ +, addClose: function (inst, selector, pane) { + $.layout.buttons.get(inst, selector, pane, "close") + .attr("title", lang.Close) + .click(function (evt) { + inst.close(pane); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Pin button for a pane + * + * Four classes are added to the element, based on the paneClass for the associated pane... + * Assuming the default paneClass and the pin is 'up', these classes are added for a west-pane pin: + * - ui-layout-pane-pin + * - ui-layout-pane-west-pin + * - ui-layout-pane-pin-up + * - ui-layout-pane-west-pin-up + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the pin is for: 'north', 'south', etc. + */ +, addPin: function (inst, selector, pane) { + var _ = $.layout.buttons + , $E = _.get(inst, selector, pane, "pin"); + if ($E.length) { + var s = inst.state[pane]; + $E.click(function (evt) { + _.setPinState(inst, $(this), pane, (s.isSliding || s.isClosed)); + if (s.isSliding || s.isClosed) inst.open( pane ); // change from sliding to open + else inst.close( pane ); // slide-closed + evt.stopPropagation(); + }); + // add up/down pin attributes and classes + _.setPinState(inst, $E, pane, (!s.isClosed && !s.isSliding)); + // add this pin to the pane data so we can 'sync it' automatically + // PANE.pins key is an array so we can store multiple pins for each pane + s.pins.push( selector ); // just save the selector string + } + return inst; + } + + /** + * Change the class of the pin button to make it look 'up' or 'down' + * + * @see addPin(), syncPins() + * + * @param {Object} inst Layout Instance object + * @param {Array.} $Pin The pin-span element in a jQuery wrapper + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin true = set the pin 'down', false = set it 'up' + */ +, setPinState: function (inst, $Pin, pane, doPin) { + var updown = $Pin.attr("pin"); + if (updown && doPin === (updown=="down")) return; // already in correct state + var + pin = inst.options[pane].buttonClass +"-pin" + , side = pin +"-"+ pane + , UP = pin +"-up "+ side +"-up" + , DN = pin +"-down "+side +"-down" + ; + $Pin + .attr("pin", doPin ? "down" : "up") // logic + .attr("title", doPin ? lang.Unpin : lang.Pin) + .removeClass( doPin ? UP : DN ) + .addClass( doPin ? DN : UP ) + ; + } + + /** + * INTERNAL function to sync 'pin buttons' when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), close() + * + * @param {Object} inst Layout Instance object + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns: function (inst, pane, doPin) { + // REAL METHOD IS _INSIDE_ LAYOUT - THIS IS HERE JUST FOR REFERENCE + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(inst, $(selector), pane, doPin); + }); + } + + +, _load: function (inst) { + var _ = $.layout.buttons; + // ADD Button methods to Layout Instance + // Note: sel = jQuery Selector string + $.extend( inst, { + bindButton: function (sel, action, pane) { return _.bind(inst, sel, action, pane); } + // DEPRECATED METHODS + , addToggleBtn: function (sel, pane, slide) { return _.addToggle(inst, sel, pane, slide); } + , addOpenBtn: function (sel, pane, slide) { return _.addOpen(inst, sel, pane, slide); } + , addCloseBtn: function (sel, pane) { return _.addClose(inst, sel, pane); } + , addPinBtn: function (sel, pane) { return _.addPin(inst, sel, pane); } + }); + + // init state array to hold pin-buttons + for (var i=0; i<4; i++) { + var pane = $.layout.config.borderPanes[i]; + inst.state[pane].pins = []; + } + + // auto-init buttons onLoad if option is enabled + if ( inst.options.autoBindCustomButtons ) + _.init(inst); + } + +, _unload: function (inst) { + // TODO: unbind all buttons??? + } + +}; + +// add initialization method to Layout's onLoad array of functions +$.layout.onLoad.push( $.layout.buttons._load ); +//$.layout.onUnload.push( $.layout.buttons._unload ); + + + +/** + * jquery.layout.browserZoom 1.0 + * $Date: 2011-12-29 08:00:00 (Thu, 29 Dec 2011) $ + * + * Copyright (c) 2012 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * @todo: Extend logic to handle other problematic zooming in browsers + * @todo: Add hotkey/mousewheel bindings to _instantly_ respond to these zoom event + */ + +// tell Layout that the plugin is available +$.layout.plugins.browserZoom = true; + +$.layout.defaults.browserZoomCheckInterval = 1000; +$.layout.optionsMap.layout.push("browserZoomCheckInterval"); + +/* + * browserZoom methods + */ +$.layout.browserZoom = { + + _init: function (inst) { + // abort if browser does not need this check + if ($.layout.browserZoom.ratio() !== false) + $.layout.browserZoom._setTimer(inst); + } + +, _setTimer: function (inst) { + // abort if layout destroyed or browser does not need this check + if (inst.destroyed) return; + var o = inst.options + , s = inst.state + // don't need check if inst has parentLayout, but check occassionally in case parent destroyed! + // MINIMUM 100ms interval, for performance + , ms = inst.hasParentLayout ? 5000 : Math.max( o.browserZoomCheckInterval, 100 ) + ; + // set the timer + setTimeout(function(){ + if (inst.destroyed || !o.resizeWithWindow) return; + var d = $.layout.browserZoom.ratio(); + if (d !== s.browserZoom) { + s.browserZoom = d; + inst.resizeAll(); + } + // set a NEW timeout + $.layout.browserZoom._setTimer(inst); + } + , ms ); + } + +, ratio: function () { + var w = window + , s = screen + , d = document + , dE = d.documentElement || d.body + , b = $.layout.browser + , v = b.version + , r, sW, cW + ; + // we can ignore all browsers that fire window.resize event onZoom + if ((b.msie && v > 8) + || !b.msie + ) return false; // don't need to track zoom + + if (s.deviceXDPI) + return calc(s.deviceXDPI, s.systemXDPI); + // everything below is just for future reference! + if (b.webkit && (r = d.body.getBoundingClientRect)) + return calc((r.left - r.right), d.body.offsetWidth); + if (b.webkit && (sW = w.outerWidth)) + return calc(sW, w.innerWidth); + if ((sW = s.width) && (cW = dE.clientWidth)) + return calc(sW, cW); + return false; // no match, so cannot - or don't need to - track zoom + + function calc (x,y) { return (parseInt(x,10) / parseInt(y,10) * 100).toFixed(); } + } + +}; +// add initialization method to Layout's onLoad array of functions +$.layout.onReady.push( $.layout.browserZoom._init ); + + + +})( jQuery ); \ No newline at end of file diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif new file mode 100755 index 0000000000000000000000000000000000000000..085ccaecaf5fa5c34bc14cd2c2ed5cbbd8e25dcb GIT binary patch literal 1553 zcma)+TTl~c6vwlh>nb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..47acaadd737478ddb090f47f618810712163317b GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*Fsaj7L$B>N1x91EQ8x$BA993)+ za~~)OO5|O5sDCi_{N8&XlRv*c;OQ6|AR59NN?mFzWBXJVGojypu|S6~c)I$ztaD0e F0syyrGF|`x literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..9d149b1c61fdee2de5cb342741c243abb9058bb3 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAGVZ#9R3S1u{Kd978O6pI&z4VlotPxp?2+ z_9ElQf7546?+BK3Q+%u|q&R!~TD`8c>Nm?7lq=+T^Fw3At=o;a{QQ?&v0rW43t78u zKLhT~Z`;~2oo9{ezlW>%eD?g@v!}03FhOcY)5-`I-U~CHGCzC3{y9?4*Y0Z~JJ3=F MPgg&ebxsLQ09`{nxc~qF literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..014951529c315d6042e72febc310a4d2db5b4a82 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq?|lm978O6-<~(*YA_IRxoBVf zfAX@vsV!R#l$@#*eLnw)_Sv|_?i7P!ORnX)SxaXh+BPpZ!Fw~yjr&#G|Jw^YMHDhV X&EsZx`7bsSXc~j3tDnm{r-UW|&(SK+ literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..4443fdc1a156babad4336f004eaf5ca5dfa0f9ab GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hIh978O6-<~(*YA|4MzBvER z|7}eQtdCVXoUc2b{PaWeaIKu7gJx>{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png new file mode 100755 index 0000000000000000000000000000000000000000..81ecc362d50ef5abbc0420aacd5345822f1f6098 GIT binary patch literal 3457 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..6f4bd87c041453ef037c4a9a1a698f0105d02eba GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..bd2cf079add1ca236adeb509698adabbffb08acb GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..c7c53cb11904843e176e4ce1f4e7247cd90b3590 GIT binary patch literal 5355 zcmd^@=Q|sY*Ty4}Sh4piwQCoxEwR-evG=T&+F}!1)%@0~QA(-NqAhAh)E+TwrZz>X zn6>%!`8%F-ofr50?%bbO_jO(x>T8mdvXBA*0P-hVYQ_Kn!9NK&AO`(Yb^4*+|I8ml zU4;5In(+V6PQ1|kM*^T9V61NfV4{*BBsT1feIv?+@PWHIu+U(koC*voTH5!l_{5Ec z((63dr^qSc`7eB7FgX!x$+n%z+TEMGV#zgM%qk$` z$CP%8LC(AGV;{nO02N_86JbEH$_-;t8wo1nF(_E}WurgT^JuNcFHV@r=~em=zEI1JNrAJ^b{Cnf|Zu$jPaV0+l$Um1vvx)OI_i+0Os9Dfj=rB|m z#p-^w(=Gtf2{Je6WD{U|z^Ox@LlJpjl)D=0n|31aLR>@;?7Gifj~PvBOaydLzk8F| zSh5s2cXyqluW^MlBkStC`mLjjgC>!)qV~;4&T~ASSR+#>MIqJCkLrkO_mrs2McO`E zRm!NaXpJwhr6kYg3h_kZ>8kr{T7g2Y?^6#xGF`|D%J$tcYqJP$nyFnDuX-P6kFNI* z_~yb}MPp~qpWTg)kYcLmy=%JHkQK&}CV9zVt@6h~%l61Fa%Xna;h0A`A-V8K<}>5j zYK~Ma_XI>+c5ja>>X!2U?=u3r zq~02(H0j$y9z!9k?;AfrhdA1zxP@J5PMd5IWWG0IgDW}VozBa+jk7$|bd}RvRyQA? z-Q`zKS`UF5fLx3T=a4_gM|R3AsBZkU0E{cPthE})ZOLBu>eaYm*@NTjbk)bIHgr5R zW+M5@4Wm31lQWZyPKD6F%jqZvNsO^n-t3E$yu)S(O`C%H=GW-RI#OpjRnhUyT+?mG zx9_+7Zvs_qr4^`LrG?wurAR(3Ob#v&)y*)Q(o>{Q_pq5W7Jd+UbBR^$WH=c>N|$yA zBEonDI~!y#Cb`BoJI&(urb2I54SF;R6HQx)>A*6p6Dbb>mXYm3%qzTW7N4Z>CJ0A! zwM7#O^Qi&X=Yf!HYP+e4*H4)6SUt+8V)iT)dL7=bT=RU@k<2eRWBJ!e{Vxq(Crz3E zCw(Fk|21l5Rz6xxcAhKC!5lO6BszICeG^oKvfXJ35>>%U0U56L1_Ux)pARrD=c$$AL57}9 z>KP6g@>6By!I=JT>mAWzOnzo4wM(NTz^n%~#ci-5#dl1^@O#SR1U9vO-DgJFgt}QH zO-Uy@I(M)|&Ho29tY+rcPtcaObYgVvmrfG~X<0LFvuIRCNi-2kxms4Y?U(>ssBkaC z->LA?Hrnd!QyK5R8ZM`a>TQB5Gg2Z>OxCfFVfp*+VY|Sat_In!{m?V6E}L3BvKb8- z!uZLWhH=FC{y|oIuzyBZrcwjh@vp?t;%qVIE8m4+WxHGS3%>PSn&!im`T3g;LD=_K zyXKwB>#J>BTN=Mauv89?Q@b?)*BaX*FRpQ>H%@vgw(UMbkII)i38D&b$R!IkZB4q< zL?41I9fPZe9~>@q#}Xw?TVHRsDU_n$3vDYM^^^I(=%ilWMx@R#&Ls$b^&e~~I_eSD z!8O&}R41L{o;`Qqa9vqu2l-i|zq3*U7>8s-92dr`NGo;A!XaaCA3$`i>!Ao~%`)PO z-*@zwZ)e8Ww3t&vG?ig%8qdZjG4Vx)vI{|^$<@yQbB&62RrPKh;8&X%L_%(YIomzp zKsPIO9L6#&!y>QbsbD0nv9^s|!YVVvJ+YX7w{oOHhf7#ZLHlV;n3koJ@2s905P=^z z0jS5QHW;9N*WY9(!G;2W?;^XnGBfCI?kuORJwTeHS_p`ay0~5&{1`7IZZ%5!Y4?v9`6avT2Yu@w*7)=7D4qoucvCIjimPb_wrRxKOu2Z2!`HEc*x|1 z{kA-C?gPs%ezo%GxZa3W%#O`~QUT;4a&w{XB1iQxDRdQcDMrbEs1W~sivEe>%5y8j z^q5nBeq}S%p~!$6qHpEx2_^!oDS?E9f#-$8EtHwwj~vZChA1cMTMjm>e7;!oSVQrDaPj}-8j8l&lhZjq%7eStPkiI$TQ65vroV0> z>qtKz46KOC5PQ4vhO(Ow8yoBoP$bX-HF7m3f>ZVn_-w`@GHa=vL3aj_BQ}9wtM-eU zBcPFcjihrOB9*YITNEo5*mtWWs5-enecF<6QWGqdx_}VUXR*#uA|yL;vvdK(EnP!a z9uHQ{(f*7GvwC*6mlEhvG67yvD=s+Fo+@U!o;WNsv9Sw<>Vky>HCnG}0@{alLfm7h zPH7{aug|;qx$$gbC4VX?KNL^wFAjs!G5IPL?OZyLHrebR&F19WTKLEM$EsGq{16SSQ2L zxXGU}Ta&28vDBKN;7)`WZXueo+Ddbsn^^yrYaW8>#5&sgM>i%<7j8HGwU8zqcIdk) zqnJ6o)C@!JoqunL-+`gcYIhpU?YmM(H7v1J&xD3d`7@7~q{z&^u0h|^jZ3ewj`N04 zA{=%TtNqpq{=7@IxNxg702Mny_L+b$XM5-ydVbSE2<=z4q24Jv`48SZi%{cn&U-{#{mlD^pf3D1H-U<<*}J}VDrh9kwD z_37hdNB&;n=RuSOja7X}p^>VG^aPePloj#5!Ct*!5U$`V-4Lj?ib?H_jE5{8@Kye9)mCB>NtRaBh5L9(sJ(AE0yWqqui;s^T=0jI5A-_^Qc^*Lh-n zp8~&nqklYX!79VCvM-O~xcrG|y`QU^N>WF&ze^yUUE7~3UQ(bqO7^20Np%=xF!io8 z>FOA70CT)9$OAs~2X4i%1@}uxfDg_cLz5(YxYrDD>)~)yMC-Sr{-VP>hij94cD*qh z0yLSl+fowm1OOHzC< zgBqprA(TyqNEgK?;X|pJsMN78ZWd_~Yt+>Rj5YXj{xLG9?mnUV0V!PrxV``?9>B`8 zFc6kZNlF~kea#egO{zg7o)!kC(imMwrKF^@g#GD?e&b~IK-i{2K%tGs0kw`1Ki=`K zPg!C_^QL5LFJa7-70>RtwP%W#6QE~rz`A5ofS9DVEWle&12O`!pEXWB)rrv4mjV{3 zmkj_uRDJy3&)N&n8;7E|i%iTG{TxKRG{QQ$TeopXD_TSl9pcm}`DAvqY&^^EO2L{@@yP6v$nn?rL&Ml1%lWu)RptTzq@%^wx+e@+#v(tOM1qXAc zBVA87Pbv54K0BcSE~l`dRl`e~_?VCZ^Huucn2&(2-d^=qFvf4bv9v1WNxNXPag-TA zB2u0308tTnNvEj4xf9hW<2rqxL@;bySmQvX1^$QI0ny6A9C$NfUe&ab)Vkex;Q=ah z!m(xop>!<0{%&Ub`4U3)d61up+p$E=6dmln*=IGA}lKKD@G>u~sr=E)?f zo6n?*2QT3laPuV?I1W4`Ja`pyc7OT8}9@pOoxcud?Y@5{7;QvEWAARfJjoJnJDZi`}v*6q4b(=q( ziYc~W52*Uj%)b5hN+qdx*`D=Fwt1)brQKN^yU2_zdBcn2%w^`Yv5ed z6pL<8xd^fb{Fyf^s|s$@R9+8!By&JN+s&x|;MQc#UZ1S4!WQzWptg6!&t))s6koNP zBc`93Scf|bKuOjVk=qZdbdX*(KDC+w5w34qe%l^6fBg zK6ou368K0C20J5!6Mit`7k!J2@{D%Q_9T#&Ufe6R8(Y{i-$RqNXO$T}J!`>Qi7-U* z#XnlK-%$g+jfHJ(KUBXc$gHACQYi&v5Wvzc=n}0yeqWzt{_TLT_DeA!Sy+i(^t{u} zeeUl5FwU)!$V9#Uwy=%u`d~2;BJGvfeXpZCBG%XkU3o^Hh0i?{c{vVOq$(L1nr9!M zFfB%uwB1eypwCFpLM-ZEr?zcN>I@`Ht9>JqtEqW0KY5ypZ;M(EqaJOiOQc8Dh>Nrr z6G`9@rf0gi8K7ZL0{+l~1J1cKn-;Fe{aG#UphgTi4i07Dpor$!u%KJI@hMhdo8aW- zUY{ZwncM5J=UoKdQ#{(~6Z<5)ApmDmg~zXuVB#$G>Y6>=Fx+z@bbcf7Zqt-{s zPWC4lqrDFMHQGzRy*6ib`n9ag`>Oi&@sqQsvsJ5XqdVU_-gkZAKa!L+#@hWp(=#U6 zHv4=u^X?@8J%cfw58NqJB|rGxE41)yTD;`hfZ~S%OA}^h=3?UW2-N*ch8-MsJ8&46 za}U@_c|ahXVJ4>1_UNQ2x$Zk&n7oi-@PJbETJ=jfLC31!MOOS(!|3suS1PKC?a~K9@zG{?x@A10#@tphTp6A=e^LABtSJzsr5^Gj>X9w*_P6^8>^g~jH z@F6UY6e9X>*Abu$vzKTf2oDrsus9s<+eHWh#lO>kP!H?^T`9rfF#-qxgaCNVi2)=4 zQUDo%96$k}0?+}d0bmM1v;cYlJO>y+&h)(upZ}fy@ArTabP@ddKwOX}$tvEl7wU+S;!8OgB&3V$OV)gAqB_@k_N~? z4v-`y4z4NuNsAC94B;W*ISbESSdTxg_`{7Uc;f zgQLW^%0D^6^7rlkRr&Bb;)Xi`q<#5PK#CM}7Fa6}WJ>}K96%4afcz}b;q14{KRLqk z;WfIi!%wRGk4wzp$`HJuL4wB&?h06)f42VNH4X0-@E-8r*FU@;z3YAPP7F5Cez<;E|C8 zNCBh)G5}eC96%lb&m2X-QNS^P5F7GMXk2RHy60Zst;IcJc&d@r8^ zx!d=$JIFl%7XY4si-1c2FTiDhH^2t~x8VnJ|L^4hkOu;S0KtH(fDix@5DI|D2p`aa z_iYa4Sf@M*JV35~!{D?QB^e96^;2q})PPNdw|g2A_@4vkDh}2g;ccXK94c&Qn+7KY zu4;OqGfNW4cO1Zi#0${YP&1L&_cgLPY3y(?gx|YL#r&wQ>!X5ZhR2?Cj89DOAbp%@ z!+k&4nA6&raM}1UcIy!i_e82iG9EMx&n9}FA}{5d9yWc>9erEzw+zqKuNxb`Ew<*K z3K~&bL~jjGp@&r%X&sIpCft>t@Z}a)A}CHXovU9SaDVcp98c4J0CNMc>kWz6)>eNp z59f=Zo5zb&#KYu=r9Z1)cw=+U_mK&$_Q*tp`j_3|6FC85hK})qM6R4zZ0oRxX0mwt^DvD&{gP(5-)R@FM%zz`KHXAr^v5diZ2Z2J zn~{^Ee0;%yfFE<{EN9&c%GH7#op@v}3Tw~)QQFcrocCU8Y6AKU=Uq|RhZMv35={5Q z3J3G$y^X0-D73Sp)veQx`GD&JPgi9^ z%7>fAPRf<_n|+n+ZZ^@Pi9alyYy3!Dw(q!01WUNH82><)suP{P@Db3?q1)==6Eui)8_ez0grgy_B#lWSmd->aJ32N8Ir~H;uEs&(7wM zoOF)9LGgm%gyjt)@y@aR1Fe3#;no-rU$ z)~6;TPpAu-F-rRV1Lx}p5wZ&t^!?A@-!wna?5R>I5#Ls!%hyzZL9x`G#mnp2)63*v$=X-FJl};bHoOcpxnnM1ck0sO3@%)`l6ayAW$3qZd4_v8 zHmv=GaOY$-USI$)XdPX96t=6YSRQ?o*72wFKKmdp6g?y8)!Fd0M0J zxP3TW{%P8u|72hhfTe@eAa`!B3Kp^YU(f%tZ}Z>zw%ti%L$;<`e?3%h!##cq-!2AR z+0LoMB`T+d^98%}cs~Sw&H2hl!yRrEOfhqaJTNAZB%EWVghPik(4c##blNB5WrnR> z8D-lAf8(j?d*0p(JN2pFiwaY#ySr4I)?qZ^O4?%#q(w3L6%}Mbi@EBH;!29q;bV%Q zrl*N3Ttgp_cW$mI)vq;k-OXX`<5#F^pENKqYRU?**!41z6Hh&!*Ht&Q!Bbov_Ux=e zdu1){wN!nNhWUe&T(`|KZajZqFD+QiaIK@1=yEfj(>ua6ks@w3ANzOiQA-XZvdlRb zp6m3Mn&#)w7@w1&NPR<@uU~I}jM#XBQF$?QC)%KsD)(KC0*0acsSQP#`BQmA0?gK7 zJQ3lv0!2grX+r6!Qd%117-~t%qveprY2PZDYNeeX6t;yucj)=G5N#edY% zo0x8y@}Z?Y-P`*_(z2hYZWYrLa&v6!Ha(!gGIID%(L|`lNA1c16 zu)KDp(wa11Vd$+|sy8#KLbDZy+E7cVPECycuF|bwdhss@L=a|!qG~~31bJ~R(s#?0 z&I}M6N(r9mVD}Acn0)LyYI$!WHI`Vs$71kY=;gSEM_Hbap5<`~L`BbK$F5$&R9oE0 zIH&sT7TLL)jZpt$zSvH#q$dqITX?VP>FQZ$uV5}52-^wqQRXl%T)`q8M%>61y2{A8 z6%6f~U6O*8tM4`>C{X$^ZeBU`>`2BNT{lGTo5goo$>xHQ#FN&HUmA|o#I+bOer}v# zz3MiS`4KNIbMsDO?=}t74r#-xqP_cK@h)IbFiAl*xK_aK3fD;w%UPkdf`*!l<5pD!QKtx1ALcv5q!NfpCMa2Lg zs2ILIM*B;R)Iqc)Kr3y01UH07i@>Kv;2L0`1VIS2{X=1Jj)zY`NJLCRN=6PUl+yrj z3m+ek0H2VM0C-D?tKdFFKubt>NJ5Q>-q3-V+lxUmEHQ_K=Xl9$Mxzf)yi$&r!%4}Q z4jg1=;o}z&6cUz}k(HBIP*m5@JfU?`TgTYM)Xd!CjHT0AXBXFVZs)yyeEs~d1O!H0 zi@Y8ceIq96_MPOE)U>l>R}=xx|81cd+1tUoOK!7f^07ajpTF0fq)Jb&15S^~mD z5=3-rhQtnD^xTqRBn-zBb4p&5@<}!uNfBpZ&~(-VgF^< z07QY00E3553!FL3c8p*)-j6&P`plO%Twq$iwP=hX7n7g1UVjoKzshP9b+n`ldEt$b z+LNZE7i`PNanMo{vfRq{AWFF_xMZ@r+37{PO?$tCM`2(&gQ0EzBq4*LDh$alPeT`4#KpU5|R; zQY|+clDnJwDBw(!&O+@dFAh3iM1Dgjy=H@K%_^e;bu{jSwfwRG#a5N zOSpIJz!=TYSf3U~Z&##uUbOZDm`7g7;(?eO4x10 znttJ=Z9is8jcKz@biWiFje~~lChREZcYiyBF8w+|bxx~u2&4as({1xnMVq4i;%h!0o3^6FfK?zrI&?lhhy)pAe=b5V}$SBU^PS&=MpY3Lj zG-W3DSE}2RjY(b?lOJWReb^|OC9dVPd{F^qj zoJuM0nM>rkAqQwkm+zq{$`#!(Po~n4^+)Hmc6e%fX6=@4;-FGcuAS>%$-o%DLyod< zJgST;Rx~dJwXkhka#6*#eh;%vsVTcfLt6L;@@(YdK_RGg*1FBbH}_MGP{lE4VlWvV zy7Pd2lg}g$v0jEo=;YWjt0L~^imPr4=S-X)k7p`%-OR}kNTi^0zYWGO za4M>-t9Ux?2y|kJs?EuFzirh)g-6k7Dt~lS>TX-^W!?T}(6-5D$zSh4mE2u9%E%%u?CXe~n7S=@rwvM}mbZ%L?sgAH-T3qb`p_)v ztQjG$?~w;HIOO-V^KUv(>&jG+Rn5cs&^h?R?Uv;SqF)zxh2NHg-QL(UaGrFVY|9$C zZ1;HG;^Jsi=faMH^YdYalFjSxA&=dJCi*pMV$I#(%a94)4yPSmqy@b9)E6XvR_hWVyL_|0b z4t3nBQGPeE^;~w%6`PzlO1+i-WOIOcT6YVbTi#xMgy@Q>sq%sIcpq%6DzsEAcc#Sk zOhWPo9I_TrIdih_CK?L93R^Z{hwaX*RHhD8M;Lp?{Bag4b~=Kkb;^ zSnrLEBFS;)x9)YpN{_FGpE;n?@MgWJsMUbmZxO(^}0YG0A+?Od!K<=%w%hrp4L4y0E9;@2+@ zIkUrzshG>-?`PYtvX8bPpZ6UONnTB;a~FEplV-j92?yzH$H@2c4ZISWzx>23O0F4w zFL-yB3Ml$jpRE-&y1IsTT4!8s?6~HyJ6~Bqzm59X)i`y+V6*UQwJ58^F>l)t?x?bm zC});WQQ^q?L)bRXrD$ZS?K+r)PeZzq^&*_*mv%K~xBEwG;Tu{z+?;c$S9{kvmtvac zwYt@3T?v<(j$_+u#NxbnMfwVO^gfvDU!9FX6`4hnX%I0L2k~Y&1}_EvoIn|l z!v9%<i!u2hTj6n0u7`=?pR}Eh~G83JTJAXsufC zvd~Tm#qP{j(}?t@Uy7`>CJ!FQlLf>E8RVkwhZ+W!PW6|ALOd z@qa;MCy#UIwmMWvXp9JwT*IF)<0UbMJ=JWo4}BUce;P|JV8-{i*(mi0k|wG2+m3?pvhd#<%(fV-DsV zB)HZ8z=|0E61{!sH)FybsmYrj<-_kP|CurS{U7=L{o|3Fvg?rp!Tmqc-yXCUx!3;> zXm{bk_^bZM6NB}?Vmsf5@XQsbA?);7L{8Zpk}(<&EI}O2stYn=jEu?uP2Yv6hJ$T+ z6SMxfGIJte&gb`A$QnCRT4>XSB%w!&zB~B78B`l`k*Kw2=L89tt_q9$i?P)7-ohOm zyKDCIx@Vh~2IwmNjVQl6!K;R?ni8$|lhoG?M6UhNz&XEBM;csl0e=!ez6_B5O`mUde|8l7H{|<*hMs?KY+t?t zup0jMM0U>ygC)aXq__Yb;O{TsH}XGEu>S{tCk1~m1+TxK*ZRk+SHNlhcl-bG&cAmC z%iT}^Y72p!d4!QRN}*kqsUq#6OiG;4R&d_Sl7aW}78Zd5M~X&BcfKz>~UoW<_emgH=QS^#vvRAx{xS3`OyENffhd-HKdK;ZFHDg%Q*5>)3HOH3wJf zk(K$0IH_#S4&qS6kxJCX31u!YiM9M^vP93exXvpj)XxWP8Cn{oL7~|nSflgqIy{3s z^a$1EK`kklx|O^8iy^)&TO4t%Ee#lq7pXL}u<(Z#ub_1oZ`Mq)`E`y9bcKIk zcGr?wn>?t2B`m6`xm4E?_VcR&G)`0 zg}5lxKM1cK_8h^g$7nwrA=AMgI_8U@q&%%HPwi!_Fc;9;R`7PzSS6Z(mkU99QWcM` zle78rO*Gz_0sO4$BjfN#B7b7kzW%qq&qv~+)30OZ!!>@QzddN=*Y{t={r#6RAw!%3 z>h!Fw#sx<_F<~A{SxQvoUDP&Bq&n^IH`cckcL|ogU z;GC(|yGrzrf*Pt*tnn&B7AW#XUh?pAr4e*X6zw>#=b^+-2?;Am^*QilXN2kZBVO}n z7kacj7IrIr?;^5&2IhEqi9A&qUu+Zc?YQL7lMcJ8Y!FKg#@)MZ>=34@) zH182ff{**VlpM`Y9YM%YnR=^=lalZw1}BY5vB8HQ=AY1JNtd!$rK8c+&kz)n02SYI z`6$G-QQ3R=sa_pL$VTrr$@$d{Ma4*~24PckJ4%dvBNg#i2uMbLFH{UoQunUXLK%a$ zMg3%6Q9HKzYx9rVzv8#IMYqi87uls4bvtTTmB)vA64mhO7!(iFcLuk(fp4sS&mGi% zPE=z5L1{UVFcqsb?Y+HC?`e0u{d^TcfYq5S_9d)m61%Feo-fU?3sDPSc2iRKHdpU1 zvppSE?|Hn*O2OoUN%=0JX(r5?`adVN+ z3ZcjShtEC=<`y6XE+_eO^erZ3d-M{pDqy}DECVq25;pACB^>YBH z$E0&qu+(2*TfxCKvtSsM)-l0QW?!9?)ZPU0EBL%BX_c%g(X8RF&34*!)oZ4XRcVHz zBNsNkrnU@NXw#{3oo2bD=9*fZ3NF1;l!A5M0mnq2n1l7^fMeP`!W$bFVB+L)tQHnK zEXE<2tAp8M4>6z?rzl&Q9_MfHxh>ih= z$g;9=WKY7Gcj;;IBvRi{;JU9XEczB&?I**-v}RRRV9JKSlBGqT?n|hQV01IK)59a| t>_S@PWkKlK01oMw@pjEVpN literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/folder-closed.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/folder-closed.gif new file mode 100755 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/folder-closed2.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/folder-closed2.gif new file mode 100755 index 0000000000000000000000000000000000000000..541107888e6739a7b367ad3d208e1efa933f877d GIT binary patch literal 105 zcmZ?wbhEHb6ky4lrdiO0bk3ZcRLy6E?4f Hg~1vCyv-@{ literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/folder.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/folder.gif new file mode 100755 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/folder2.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/folder2.gif new file mode 100755 index 0000000000000000000000000000000000000000..2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18 GIT binary patch literal 106 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-gray-line.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-gray-line.gif new file mode 100755 index 0000000000000000000000000000000000000000..37600447dc002bbc0dd16e1391b711360aae2e34 GIT binary patch literal 1877 zcmeH``8OK|0LL@bF~qSc#n50?JXNI+k>{#)#go3O{g`&sTA06+?`JRv{%1VB*=kSggPTmbZ?E2@Hm10RaqGJr~M_swEK9(fuU z9bXMur@nY#Xn3Qp;v6X2AT> zA>EM+>y@m1^a49s_E1X&+bZH^!_a=e{N6Su)s&U>sDnd!~=b?JFEB#FT8 zioZMFaK52~t&52oqdWW~2MJ1ue%%?en#qCfU7u!nC|sSJi5E`}X3h8)ly{+5*|mp+ zYqNE`8MkZN-)k};oze-j%*tB&sNuZif|=0wM%!=l0sXF(V)Zg+3_ zjbW;EBEX2ytHG=$Dx2Ha{HE%5V3a1hHnd2R32m%R*9#gFWf^4tEW&~!6yIiV)*e*l zireg~b4-8KL1b9Tn<4TQc-aUN7>=bBxE!0Aep)ES$dA>bZ zlac_>GSf$}Amq|xpG2f_X<$)PU0E=BExZ&}FuYP8&bwD%fgJCOsK5%!A}jIpO{>+( zGV75wBp|A>JOyOlNY1dq-7SE-P1iq3bVQx6%Yk<{*5}84F?-+_`Yq}S#U}_=SCzX? zX`+&GsCqhDsvFh7AWWM#ck=(Rps}W(-f3)-hf$w$i>58wymeug)RAsnbE^=j9L-?f zpi-Z);Tuuyqj4L}9YcZxTIWO&p4K%*X3?0-?f4ef8jtm%XgkyEBd6Ds8uOK?%`{)>0D(Cr`A4IcZoG`&U18YKqjoYtzQo|Dt=**7zk597IbK9sJXFyhNi zwtW@gRcSW?gGKMW@kxrlG#OY-do~qJ*-V&3Js8`Y3GYwom_@$iB+g=ml}U5>1u1QR zAzAiA(jrL>&74Uwwqm}`xJ1AT;O_GsONn5#!*ULyhq;oEIkp%2g#mF(6lf@Jxhn4i zV~t87;8y4{2KZG5ao+KL=SUTJlQq*4|E@_PjJ3`!o(GG)^}?JsMpy*)mQYPCf1;Sk`8-A8at@Xm#Gb>oe(v%3b{156)aykj?nu&|IbZfh z!lZx$?iVd}BHwuNSkmco3iwy5Drr$xV-lid6PqT(u95$N>8c#Jm2RMN_SB1WJe9Oq z(x$uU@TQLQX@QVr>U~Sa;vEmbZ_QL7odp^*-BsqVXSqmf)oqYES3tl*66F0YO=#d1 rlgk$~puxAlhuJ^ZHqgioD1o1DVtQEUit~KllU0$5nh)jV0N{TCC3Zqn literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-gray.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-gray.gif new file mode 100755 index 0000000000000000000000000000000000000000..cfb8a2f0961b880d9ecc9e59f831d0c0bf9d06db GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5F}1vNN-#bFE}n2rob1X65+pkEe*DZwLSXy)sc-G6LrLE|#j%ny@ltx#{|>*k3`b zudj+f+$8$@s#fHh^zF++cYjOsT#=i)PgZ*SBbQFk<=6g7TzYe_x%fYqoR5WW_>5Nf zsIRkcJbHA@c(c>D3XzqU)=k#8J9nngIK5|{y|vw$2$RE?mT4~XtDRLEe|<_~c?_?$ zLGJZ!!S{W4%zp58Z=>w%X})`Qe0&`0sXRUALwVLJuj#KvHA1S2+ow&BYJYdfr2O^1 zna!)!@5=7^`T51=)#j2iwbhrWRX*39_q(R{^Y??#w#k`8!n#b?Ah=gT4^b_6Je!p-pqnUi6)T{Kw4)JLb3tD)cb}Z;R&ALM=NKo^J zQum3S7LQAK7iB!^v-vhdvhxz-&N&k%mqtvOXdV2 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-red-line.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-red-line.gif new file mode 100755 index 0000000000000000000000000000000000000000..df9e749a8f1f58862588efc64988003efad01d51 GIT binary patch literal 1877 zcmeH``BxGK0LPh{$5cGF%CuRcF0W^1+Eb91Y0har@ns%QJPI-bCps}CP-u#GY96he zH{=x}8cR_?6wMSBHp}~@d8B5Ec_ztT`#0A2hwu02&*#0br`JzT&Np-c8>+j2FWJW9 z|J$$i)xiJGfXTkfHvoVFVDp9i%O?Qp3V=f6d5==7Sk4KMl>Ucik`YxtvJ<)$%#TPKR% zdeBegW3Nr-TZ$_DvX!7#=EQu`)|{{_NO4?Hnuz--`I}N3UjF&+?uwLk+=>GJd{B_Tc2OKbjN9H> z96NPSF%oo|+^NT@plDh-RsN>!ws$&N>eV+-RSK`GN-+xQlcpP|{VXMbZmGY?Sg+bE z&yqDeRb-m~Xn;($Rkc9os0lNWR0x7V&viYtFw425?`)O{#Xnxi^Z-rV%z`xuPf1K3U`ignx^9LiY{9RF`M1 z((4&CBBq9gRTxIqvdNQH4XvU-teM=&r#I{BRpE@Mf`UowW*aYDTj; zR~d}wJj7bmv%$EvhL%3@95+YnP@jZFjkyaK?LZqem&Cp}E@#J}7%>obDszfKXbSed{!N zqe%A5h1G9<<|OWgt(pyPNUi%mt_OllWQ$!DHV#9VzJogSLla83`aMi%;zcml$vXr7 zf<%YcL08HgN8s@2tufz(==0;jh0Ny@q4f1T-P5MdE9;FzHSA-Pm3Wn^KX5K-#%-h+YndE*c}A#} z97|nymmXX*xOhw~p_=<#*Rp;q1c;i_)TkyvQ;xgVtY5mTyh_&|ZEzU`%%?)%UDt;N sUpBjNE)^Df<9oQ%i{r+6SwTgJWAz*lYeQMK?>m|{T3!EviV6VoFXq=mv;Y7A literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-red.gif b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/images/treeview-red.gif new file mode 100755 index 0000000000000000000000000000000000000000..3bbb3a157f1568d59d6db02b55a3b3fe9a1ff7a7 GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5q9rFMYXq;dkzBCUd%AXV z7f->2WoKqf=UU0E5MF-1&C2oHA5RfQ-wyu&du5`wWCYCfT`X0jHDP7Qa?|x$vA=>= zUtbk}xJmT)RjtT1>D!lu?*5kMxgs}ppRDxuM=qV7%dh>Fxb)^;bMb#JIUft%@ENV{ zQD0}@c=YI)@n)xQ6(TDyt(&ZGckWD~aeB`@duzKh5hjN(Ez?}&S39dT{`!=}@)%xg zgWT)eg75q8nEl}G-bUHi(|q^r`1m-~Q+ayKhw`jdUejNTYJ^l3w@;fM)&A~|N%`x2 zGn-ed-<93-^Ye?#tIZ{4YO60#t9-6I?{`h@=kEuf$II8+R(@HSYaUSgyf$2+OgK}0 zZsRjUi+L5dHILtK5edt9=qI|b{eIzIMl<7PRm>?O4!tnstX#kf7!b zrS20uEgqNfF3Nb+XY*}_WalNuopUBkE{&Kl(L5+ZuF(6`HI*Fyu5b4nE$kweHiYk+ hA)Dse=Ki!azG~*body { + font-size: 16px; + font-size: 68.75%; +} Reset Base Font Size */ + /* +body { + font-family: Verdana, helvetica, arial, sans-serif; + font-size: 68.75%; + background: #fff; + color: #333; +} */ + +a img { border: none; } \ No newline at end of file diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/jquery.treeview.min.js b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/jquery.treeview.min.js new file mode 100755 index 0000000..e693321 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/common/jquery/treeview/jquery.treeview.min.js @@ -0,0 +1,16 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * kasunbg: changed the cookieid name + * + */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("

          ").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/common/main.js b/DOCBOOK/webhelp/docsrc/webhelp-files/common/main.js new file mode 100755 index 0000000..5957fb4 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/common/main.js @@ -0,0 +1,276 @@ +/** + * Miscellaneous js functions for WebHelp + * Kasun Gajasinghe, http://kasunbg.blogspot.com + * David Cramer, http://www.thingbag.net + * + */ + +//Turn ON and OFF the animations for Show/Hide Sidebar. Extend this to other anime as well if any. +var noAnimations=false; + +$(document).ready(function() { + // When you click on a link to an anchor, scroll down + // 105 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link within a page. + $('a[href*=#]').click(function() { + if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') + && location.hostname == this.hostname) { + var $target = $(this.hash); + $target = $target.length && $target + || $('[name=' + this.hash.slice(1) +']'); + if (!(this.hash == "#searchDiv" || this.hash == "#treeDiv" || this.hash == "") && $target.length) { + var targetOffset = $target.offset().top - 120; + $('html,body') + .animate({scrollTop: targetOffset}, 200); + return false; + } + } + }); + + // $("#showHideHighlight").button(); //add jquery button styling to 'Go' button + //Generate tabs in nav-pane with JQuery + $(function() { + $("#tabs").tabs({ + cookie: { + expires: 2 // store cookie for 2 days. + } + }); + }); + + //Generate the tree + $("#ulTreeDiv").attr("style", ""); + $("#tree").treeview({ + collapsed: true, + animated: "medium", + control: "#sidetreecontrol", + persist: "cookie" + }); + + //after toc fully styled, display it. Until loading, a 'loading' image will be displayed + $("#tocLoading").attr("style", "display:none;"); + // $("#ulTreeDiv").attr("style","display:block;"); + + //.searchButton is the css class applied to 'Go' button + $(function() { + $("button", ".searchButton").button(); + + $("button", ".searchButton").click(function() { + return false; + }); + }); + + //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('ui-tabs-1') === '1') { //search tab is active + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('searchForm'); + searchHighlight($.cookie('textToSearch')); + $("#showHideHighlight").css("display", "block"); + } + } + + syncToc(); //Synchronize the toc tree with the content pane, when loading the page. + //$("#doSearch").button(); //add jquery button styling to 'Go' button + + // When you click on a link to an anchor, scroll down + // 120 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link from another page. + var hash = window.location.hash; + if(hash){ + var targetOffset = $(hash).offset().top - 120; + $('html,body').animate({scrollTop: targetOffset}, 200); + return false; + } +}); + + +/** + * If an user moved to another page by clicking on a toc link, and then clicked on #searchDiv, + * search should be performed if the cookie textToSearch is not empty. + */ +function doSearch() { +//'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('searchForm'); + } +} + +/** + * Synchronize with the tableOfContents + */ +function syncToc() { + var a = document.getElementById("webhelp-currentid"); + if (a != undefined) { + //Expanding the child sections of the selected node. + var nodeClass = a.getAttribute("class"); + if (nodeClass != null && !nodeClass.match(/collapsable/)) { + a.setAttribute("class", "collapsable"); + //remove display:none; css style from
            block in the selected node. + var ulNode = a.getElementsByTagName("ul")[0]; + if (ulNode != undefined) { + if (ulNode.hasAttribute("style")) { + ulNode.setAttribute("style", "display: block; background-color: #D8D8D8 !important;"); + } else { + var ulStyle = document.createAttribute("style"); + ulStyle.nodeValue = "display: block; background-color: #D8D8D8 !important;"; + ulNode.setAttributeNode(ulStyle); + } } + //adjust tree's + sign to - + var divNode = a.getElementsByTagName("div")[0]; + if (divNode != undefined) { + if (divNode.hasAttribute("class")) { + divNode.setAttribute("class", "hitarea collapsable-hitarea"); + } else { + var divClass = document.createAttribute("class"); + divClass.nodeValue = "hitarea collapsable-hitarea"; + divNode.setAttributeNode(divClass); + } } + //set persistence cookie when a node is auto expanded + // setCookieForExpandedNode("webhelp-currentid"); + } + var b = a.getElementsByTagName("a")[0]; + + if (b != undefined) { + //Setting the background for selected node. + var style = a.getAttribute("style", 2); + if (style != null && !style.match(/background-color: Background;/)) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else if (style != null) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else { + a.setAttribute("style", "background-color: #D8D8D8; "); + b.setAttribute("style", "color: black;"); + } + } + + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. + while (a.parentNode && a.parentNode.nodeName) { + var parentNode = a.parentNode; + var nodeName = parentNode.nodeName; + + if (nodeName.toLowerCase() == "ul") { + parentNode.setAttribute("style", "display: block;"); + } else if (nodeName.toLocaleLowerCase() == "li") { + parentNode.setAttribute("class", "collapsable"); + parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); + } + a = parentNode; +} } } +/* + function setCookieForExpandedNode(nodeName) { + var tocDiv = document.getElementById("tree"); //get table of contents Div + var divs = tocDiv.getElementsByTagName("div"); + var matchedDivNumber; + var i; + for (i = 0; i < divs.length; i++) { //1101001 + var div = divs[i]; + var liNode = div.parentNode; + } +//create a new cookie if a treeview does not exist + if ($.cookie(treeCookieId) == null || $.cookie(treeCookieId) == "") { + var branches = $("#tree").find("li");//.prepareBranches(treesettings); + var data = []; + branches.each(function(i, e) { + data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0; + }); + $.cookie(treeCookieId, data.join("")); + + } + + if (i < divs.length) { + var treeviewCookie = $.cookie(treeCookieId); + var tvCookie1 = treeviewCookie.substring(0, i); + var tvCookie2 = treeviewCookie.substring(i + 1); + var newTVCookie = tvCookie1 + "1" + tvCookie2; + $.cookie(treeCookieId, newTVCookie); + } + } */ + +/** + * Code for Show/Hide TOC + * + */ +function showHideToc() { + var showHideButton = $("#showHideButton"); + var leftNavigation = $("#sidebar"); //hide the parent div of leftnavigation, ie sidebar + var content = $("#content"); + var animeTime=75 + + if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) { + //Hide TOC + showHideButton.removeClass('pointLeft').addClass('pointRight'); + + if(noAnimations) { + leftNavigation.css("display", "none"); + content.css("margin", "125px 0 0 0"); + } else { + leftNavigation.hide(animeTime); + content.animate( { "margin-left": 0 }, animeTime); + } + showHideButton.attr("title", "Show Sidebar"); + } else { + //Show the TOC + showHideButton.removeClass('pointRight').addClass('pointLeft'); + if(noAnimations) { + content.css("margin", "125px 0 0 280px"); + leftNavigation.css("display", "block"); + } else { + content.animate( { "margin-left": '280px' }, animeTime); + leftNavigation.show(animeTime); + } + showHideButton.attr("title", "Hide Sidebar"); + } +} + +/** + * Code for search highlighting + */ +var highlightOn = true; +function searchHighlight(searchText) { + highlightOn = true; + if (searchText != undefined) { + var wList; + var sList = new Array(); //stem list + //Highlight the search terms + searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "I$N~E8N^zO~Pw;a^(H|lo|{Z2pXH!s%dfd}c>`i1a} zv}w~u+O=z^&ucH8I(3rHojXg{u3e>Dw{8*;5FkBz^pKuCdrDwnp!Dg}NBZ{dEB*TQ z6Nkeg0|pF`prAoAc<^8uHf*StVKRL9a2YvrgqD#qdh{p>4GoboW5&q%@jsOb6UNKL zi9gdaQ6^2AB$FpkmZ?*xNO*X-L`Fu+^y$Bp88fEKtXVU)%#sg3oF&oGQ8IgWw9KDB zPs@B+u;4ecaNzt(}+4YG0LAI0POlNOI`@@$gLn>WkWty^W=wr#RKF;TW}-yu78?2ylPeI~ni@0LA# z_Gn3xq&<5jDQSVbpHow1pOJmCZ{L2| zzkk0RI`n5Pha@d6P14fSB|SY&OS)uaWJqRaretMhNls3#g(&}#*G_t^X5&tb?cVgzI{vX-n}dL z?%k7bzx}s7cC;HDBDMsph1qdetv!((`o7b?{;YGKUdEz%jHZ6 zv#c$>;zP!+HFMWmmmYU{0=tATce>bbS#cp9huibSU}xwMrz7~gd6bnH)iEG2$gFd@ zJYy}(9nkA-M`D7<6YF#(>hm}CcMNiS65O6GA54gHMoozRU`S|`t|U=W6Bf^PyW`>( zeLUB_WbTqha~J)u9;eRs)-qNL_1FBx*pl^~qD_9e6q)zZbzybPEX?t%8DrUQ4=n@2+%jQeC=qF~Z#6-(P8( z8EMt3Rm1lV9Xgn2M%LTwSfl%vy7Bj$sjwu+5)t0_|^tKi_DDD!LDm;9u0$<-Bj83<2 z{nO;fh!O7^n~8(X74#qu#0<{kbJpWG+yB_D?;uL||3=v8fuD&b_Mtl?XJHfE!aj7t zFT6v*$M(K``SF#veRv1|N=c9=38e92+=rps~@$$0vM4h#9$K zV>5yYXQ)Ho`1o1hp_=e-#fs$$&VTYrywZ0!6MOQA*n^3!c1_@!c1W;jpi-y>abld`|wsL0|uqAHKRXC$EU7?Pv7BessvrZt61|tGN+O z&b)f{N&`M~@{t_zwVyNK1^$KG`Zs{dV`4~N!a??5yH@|&_LFxCvE>%RaKhWN1tyApEK|ee!F}3U#2dR zd-w!yk|#MiU%qrdXMkzyPr-lt&$@MM4ELz7-nzE*Tw8ltQJ2UA@Tm#Z2>j7p{JhTr zpZp}&S4!fq}EYe$PMg6A8HUafc_3w>BH~8Kgq12FTYML06*u; zye9ZI2W|c^k{9Sj{^MV`2ItU&e5AipH^D|t&;Dzc2r=hn#9|FL{OiV8S_c*tTt}sfFBI;6HkzJ9U&= zNPaP1tG{OKV&psc{O+*tKlqvc0k>M>Keo|t!Nf%1@CAb2oJntiTksWu>-Gp| zz&}~~b))+q^^+K*haG=!Kj^=Qn7bdorWbR^CMNg{{@HQIJ}`(Q@g-b#_ci}7F>~;LEW*zo0GUu5+Ji~wXu%D6o_uZcXzPI5&U0{b) literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/images/sample.jpg b/DOCBOOK/webhelp/docsrc/webhelp-files/images/sample.jpg new file mode 100755 index 0000000000000000000000000000000000000000..d8ec5c311243ad66e28e8b86ee439db9ed6d5589 GIT binary patch literal 78931 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�lJnlbk@ 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/index.html b/DOCBOOK/webhelp/docsrc/webhelp-files/index.html new file mode 100755 index 0000000..f32cbc1 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/index.html @@ -0,0 +1,368 @@ + + + + + + + + + + - + + + + + + + + + + + +
            + +
            +
            +
            +
            +
            +

            David Cramer

            +
            +
            +
            +

            Kasun Gajasinghe

            +
            +
            + +
            +
            +
            +

            Permission is hereby granted, free of charge, to any person obtaining a copy of this + software and associated documentation files (the “Softwareâ€), to deal in the + Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the following conditions: +

            +
            +
              +
            • +

              The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. +

              +
            • +
            • +

              Except as contained in this notice, the names of individuals credited with + contribution to this software shall not be used in advertising or otherwise to promote + the sale, use or other dealings in this Software without prior written authorization + from the individuals in question. +

              +
            • +
            • +

              Any stylesheet derived from this Software that is publicly distributed will be + identified with a different name and the version strings in any derived Software will + be changed so that no possibility of confusion between the derived package and this + Software will exist. +

              +
            • +
            +
            +

            Warranty: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DAVID CRAMER, KASUN GAJASINGHE, OR ANY + OTHER CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +

            +

            This package is maintained by Kasun Gajasinghe, + and David Cramer, + and with + contributions by Arun Bharadwaj and Visitha Baddegama. Please + direct support questions to the DocBook-apps + mailing list. +

            +

            This package also includes the following software written and copyrighted by others:

            +
            +
              +
            • +

              Files in template/common/jquery are + copyrighted by JQuery under the MIT License. + The file jquery.cookie.js Copyright (c) 2006 Klaus Hartl under + the MIT license. +

            • +
            • +

              Some files in the template/search and indexer directories were + originally part of N. Quaine's htmlsearch DITA plugin. + The htmlsearch DITA plugin is available from the files page of the DITA-users yahoogroup. The + htmlsearch plugin was released under a BSD-style + license. See indexer/license.txt + for details. +

              +
            • +
            • +

              Stemmers from the Snowball + project released under a BSD license. +

              +
            • +
            • +

              Code from the Apache Lucene search + engine provides support for tokenizing Chinese, Japanese, and Korean content released + under the Apache 2.0 license. +

              +
            • +
            • +

              Code that provides weighted search results and some + other improvements was graciously donated by SyncRO Soft + Ltd., the publishers of the oXygen XML + Editor. +

              +
            • +
            • +

              TagSoup, released under the Apache 2.0 + license, makes it possible to index html instead of just + xhtml output. +

              +
            • +
            • +

              Cosmetic improvements provided by OpenStack. +

              +
            • +
            +
            +

            Webhelp for DocBook was first developed as a Google Summer of Code project. +

            +
            +
            +
            +

            January 2012

            +
            +
            +
            +
            +
            +

            List of Figures

            +
            +
            1. Sample Image
            +
            +
            + <xi:include></xi:include>
            +
            + + + \ No newline at end of file diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/ix01.html b/DOCBOOK/webhelp/docsrc/webhelp-files/ix01.html new file mode 100755 index 0000000..ac2bcd8 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/ix01.html @@ -0,0 +1,319 @@ + + + + + + + + + + Index - - + + + + + + + + + + + + +
            + +
            +
            +
            +
            +

            Index

            +
            +
            +
            +
            +
            +

            A

            +
            +
            ANT_HOME, Search indexing
            +
            +
            +
            +

            D

            +
            +
            design, Design
            +
            DITA
            +
            +
            +
            htmlsearch plugin,
            +
            +
            +
            +
            +
            +

            F

            +
            +
            FAQ, FAQ
            +
            features, Introduction
            +
            +
            +
            +

            H

            +
            +
            htmlsearch,
            +
            +
            +
            +

            I

            +
            +
            indexer
            +
            +
            +
            building, Search indexing
            +
            CLASSPATH, Search indexing
            +
            +
            +
            +
            +
            +

            J

            +
            +
            jquery,
            +
            +
            +
            +

            S

            +
            +
            search, Search
            +
            +
            +
            description, Introduction
            +
            features, Introduction
            +
            highlighting, Introduction
            +
            indexing, Search indexing
            +
            stemming, Introduction
            +
            +
            +
            stemmer, New Stemmers
            +
            stemming, Adding support for other (non-CJKV) languages
            +
            +
            +
            +
            +
            + + + \ No newline at end of file diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/search/htmlFileInfoList.js b/DOCBOOK/webhelp/docsrc/webhelp-files/search/htmlFileInfoList.js new file mode 100755 index 0000000..1fcdff5 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/search/htmlFileInfoList.js @@ -0,0 +1,16 @@ +var doStem = true; +//List of indexed files. +fl = new Array(); +fl["0"]= "ch01.html"; +fl["1"]= "ch02.html"; +fl["2"]= "ch03.html"; +fl["3"]= "ch04.html"; +fl["4"]= "index.html"; +fl["5"]= "ix01.html"; +fil = new Array(); +fil["0"]= "ch01.html@@@Introduction@@@Overview of the package..."; +fil["1"]= "ch02.html@@@Using the package@@@To build the indexer, you must have installed the JDK version 1.5 or higher and set the ANT_HOME environment variable..."; +fil["2"]= "ch03.html@@@Developer Docs@@@Adding new Stemmers is very simple..."; +fil["3"]= "ch04.html@@@FAQ@@@Frequently Asked Questions..."; +fil["4"]= "index.html@@@@@@null"; +fil["5"]= "ix01.html@@@Index@@@null"; diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/search/index-1.js b/DOCBOOK/webhelp/docsrc/webhelp-files/search/index-1.js new file mode 100755 index 0000000..da62104 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/search/index-1.js @@ -0,0 +1,426 @@ +var indexerLanguage="de"; +//Auto generated index for searching by xsl-webhelpindexer for DocBook Webhelp.# Kasun Gajasinghe, University of Moratuwa +w["-"]="0*3,1*4,2*7,3*2,4*1"; +w["-doutput-dir"]="1*1"; +w["-version"]="1*2"; +w["."]="0*1,1*24,2*18,4*2"; +w[".chm"]="0*1"; +w[".htaccess"]="1*1"; +w[".html"]="1*1"; +w[".js"]="2*2"; +w[".treeview"]="2*1"; +w["0"]="1*11,3*2,4*2"; +w["1"]="1*9,3*6,4*2"; +w["1."]="3*6,4*2"; +w["1.5"]="1*1"; +w["1.6"]="1*1"; +w["1.76.0"]="1*1"; +w["1.76.1"]="1*2"; +w["1.76.1."]="1*1"; +w["1.77.0"]="3*2"; +w["1.8.0"]="1*4"; +w["1.8.2.custom.css"]="1*1"; +w["172800"]="1*2"; +w["2"]="1*6,3*6,4*3"; +w["2."]="3*6,4*1"; +w["2.0"]="4*2"; +w["2006"]="4*1"; +w["2008"]="4*1"; +w["2008-2012"]="4*1"; +w["2012"]="4*2"; +w["290304000"]="1*2"; +w["2:"]="1*3"; +w["3"]="3*8,4*1"; +w["3."]="3*6,4*1"; +w["3.0.0.jar"]="1*2"; +w["3.x"]="3*1"; +w["4"]="2*1,3*7"; +w["4."]="3*6"; +w["480"]="1*1"; +w["5"]="0*1,1*14,3*8"; +w["5."]="3*6"; +w["596"]="3*2"; +w["596:"]="3*2"; +w["6"]="1*6"; +w["6.5"]="1*4"; +w["6.5.5.jar"]="1*3,3*1"; +w["6.5.x"]="1*1"; +w["7"]="3*1"; +w["7200"]="1*2"; +w["76"]="1*3"; +w["77"]="3*2"; +w["8"]="1*6"; +w[":"]="1*3,2*2,3*2"; +w["_stemm"]="2*2"; +w["_stemmer.js"]="2*4"; +w["abandoning"]="2*1"; +w["about"]="1*4,2*2,3*2"; +w["abov"]="4*1"; +w["abstract"]="1*1"; +w["according"]="0*1"; +w["achiev"]="2*1"; +w["achieved"]="2*1"; +w["action"]="4*1"; +w["actually"]="2*1"; +w["adapted"]="1*1"; +w["add"]="0*1,1*4,2*4,4*1"; +w["adddefaultcharset"]="1*1"; +w["added"]="0*1,2*2"; +w["adding"]="1*97,2*2,4*1,5*1"; +w["addition"]="1*2,3*1"; +w["addoutputfilterbytyp"]="1*9"; +w["admon.g"]="1*1"; +w["admon.graphics"]="1*1"; +w["adv"]="4*1"; +w["aft"]="0*1"; +w["again"]="1*2"; +w["age"]="1*3"; +w["algorithm"]="2*2"; +w["all"]="1*2,2*2,4*1"; +w["all."]="2*1"; +w["allows"]="1*1"; +w["already"]="2*1"; +w["also"]="0*1,1*3,4*1"; +w["alternatively"]="0*1"; +w["analyz"]="1*1"; +w["animated"]="2*1"; +w["animated:"]="2*1"; +w["anoth"]="1*2,2*1"; +w["ant"]="0*2,1*74,2*5"; +w["ant.file.dir"]="1*2"; +w["ant_hom"]="1*2,5*1"; +w["any"]="1*1,2*1,4*6"; +w["apach"]="1*44,4*3"; +w["apache-ant-1"]="1*2"; +w["apache-ant-1.8.0"]="1*2"; +w["apart"]="3*2"; +w["apis.jar"]="1*10,3*2"; +w["appear"]="0*2,1*1"; +w["applica"]="1*1"; +w["application"]="0*1,1*5"; +w["applied"]="2*1"; +w["apply"]="2*1"; +w["appropriat"]="1*2"; +w["apps"]="4*1"; +w["apps@lists.oasis"]="2*1"; +w["arbitrary"]="1*1"; +w["argument"]="1*1"; +w["arguments:"]="1*1"; +w["arising"]="4*1"; +w["array"]="2*10,4*1"; +w["array."]="2*1"; +w["arun"]="4*1"; +w["asked"]="3*1"; +w["associated"]="4*1"; +w["asspath"]="1*5"; +w["assum"]="1*2"; +w["assumed"]="2*1"; +w["assumption"]="2*1"; +w["ate"]="2*1"; +w["attribut"]="3*2"; +w["authorization"]="4*1"; +w["auto"]="0*1"; +w["auto-synchronization"]="0*1"; +w["autoidx"]="3*2"; +w["autoidx.xsl"]="3*2"; +w["autoidx.xsl:"]="3*4"; +w["automatically"]="1*1"; +w["availabl"]="1*7,2*3,4*1"; +w["avascript"]="1*1"; +w["away"]="2*1"; +w["back"]="1*1"; +w["backward"]="0*1"; +w["baddegama"]="4*1"; +w["baddegama."]="4*1"; +w["bar."]="1*1"; +w["based"]="0*2,1*1,2*6,3*1,4*1"; +w["basedir"]="1*1"; +w["basically"]="3*1"; +w["been"]="1*1"; +w["behav"]="2*1"; +w["being"]="1*1"; +w["below"]="1*1"; +w["below."]="1*2"; +w["bett"]="1*1"; +w["betwe"]="2*1,4*1"; +w["bharadwaj"]="4*1"; +w["bi"]="2*1"; +w["bi-gram"]="2*1"; +w["bin"]="1*4"; +w["binary"]="1*1"; +w["bitmaps"]="1*1"; +w["bits."]="1*1"; +w["bob"]="1*2"; +w["bold"]="0*1"; +w["book"]="1*1"; +w["both"]="1*1"; +w["box"]="0*1"; +w["break"]="2*1"; +w["brief"]="0*1,1*1"; +w["brow"]="1*1"; +w["brows"]="1*2,2*2,3*3"; +w["browser."]="1*1"; +w["bsd"]="4*2"; +w["bsd-styl"]="4*1"; +w["build"]="0*3,1*62,2*3,3*1"; +w["build-index"]="2*1"; +w["build.properti"]="1*3,2*1"; +w["build.xml"]="1*55"; +w["build.xml."]="1*1"; +w["building"]="2*1,3*2,5*1"; +w["built"]="2*1"; +w["but"]="1*1,2*2,4*1"; +w["button"]="2*1"; +w["c"]="1*3,3*2,4*1"; +w["c:"]="1*3,3*4"; +w["cach"]="1*4"; +w["cache-control"]="1*3"; +w["caching"]="1*1"; +w["call"]="2*1"; +w["called"]="2*1"; +w["caus"]="1*4"; +w["certain"]="1*1"; +w["ch03"]="2*1"; +w["ch03.html"]="2*1"; +w["chang"]="1*5,2*3"; +w["changed"]="1*1,2*1,4*1"; +w["chapt"]="1*1,2*2"; +w["chapterinfo"]="1*1"; +w["charact"]="1*1"; +w["charg"]="4*1"; +w["check"]="3*1"; +w["checkout"]="2*1"; +w["chines"]="0*1,1*1,2*3,4*1"; +w["chm"]="0*1"; +w["chrom"]="3*1"; +w["chunked"]="0*1,1*1,2*1"; +w["chunking"]="1*1,2*1"; +w["cjk"]="2*4"; +w["cjkv"]="1*1,2*1,5*1"; +w["cl"]="1*3"; +w["claim"]="4*1"; +w["class"]="1*1,2*1"; +w["classpath"]="1*4,3*1,5*1"; +w["classpath."]="1*1"; +w["click."]="2*1"; +w["client"]="0*1,2*2"; +w["client-sid"]="0*1,2*1"; +w["cn"]="2*2"; +w["cod"]="0*1,1*6,2*11,3*1,4*4"; +w["code."]="2*1"; +w["code:"]="2*1"; +w["collapsed"]="2*1"; +w["collapsed:"]="2*1"; +w["collapsibl"]="0*1"; +w["color"]="1*1"; +w["colored"]="0*1"; +w["com"]="1*4,2*8,4*2"; +w["com.nexwave.nquindexer.indexermain"]="1*1"; +w["com.nexwave.nquindexer.indexertask"]="1*1"; +w["command"]="1*7,2*2"; +w["command-lin"]="1*1"; +w["command."]="2*1"; +w["comment"]="1*1"; +w["comments."]="1*1"; +w["common"]="0*1,1*7,2*1,4*1"; +w["commons:"]="1*3"; +w["company"]="2*1"; +w["comparing"]="2*1"; +w["compil"]="2*1"; +w["complet"]="1*4"; +w["compress"]="1*3"; +w["concerned"]="1*1"; +w["condition"]="4*1"; +w["conditions:"]="4*1"; +w["conf"]="1*1"; +w["configuration"]="1*40"; +w["confirm"]="1*2"; +w["confirmed"]="1*1"; +w["confusion"]="4*1"; +w["connection"]="4*1"; +w["consid"]="1*1"; +w["contact"]="2*1"; +w["contain"]="1*1,2*2"; +w["contained"]="4*1"; +w["containing"]="1*1"; +w["content"]="0*5,1*1,2*13,4*1"; +w["content."]="1*1,2*2"; +w["content:"]="2*1"; +w["contract"]="4*1"; +w["contributing"]="1*1"; +w["contribution"]="4*2"; +w["contributor"]="4*1"; +w["control"]="1*4,2*1"; +w["control:"]="2*1"; +w["controlling"]="1*1"; +w["convenient"]="1*3"; +w["cooki"]="2*3,4*1"; +w["copi"]="4*2"; +w["copied"]="1*3"; +w["copy"]="1*4,2*1,4*2"; +w["copyright"]="4*3"; +w["copyrighted"]="4*2"; +w["cor"]="1*1"; +w["correct"]="1*1,2*5,4*1"; +w["correctly"]="3*1"; +w["cosmetic"]="4*1"; +w["could"]="1*2"; +w["cram"]="4*4"; +w["creat"]="1*2,2*1"; +w["created"]="1*2"; +w["creating"]="0*1,1*2"; +w["credited"]="4*1"; +w["csrc"]="1*2"; +w["css"]="0*1,1*13,2*3"; +w["css-based"]="0*1,2*1"; +w["css-styling"]="2*1"; +w["css."]="1*1"; +w["ction"]="2*1"; +w["currently"]="1*1,2*3,3*1"; +w["currently."]="3*1"; +w["custom"]="1*1"; +w["customiz"]="1*1"; +w["customization"]="1*1,2*1"; +w["customized"]="2*1"; +w["customizing"]="1*45"; +w["d"]="1*1,2*1,5*40"; +w["d."]="2*1"; +w["damag"]="4*1"; +w["danish"]="1*1"; +w["data"]="2*1"; +w["david"]="4*6"; +w["days"]="1*1"; +w["de"]="1*1,2*3"; +w["deal"]="4*1"; +w["dealing"]="4*2"; +w["deep"]="1*1"; +w["default"]="1*4,2*1"; +w["default."]="1*1"; +w["defin"]="1*1,2*1"; +w["deflat"]="1*10"; +w["delet"]="1*1"; +w["demo"]="3*2"; +w["demos"]="3*2"; +w["deployment"]="3*3"; +w["derived"]="4*3"; +w["describ"]="1*1"; +w["description"]="0*1,5*1"; +w["description."]="0*1"; +w["design"]="2*47,5*2"; +w["desired"]="1*2"; +w["desired-output-dir"]="1*1"; +w["detail"]="1*2,2*2,3*1,4*1"; +w["detailed"]="1*2"; +w["details."]="1*2,3*1,4*1"; +w["develop"]="2*51"; +w["developed"]="4*1"; +w["dex"]="2*1"; +w["diff"]="1*1"; +w["different"]="4*1"; +w["dir"]="1*7"; +w["direct"]="1*1,4*1"; +w["directly"]="1*1"; +w["directori"]="1*4,4*1"; +w["directory"]="1*18,2*2"; +w["directory."]="1*5,2*1"; +w["disabl"]="1*1"; +w["displays"]="2*1"; +w["distribut"]="4*1"; +w["distributed"]="4*1"; +w["distribution"]="1*4"; +w["dita"]="3*1,4*3,5*1"; +w["dita-us"]="4*1"; +w["dita."]="3*1"; +w["div"]="1*1,2*1"; +w["divided"]="2*1"; +w["divs"]="1*1,2*1"; +w["do"]="1*4,2*2,4*1"; +w["doc"]="1*1"; +w["docbkx"]="0*1,1*1"; +w["docbo"]="3*2"; +w["docbook"]="0*1,1*13,2*13,3*2,4*2"; +w["docbook-apps"]="4*1"; +w["docbook-apps@list"]="2*1"; +w["docbook-apps@lists.oasis-open.org"]="2*1"; +w["docbook-webhelp"]="1*1,2*7"; +w["docbook-xsl-1"]="3*1"; +w["docbook-xsl-1.77.0"]="3*2"; +w["docbook."]="1*1"; +w["docbook.sourceforge.net"]="1*2"; +w["docs"]="1*9,2*52"; +w["docs@@@"]="2*1"; +w["docsbook"]="1*1"; +w["docsbook-xsl-1"]="1*1"; +w["docsbook-xsl-1.76.1"]="1*1"; +w["docsr"]="1*6"; +w["docsrc"]="1*1"; +w["document"]="1*9"; +w["document."]="1*3"; +w["documentation"]="0*1,1*7,2*1,3*2,4*1"; +w["documentation."]="0*1,2*1,3*1"; +w["does"]="1*2,2*2,3*2"; +w["doesn"]="1*1"; +w["don"]="1*2,2*3,3*1"; +w["donated"]="4*1"; +w["dost"]="2*1"; +w["dot"]="4*4"; +w["doutput"]="1*1"; +w["down"]="1*5,4*1"; +w["download"]="1*4,2*1"; +w["drop"]="2*1"; +w["dtd"]="1*2"; +w["dtd."]="1*1"; +w["dutch"]="1*1"; +w["e"]="2*1"; +w["easi"]="2*1"; +w["easily"]="2*2"; +w["easily."]="2*1"; +w["easy"]="2*1"; +w["eclips"]="0*1"; +w["edit"]="1*2"; +w["editor"]="1*1,2*1,4*1"; +w["editor."]="4*1"; +w["efault"]="1*1"; +w["element"]="1*1"; +w["element."]="1*1,3*2"; +w["els"]="1*1,2*7"; +w["email"]="2*1"; +w["en"]="1*4,2*4"; +w["en."]="1*1"; +w["enabl"]="1*1"; +w["enable.stemming"]="1*1"; +w["endorsed"]="1*1"; +w["engin"]="0*1,4*1"; +w["engine."]="0*1"; +w["english"]="0*1,1*2,2*4"; +w["englishstemm"]="2*1"; +w["environment"]="1*7"; +w["equalsignorecas"]="2*3"; +w["er"]="1*1"; +w["ered"]="2*1"; +w["error"]="3*2"; +w["error."]="3*2"; +w["ers"]="2*1"; +w["etc"]="0*1,1*3,2*2"; +w["etc."]="0*1,1*4,2*2"; +w["event"]="4*1"; +w["ex"]="2*1"; +w["ex:"]="2*1"; +w["exactly"]="2*2"; +w["exampl"]="1*7,2*1,4*6"; +w["example."]="2*1"; +w["example:"]="1*4"; +w["example 1"]="1*5"; +w["example 1. exampl"]="1*5"; +w["example 2"]="2*5"; +w["example 2. add"]="2*5"; +w["example 3"]="2*5"; +w["example 3. initializ"]="2*5"; +w["except"]="4*1"; +w["exist"]="4*1"; +w["exist."]="1*1,4*1"; +w["existing"]="2*1"; +w["exposed"]="0*1"; +w["express"]="4*1"; +w["ext"]="2*2"; + diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/search/index-2.js b/DOCBOOK/webhelp/docsrc/webhelp-files/search/index-2.js new file mode 100755 index 0000000..386d325 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/search/index-2.js @@ -0,0 +1,425 @@ +//Auto generated index for searching by xsl-webhelpindexer for DocBook Webhelp.# Kasun Gajasinghe, University of Moratuwa +w["extended"]="2*2"; +w["extensibl"]="2*1"; +w["extension"]="1*3"; +w["extension:"]="1*1"; +w["extensiv"]="2*1"; +w["extensively"]="3*2"; +w["extention"]="2*1"; +w["extract"]="1*1"; +w["f"]="4*1,5*40"; +w["fairly"]="2*1"; +w["fals"]="1*1"; +w["false."]="2*1"; +w["faq"]="3*51,5*2"; +w["featur"]="0*6,2*2,5*2"; +w["feature."]="2*1"; +w["feel"]="1*1"; +w["fetched"]="1*1"; +w["few"]="2*2"; +w["figur"]="1*7,4*5"; +w["figure 1"]="1*5"; +w["figure 1. sampl"]="1*5"; +w["fil"]="0*1,1*78,2*14,3*2,4*5"; +w["file."]="1*2,2*1"; +w["file:"]="3*4"; +w["fileref"]="1*1"; +w["files."]="1*3"; +w["files:"]="1*1,2*1"; +w["fileset"]="1*2"; +w["filesmatch"]="1*6"; +w["find"]="2*1,3*4"; +w["finnish"]="1*1"; +w["firefox"]="3*1"; +w["first"]="2*1,4*1"; +w["fitness"]="4*1"; +w["fiv"]="2*1"; +w["fl"]="2*1"; +w["flv"]="1*2"; +w["fold"]="1*2,2*4,3*1"; +w["folder."]="2*2"; +w["foll"]="1*1"; +w["follosing"]="1*3"; +w["follow"]="1*2"; +w["following"]="1*8,2*3,3*3,4*2"; +w["foobar"]="2*1"; +w["form"]="1*1"; +w["form."]="1*1"; +w["format"]="0*3,1*1,2*1"; +w["fortunately"]="2*1"; +w["forward"]="0*1"; +w["four"]="3*1"; +w["fr"]="1*1,2*4"; +w["frameset"]="0*1,1*1,2*2"; +w["frameset."]="0*1,2*2"; +w["free"]="4*1"; +w["french"]="0*1,1*1,2*4"; +w["french."]="2*1"; +w["frenchstemm"]="2*1"; +w["frequently"]="3*1"; +w["from"]="0*3,1*11,2*8,3*2,4*5"; +w["full"]="0*1,2*1"; +w["fully"]="2*2"; +w["furnished"]="4*1"; +w["furth"]="1*1,2*2"; +w["gajasingh"]="4*4"; +w["ge"]="1*1"; +w["genera"]="1*1"; +w["generally"]="1*1,2*1"; +w["generat"]="0*2,1*2,2*4"; +w["generated"]="2*1"; +w["generating"]="1*45,3*1"; +w["german"]="0*1,1*1,2*4"; +w["german."]="0*1,1*1"; +w["germanstemm"]="2*1"; +w["get"]="0*1,1*1,2*1"; +w["getting"]="2*1,3*2"; +w["gif"]="1*2"; +w["given."]="1*1"; +w["gmail"]="4*2"; +w["go"]="1*1"; +w["googl"]="0*1,4*1"; +w["graciously"]="4*1"; +w["gram"]="2*1"; +w["granted"]="4*1"; +w["graphics"]="1*6"; +w["groups"]="0*1"; +w["guid"]="1*4,3*1"; +w["h"]="5*40"; +w["handl"]="1*1,2*2"; +w["happ"]="2*1,3*1"; +w["hartl"]="4*1"; +w["hav"]="3*1"; +w["having"]="1*1"; +w["having."]="1*1"; +w["head"]="1*4,2*2"; +w["header:"]="2*1"; +w["heading"]="2*1"; +w["height"]="1*1"; +w["help"]="0*3,1*3,2*1"; +w["help."]="0*1"; +w["her"]="1*3"; +w["here."]="1*3"; +w["hereby"]="4*1"; +w["high"]="1*2"; +w["higher."]="1*2"; +w["highlighting"]="0*1,5*1"; +w["hour"]="1*1"; +w["how"]="0*1,1*3,2*2"; +w["howev"]="1*1"; +w["href"]="3*2"; +w["ht"]="1*1"; +w["htaccess"]="1*1"; +w["htm"]="1*3,4*1"; +w["html"]="0*1,1*10,2*3,3*3,4*1"; +w["html.extension"]="1*1"; +w["htmlfileinfolist"]="2*1"; +w["htmlfileinfolist.js"]="2*1"; +w["htmlfilelist"]="2*1"; +w["htmlfilelist.js"]="2*1"; +w["htmlsearch"]="3*2,4*2,5*2"; +w["http"]="1*1"; +w["http:"]="1*2"; +w["httpd"]="1*1"; +w["httpd.conf"]="1*1"; +w["hungarian"]="1*1"; +w["ico"]="1*2"; +w["ide"]="2*1"; +w["idea"]="2*1"; +w["identified"]="4*1"; +w["identify"]="1*1"; +w["ie"]="3*1"; +w["if"]="0*1,1*14,2*16,3*1"; +w["ignor"]="1*1"; +w["imag"]="1*82,4*2"; +w["imagedata"]="1*1"; +w["imageobject"]="1*2"; +w["images."]="1*5,4*1"; +w["implementation"]="2*1"; +w["implemented"]="0*1,1*1,2*3"; +w["implemented."]="2*2"; +w["implementing"]="0*1"; +w["implied"]="4*1"; +w["import"]="1*4"; +w["important"]="1*1"; +w["importing"]="0*1"; +w["impossibl"]="0*1"; +w["improv"]="1*1"; +w["improvement"]="4*2"; +w["includ"]="0*2,1*1,2*7,4*3"; +w["included"]="1*1,2*1,4*1"; +w["including"]="3*1,4*2"; +w["index"]="0*1,1*16,2*22,3*5,4*5,5*51"; +w["index-"]="2*2"; +w["index.html"]="1*2"; +w["indexed"]="1*2,2*2"; +w["indexer-languag"]="1*1"; +w["indexer-language-cod"]="2*2"; +w["indexer."]="1*1,2*2,3*2"; +w["indexerlanguag"]="2*5"; +w["indexerlanguage.equalsignorecas"]="2*6"; +w["indexermain"]="1*1"; +w["indexertask"]="1*2,2*1"; +w["indexertask.java"]="2*2"; +w["indexing"]="1*47,2*1,5*5"; +w["indexing:"]="2*1"; +w["indicated"]="1*4"; +w["indicated:"]="1*3"; +w["individual"]="4*2"; +w["information"]="1*5,3*3"; +w["information."]="3*1"; +w["ing"]="1*1,2*1"; +w["initializ"]="2*5,4*1"; +w["input"]="1*10"; +w["input-images-basedir"]="1*1"; +w["input-images-dir"]="1*3"; +w["input-xml"]="1*3"; +w["input-xml."]="1*1"; +w["insid"]="1*1,2*1"; +w["install"]="1*8"; +w["installation"]="1*2"; +w["installed"]="1*3"; +w["instead"]="4*1"; +w["instruction"]="1*1"; +w["integrated"]="2*1"; +w["integrating"]="0*1"; +w["intellij"]="2*1"; +w["inter"]="1*1"; +w["internet"]="0*1"; +w["into"]="0*2,1*1"; +w["introduction"]="0*51,5*5"; +w["invocation"]="1*1"; +w["invocation."]="1*1"; +w["invok"]="1*1,2*1"; +w["invoking"]="1*1"; +w["involved."]="2*1"; +w["iphone."]="3*1"; +w["ipod"]="3*1"; +w["issu"]="1*1"; +w["it_stemm"]="2*1"; +w["it_stemmer.js"]="2*1"; +w["italian"]="1*1,2*5"; +w["italianstemm"]="2*4"; +w["ity"]="4*1"; +w["ix"]="1*1"; +w["j"]="1*1,5*40"; +w["ja"]="1*1,2*2"; +w["january"]="4*1"; +w["japan"]="2*1"; +w["japanes"]="0*1,1*1,2*2,4*1"; +w["jar"]="1*21,2*1,3*1"; +w["java"]="1*30,2*5,3*6"; +w["java."]="2*1"; +w["javascrip"]="1*1"; +w["javascript"]="1*9,2*8,3*1"; +w["javascript."]="1*1,2*1"; +w["jdk"]="1*2"; +w["jdk."]="1*1"; +w["ject"]="4*1"; +w["jpeg"]="1*2"; +w["jpg"]="1*13"; +w["jquery"]="1*7,2*3,3*2,4*3,5*1"; +w["jquery-ui"]="2*1"; +w["jquery-ui-1"]="1*1"; +w["jquery-ui-1.8.2.custom.css"]="1*1"; +w["jquery.cookie.js"]="4*1"; +w["jquery.treeview.css"]="1*1"; +w["jqueryui"]="1*1"; +w["jre"]="1*1"; +w["js"]="1*2,2*9,4*1"; +w["just"]="4*1"; +w["kasun"]="3*6,4*4"; +w["kasunbg"]="4*2"; +w["kind"]="4*1"; +w["klaus"]="4*1"; +w["ko"]="2*2"; +w["korean"]="0*1,2*3,4*1"; +w["languag"]="0*2,1*51,2*25,4*2,5*1"; +w["language-cod"]="2*2"; +w["language."]="1*2,2*2"; +w["languages."]="1*1"; +w["lat"]="1*1"; +w["lay"]="1*1"; +w["layout"]="0*1"; +w["left"]="1*1,2*2"; +w["leftnavigation"]="1*1"; +w["level"]="1*1"; +w["li"]="2*1"; +w["liability"]="4*1"; +w["liabl"]="4*1"; +w["lib"]="1*1"; +w["library"]="2*1"; +w["library."]="2*1"; +w["licens"]="4*6"; +w["license."]="4*5"; +w["license.txt"]="4*1"; +w["lik"]="0*1,2*2"; +w["limitation"]="4*1"; +w["limited"]="4*1"; +w["lin"]="1*5,2*1,3*2"; +w["line."]="1*1"; +w["link"]="0*2,1*2"; +w["linux"]="1*1"; +w["list"]="1*2,2*4,4*11"; +w["listed"]="2*1"; +w["ll"]="2*1"; +w["load"]="2*2"; +w["local"]="1*3"; +w["location"]="1*6,2*2"; +w["location."]="2*1"; +w["logged"]="0*1"; +w["logo"]="2*1"; +w["long"]="1*1"; +w["look"]="1*1,2*2"; +w["lsearch"]="4*1"; +w["ltd"]="4*1"; +w["ltd."]="4*1"; +w["luc"]="0*1,1*2,4*1"; +w["lucene-analyzers-3"]="1*1"; +w["lucene-analyzers-3.0.0.jar"]="1*1"; +w["lucene-core-3"]="1*1"; +w["lucene-core-3.0.0.jar"]="1*1"; +w["ly"]="2*1"; +w["m"]="3*2"; +w["mad"]="2*1"; +w["mailing"]="2*1,4*1"; +w["main"]="1*1,2*1"; +w["mainly"]="2*1"; +w["maintained"]="4*1"; +w["mak"]="1*2,2*1,4*1"; +w["makefil"]="0*1,1*4"; +w["makefile.sampl"]="1*4"; +w["manag"]="1*1"; +w["many"]="0*1"; +w["martin"]="1*1"; +w["matching"]="2*1"; +w["matrix"]="3*1"; +w["mav"]="0*1,1*1"; +w["max"]="1*3"; +w["max-ag"]="1*3"; +w["may"]="1*2"; +w["mechanism"]="1*2,2*2"; +w["mechanism."]="2*1"; +w["mediaobject"]="1*2"; +w["medium"]="2*1"; +w["mer"]="2*1"; +w["mer."]="2*1"; +w["merchantabil"]="4*1"; +w["merg"]="4*1"; +w["messag"]="1*1"; +w["meta"]="2*1"; +w["method"]="2*1"; +w["microsoft"]="0*1"; +w["missing"]="1*1"; +w["mit"]="4*2"; +w["ml"]="1*1"; +w["model"]="0*1"; +w["modify"]="1*4,4*1"; +w["mor"]="1*1,3*3"; +w["most"]="3*1"; +w["mostl"]="3*1"; +w["moved"]="2*1"; +w["mplement"]="1*1"; +w["multipl"]="1*1"; +w["must"]="1*8,2*1"; +w["must-revalidat"]="1*2"; +w["mutandis"]="1*3"; +w["mutatis"]="1*3"; +w["n"]="4*1"; +w["n."]="4*1"; +w["nam"]="1*8,2*4,4*2"; +w["named"]="2*3"; +w["navigat"]="2*1"; +w["navigation"]="1*1,2*4"; +w["navigation:"]="2*2"; +w["ncomment"]="1*1"; +w["ndex"]="0*1"; +w["necessary"]="1*2"; +w["necessary."]="1*1"; +w["need"]="1*10,2*3,3*3"; +w["need:"]="2*1"; +w["needed"]="1*1,2*1"; +w["net"]="1*1,4*2"; +w["netbean"]="2*1"; +w["new"]="1*2,2*57,4*1,5*1"; +w["newly"]="1*1"; +w["next"]="2*1"; +w["nexwav"]="1*2,2*8"; +w["ng"]="2*1"; +w["nic"]="2*1"; +w["nicely"]="0*1"; +w["no"]="1*1,2*1,4*2"; +w["non"]="1*46,2*1,5*1"; +w["non-cjkv"]="1*45,2*1,5*1"; +w["non-n"]="1*1"; +w["noninfringement"]="4*1"; +w["noninfringement."]="4*1"; +w["norwegian"]="1*1"; +w["not"]="1*13,2*1,4*1"; +w["nothing"]="1*1"; +w["notic"]="4*3"; +w["now"]="2*4"; +w["nquindex"]="1*2,2*6"; +w["ns"]="1*1"; +w["null"]="2*1"; +w["numb"]="2*1"; +w["nwsearchfnt"]="2*2"; +w["nwsearchfnt.js"]="2*2"; +w["oasis-op"]="2*1"; +w["object"]="2*4"; +w["object."]="2*3"; +w["obtaining"]="4*1"; +w["odd"]="1*1"; +w["ok"]="3*1"; +w["ok-xsl-1"]="3*1"; +w["ok-xsl-1.77.0"]="3*2"; +w["onc"]="1*1"; +w["one"]="1*1,2*2"; +w["only"]="1*3,2*3"; +w["only."]="2*2"; +w["open"]="1*1,2*2"; +w["open.org"]="2*1"; +w["opened"]="2*1"; +w["openstack"]="4*1"; +w["operating"]="3*2"; +w["optional"]="1*1"; +w["org"]="2*1"; +w["organized"]="2*1"; +w["originally"]="4*1"; +w["oth"]="0*1,1*48,2*2,3*2,4*6,5*1"; +w["others:"]="4*1"; +w["otherwis"]="4*2"; +w["ouput"]="1*1"; +w["out"]="0*1,4*1"; +w["output"]="0*2,1*104,2*3,3*3,4*1"; +w["output-dir"]="1*2"; +w["output."]="0*1,4*1"; +w["outsid"]="3*2"; +w["over"]="1*1"; +w["overall"]="2*1"; +w["overview"]="0*1,2*4"; +w["owing"]="1*1"; +w["own"]="0*3,1*3,2*1"; +w["oxyg"]="4*1"; +w["packag"]="1*60,2*1,4*3"; +w["package."]="0*1,1*1,2*1"; +w["pag"]="0*2,1*1,2*9,4*1"; +w["page."]="1*1,2*1"; +w["pan"]="0*4,2*3"; +w["para"]="1*1"; +w["paramet"]="1*4"; +w["parameters."]="1*2"; +w["parent"]="2*1"; +w["part"]="1*2,2*1,4*1"; +w["particular"]="4*1"; +w["parts."]="2*1"; +w["pass"]="1*1"; +w["passed"]="1*1"; +w["path"]="1*17,3*1,4*1"; +w["path-"]="1*4"; +w["paths."]="3*1"; +w["pattern"]="1*3"; +w["patterns."]="1*2"; +w["pdf"]="1*2"; +w["peopl"]="1*1"; + diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/search/index-3.js b/DOCBOOK/webhelp/docsrc/webhelp-files/search/index-3.js new file mode 100755 index 0000000..921bcf3 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/search/index-3.js @@ -0,0 +1,422 @@ +//Auto generated index for searching by xsl-webhelpindexer for DocBook Webhelp.# Kasun Gajasinghe, University of Moratuwa +w["perform"]="1*1"; +w["performanc"]="1*1"; +w["performance."]="1*1"; +w["permission"]="4*2"; +w["permit"]="4*1"; +w["persist"]="2*1"; +w["persist:"]="2*1"; +w["person"]="4*2"; +w["phras"]="1*1"; +w["placed"]="0*1"; +w["plain"]="1*1"; +w["pleas"]="1*1,4*1"; +w["plugin"]="0*1,1*1,2*2,3*2,4*2,5*1"; +w["plugin."]="4*1"; +w["png"]="1*2"; +w["point"]="1*7"; +w["popular"]="2*1"; +w["populated"]="1*1"; +w["port"]="1*1"; +w["portion"]="4*1"; +w["portugues"]="1*1"; +w["position"]="1*2"; +w["positioning"]="1*2,2*1"; +w["positioning.css"]="1*1,2*1"; +w["positions."]="1*1"; +w["possibility"]="4*1"; +w["possibl"]="4*1"; +w["pretty"]="1*1"; +w["prev"]="2*1"; +w["prior"]="1*1,4*1"; +w["privat"]="2*2"; +w["probably"]="1*1"; +w["procedur"]="1*2"; +w["process"]="1*5"; +w["processed"]="2*1"; +w["processing"]="2*2"; +w["processor"]="1*4,3*1"; +w["processors."]="1*1"; +w["produc"]="0*1"; +w["production"]="3*3"; +w["program"]="1*6"; +w["project"]="1*4,2*1,4*2"; +w["project."]="4*1"; +w["promot"]="4*1"; +w["prompt"]="1*2"; +w["prompt:"]="1*2"; +w["properti"]="1*2,2*1"; +w["property"]="1*4,2*1"; +w["provid"]="0*1,2*2,4*2"; +w["provided"]="3*1,4*2"; +w["public"]="1*2"; +w["publication"]="0*1"; +w["publicly"]="4*1"; +w["publish"]="4*2"; +w["punctuation"]="1*1,2*1"; +w["purpos"]="4*1"; +w["put"]="1*3"; +w["quain"]="4*1"; +w["queri"]="2*1"; +w["query"]="0*1,2*4"; +w["querying"]="1*1,2*2"; +w["querying:"]="2*1"; +w["question"]="2*1,3*1,4*2"; +w["question."]="4*1"; +w["raphics"]="1*1"; +w["rating"]="0*1"; +w["read"]="2*1"; +w["readm"]="1*1"; +w["readme.xml"]="1*1"; +w["reason"]="3*2"; +w["recomm"]="1*1"; +w["recommended"]="1*40"; +w["recompil"]="2*1"; +w["redmond"]="1*2"; +w["ref"]="1*2"; +w["referenc"]="1*1"; +w["relativ"]="1*7,4*1"; +w["released"]="4*4"; +w["remov"]="1*1"; +w["rendered"]="2*1"; +w["replac"]="1*1"; +w["requir"]="0*1,1*1"; +w["requirement"]="0*1"; +w["resid"]="1*1,2*1"; +w["resourc"]="1*1"; +w["restor"]="2*1"; +w["restriction"]="4*1"; +w["result"]="0*5,1*1,2*4,4*1"; +w["result."]="0*1"; +w["results."]="0*1,2*1"; +w["return"]="2*1"; +w["revalidat"]="1*2"; +w["right"]="1*1,4*1"; +w["ring"]="4*1"; +w["rman"]="1*1"; +w["rol"]="1*1"; +w["rom"]="4*1"; +w["romanian"]="1*1"; +w["root"]="2*2"; +w["rss"]="1*1"; +w["rtising"]="4*1"; +w["run"]="1*1,2*3"; +w["running"]="1*2,2*1"; +w["russian"]="1*1"; +w["s"]="1*7,2*6,3*2,4*1,5*40"; +w["safari"]="3*1"; +w["safely"]="1*1"; +w["sal"]="4*1"; +w["sam"]="1*2"; +w["sampl"]="0*1,1*16,4*1"; +w["sample.jpg"]="1*10"; +w["sav"]="2*1"; +w["saxhtmlindex"]="2*1"; +w["saxhtmlindex.java"]="2*2"; +w["saxon"]="1*10,3*1"; +w["saxon-6"]="1*3,3*1"; +w["saxon-6.5.5.jar"]="1*3,3*1"; +w["saxon.jar"]="1*1"; +w["scor"]="0*1"; +w["scoring"]="0*1,2*1"; +w["script"]="0*3,1*6"; +w["script."]="0*1,1*4"; +w["se"]="2*1"; +w["search"]="0*12,1*54,2*59,4*3,5*6"; +w["search-result"]="0*1"; +w["search-result."]="0*1"; +w["search."]="0*2,2*1"; +w["searched"]="0*1"; +w["searching"]="2*1"; +w["searching."]="2*1"; +w["section"]="1*3"; +w["sectioninfo"]="1*1"; +w["see"]="1*10,2*2,3*1,4*1"; +w["see."]="2*1"; +w["seem"]="1*1"; +w["self"]="2*1"; +w["sell"]="4*1"; +w["separat"]="2*1"; +w["serching"]="2*1"; +w["serv"]="1*2,2*1"; +w["servic"]="0*1"; +w["serving"]="1*1"; +w["set"]="1*9,3*1"; +w["setoutputfilt"]="1*1"; +w["setting"]="1*2"; +w["setting."]="1*1"; +w["shall"]="4*3"; +w["shar"]="1*13,3*6"; +w["shell"]="1*2"; +w["should"]="1*2,2*1"; +w["shown"]="0*1,1*1"; +w["shows"]="0*2,1*1"; +w["sid"]="0*1,2*2"; +w["side."]="2*1"; +w["sidetreecontrol"]="2*1"; +w["similar"]="0*1"; +w["simpl"]="1*1,2*1"; +w["simple."]="2*1"; +w["simplified"]="2*1"; +w["simply"]="1*2,2*2"; +w["sinc"]="1*1,2*1"; +w["small"]="0*3"; +w["smooth"]="1*1"; +w["snapshot"]="1*4"; +w["snowball"]="2*6,4*1"; +w["snowballstemm"]="2*2"; +w["soft"]="4*1"; +w["softwar"]="4*15"; +w["software."]="4*2"; +w["som"]="1*3,2*1,4*2"; +w["sophisticated"]="0*1"; +w["sourc"]="1*3,2*2"; +w["source."]="2*1"; +w["sourceforg"]="1*1"; +w["sources."]="2*1"; +w["spac"]="2*1"; +w["spanish"]="1*1"; +w["specified"]="2*5,4*1"; +w["specify"]="1*1"; +w["src"]="2*8"; +w["st"]="2*1,4*1"; +w["stal"]="1*1"; +w["start"]="1*1"; +w["starting"]="1*2"; +w["stat"]="2*1"; +w["stayton"]="1*2"; +w["stem"]="1*1,2*2"; +w["stemm"]="1*5,2*75,4*2,5*2"; +w["stemmer."]="0*1"; +w["stemming"]="0*2,1*3,2*5,5*2"; +w["stemming."]="2*1"; +w["step"]="1*2,3*1"; +w["steps"]="2*1"; +w["steps."]="2*1"; +w["stor"]="1*1,2*2"; +w["stored"]="1*2"; +w["string"]="2*3"; +w["structur"]="2*4"; +w["structure."]="2*2"; +w["study"]="1*1"; +w["stuff"]="1*1"; +w["stuff."]="1*1"; +w["styl"]="1*1,4*1"; +w["stylesheet"]="1*1,4*1"; +w["stylesheet-path"]="1*1"; +w["styling"]="2*4"; +w["styling."]="2*1"; +w["sub"]="4*1"; +w["subdirectory"]="1*1"; +w["sublicens"]="4*1"; +w["substantial"]="4*1"; +w["such"]="1*1,2*2"; +w["summ"]="4*1"; +w["summari"]="1*1"; +w["summaries."]="1*1"; +w["summary"]="1*1,2*1"; +w["support"]="0*3,1*48,2*5,3*2,4*2,5*1"; +w["supportedlanguag"]="2*8,4*1"; +w["suppress.footer.navigation"]="1*1"; +w["sur"]="2*1"; +w["svn"]="2*1"; +w["swedish"]="1*1"; +w["swf"]="1*2"; +w["synchronization"]="0*1"; +w["syncro"]="4*1"; +w["syst"]="0*1,1*5,2*1"; +w["system"]="3*2"; +w["system."]="0*1,1*3"; +w["system:"]="1*1"; +w["t"]="1*4,3*1"; +w["tab"]="1*1,2*5"; +w["tab."]="1*1,2*2"; +w["tab:"]="2*1"; +w["tabbed"]="2*2"; +w["tabl"]="0*2,2*6"; +w["tabs."]="2*1"; +w["tag"]="2*2"; +w["tagsoup"]="4*1"; +w["target"]="0*1"; +w["target."]="0*1"; +w["task"]="1*2"; +w["te"]="1*1"; +w["technical"]="0*1"; +w["tell"]="1*1"; +w["templat"]="0*1,1*1,2*2,4*2"; +w["template."]="1*1"; +w["term"]="0*2"; +w["test"]="1*4"; +w["test-ouput"]="1*1"; +w["test-output"]="1*3"; +w["tested"]="1*1,3*3"; +w["text"]="1*6,2*2"; +w["that"]="0*3,1*15,2*6,4*3"; +w["them"]="1*8"; +w["them."]="2*1"; +w["theme-redmond"]="1*3"; +w["theming"]="1*1"; +w["then"]="0*1,1*2,2*7"; +w["ther"]="2*2,3*1"; +w["therefor"]="1*1"; +w["thes"]="1*7,2*2"; +w["they"]="1*3,2*1"; +w["thingbag"]="4*2"; +w["thos"]="1*2"; +w["though"]="1*1"; +w["three"]="1*1,2*3"; +w["tim"]="0*1"; +w["tion"]="1*1"; +w["tip"]="1*3"; +w["titl"]="1*2,2*2"; +w["toc"]="0*4,1*1,2*2"; +w["toc."]="0*1"; +w["tokenizing"]="2*2,4*1"; +w["too"]="2*1"; +w["tool"]="1*1"; +w["tools.jar"]="1*1"; +w["top"]="0*1,1*2"; +w["top-level"]="1*1"; +w["topic"]="1*1"; +w["topic."]="2*1"; +w["tort"]="4*1"; +w["totally"]="2*1"; +w["transformation"]="3*3"; +w["travers"]="2*1"; +w["tree"]="0*1,1*3,2*7"; +w["tree."]="0*1,1*1"; +w["tree:"]="1*1,2*1"; +w["treeview"]="1*3,2*2"; +w["true"]="1*4,2*1"; +w["trunk"]="2*3"; +w["turkish"]="1*1"; +w["two"]="1*3,2*4"; +w["txt"]="1*2,4*1"; +w["typ"]="1*3"; +w["typing"]="1*2"; +w["u"]="1*1"; +w["ui"]="1*1,2*2"; +w["ul"]="2*1"; +w["un"]="1*1"; +w["unchanged"]="1*1"; +w["unchanged."]="1*1"; +w["uncompress"]="1*1"; +w["und"]="1*1,4*6"; +w["understandable."]="2*1"; +w["undertak"]="1*1"; +w["unix"]="1*1"; +w["unnecessary"]="2*1"; +w["unord"]="2*1"; +w["unzip"]="1*2"; +w["up"]="2*1"; +w["updat"]="1*1"; +w["upport"]="2*1"; +w["us"]="2*2"; +w["use"]="0*5,1*10,2*1,4*3"; +w["used"]="1*9,4*2"; +w["user"]="0*1,1*3,2*2,3*6,4*1"; +w["uses"]="1*1,2*1"; +w["usi"]="2*1"; +w["using"]="0*2,1*142,2*2"; +w["usr"]="1*13,3*6"; +w["utf"]="1*1"; +w["utf-8"]="1*1"; +w["validat"]="1*2"; +w["validate-against-dtd"]="1*1"; +w["valu"]="1*4"; +w["var"]="2*1"; +w["variabl"]="1*4"; +w["variable."]="1*1"; +w["variables."]="1*1"; +w["various"]="1*1"; +w["verison"]="1*1"; +w["version"]="1*9,2*2,3*1,4*1"; +w["versions."]="1*1"; +w["very"]="2*1"; +w["visitha"]="4*1"; +w["w"]="2*1"; +w["want"]="3*1"; +w["warning"]="3*2"; +w["warranti"]="4*1"; +w["warranty"]="4*6"; +w["warranty: "]="4*5"; +w["was"]="4*3"; +w["way"]="1*1"; +w["ways"]="1*1"; +w["ways:"]="1*1"; +w["we"]="1*3,2*3,3*1"; +w["web"]="0*2,1*1"; +w["web-based"]="0*1"; +w["webhelp"]="0*1,1*69,2*15,3*15,4*2"; +w["webhelp-index"]="3*2"; +w["webhelp-indexer."]="3*2"; +w["webhelp."]="1*2,2*2"; +w["webhelp.include.search.tab"]="1*1"; +w["webhelp.indexer.languag"]="1*1,2*2,4*1"; +w["webhelp.xsl"]="1*3"; +w["webhelpindex"]="1*1,2*3"; +w["webhelpindexer.jar"]="1*1,2*1"; +w["week"]="1*1"; +w["weighted"]="0*1,4*1"; +w["well"]="1*2,3*3"; +w["well."]="1*2"; +w["wer"]="1*1,2*2,4*1"; +w["what"]="0*1,1*1,2*1,3*4"; +w["when"]="1*2,2*5,3*2"; +w["wher"]="0*1,1*3,2*1,3*4"; +w["wheth"]="2*1,4*1"; +w["which"]="1*5,2*2"; +w["whom"]="4*1"; +w["width"]="1*1"; +w["wiki"]="3*1"; +w["will"]="1*4,4*3"; +w["windows"]="1*3"; +w["without"]="0*1,4*4"; +w["word"]="0*1,2*8"; +w["work"]="1*1"; +w["worked"]="1*1"; +w["would"]="2*1"; +w["writ"]="2*1"; +w["writt"]="1*1,2*1,4*2"; +w["x"]="1*2,3*1"; +w["x-javascript"]="1*1"; +w["xerc"]="1*3"; +w["xerces2"]="1*1"; +w["xercesimpl"]="1*3"; +w["xercesimpl.jar"]="1*12,3*2"; +w["xhtml"]="1*2,3*9,4*1"; +w["xhtml."]="3*1"; +w["xi"]="4*2"; +w["xi:includ"]="4*2"; +w["xml"]="1*80,3*2,4*1"; +w["xml-apis"]="1*3"; +w["xml-apis.jar"]="1*12,3*2"; +w["xml-common"]="1*3"; +w["xml-commons:"]="1*3"; +w["xml."]="1*1"; +w["xml:"]="1*1"; +w["xp"]="1*1"; +w["xsl"]="1*10,2*3,3*2"; +w["xsl-webhelpindex"]="2*1"; +w["xsl:"]="1*4,3*2"; +w["xsls"]="1*1"; +w["xslt"]="1*5,3*3"; +w["xslt-processor-cl"]="1*3"; +w["xslt-processor-classpath"]="1*1,3*2"; +w["xsltproc"]="1*10"; +w["y"]="3*1"; +w["yahoogroup"]="4*1"; +w["yahoogroup."]="4*1"; +w["yes"]="3*1"; +w["yourfil"]="1*1"; +w["yourfile.xml"]="1*2"; +w["zh"]="1*1"; +w[" "]="0*4,1*4,2*4,3*4,4*8,5*4"; +w[" add"]="2*5"; +w[" exampl"]="1*5"; +w[" initializ"]="2*5"; +w[" sampl"]="1*5"; +w["©"]="4*1"; +w["’d"]="3*1"; +w["“"]="4*1"; + diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/search/l10n.js b/DOCBOOK/webhelp/docsrc/webhelp-files/search/l10n.js new file mode 100755 index 0000000..f25bb8f --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/search/l10n.js @@ -0,0 +1,5 @@ + + //Resource strings for localization + var localeresource = new Object; + localeresource["search_no_results"]="Your search returned no results."; + \ No newline at end of file diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/search/nwSearchFnt.js b/DOCBOOK/webhelp/docsrc/webhelp-files/search/nwSearchFnt.js new file mode 100755 index 0000000..b115dbe --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/search/nwSearchFnt.js @@ -0,0 +1,886 @@ +/*---------------------------------------------------------------------------- + * JavaScript for webhelp search + *---------------------------------------------------------------------------- + This file is part of the webhelpsearch plugin for DocBook WebHelp + Copyright (c) 2007-2008 NexWave Solutions All Rights Reserved. + www.nexwave.biz Nadege Quaine + http://kasunbg.blogspot.com/ Kasun Gajasinghe + */ + +//string initialization +var htmlfileList = "htmlFileInfoList.js"; +var htmlfileinfoList = "htmlFileInfoList.js"; +var useCJKTokenizing = false; + +var w = new Object(); +var scoring = new Object(); + +var searchTextField = ''; +var no = 0; +var noWords = 0; +var partialSearch = "There is no page containing all the search terms.
            Partial results:
            "; +var warningMsg = '
            '; +warningMsg+='Please note that due to security settings, Google Chrome does not highlight'; +warningMsg+=' the search results in the right frame.
            '; +warningMsg+='This happens only when the WebHelp files are loaded from the local file system.
            '; +warningMsg+='Workarounds:'; +warningMsg+='
              '; +warningMsg+='
            • Try using another web browser.
            • '; +warningMsg+='
            • Deploy the WebHelp files on a web server.
            • '; +warningMsg+='
            '; +txt_filesfound = 'Results'; +txt_enter_at_least_1_char = "You must enter at least one character."; +txt_enter_more_than_10_words = "Only first 10 words will be processed."; +txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended."; +txt_please_wait = "Please wait. Search in progress..."; +txt_results_for = "Results for: "; + +/* This function verify the validity of search input by the user + Cette fonction verifie la validite de la recherche entrre par l utilisateur */ +function Verifie(searchForm) { + + // Check browser compatibility + if (navigator.userAgent.indexOf("Konquerer") > -1) { + + alert(txt_browser_not_supported); + return; + } + + searchTextField = trim(document.searchForm.textToSearch.value); + searchTextField = searchTextField.replace(/['"]/g,''); + var expressionInput = searchTextField; + $.cookie('textToSearch', expressionInput); + + if (expressionInput.length < 1) { + + // expression is invalid + alert(txt_enter_at_least_1_char); + // reactive la fenetre de search (utile car cadres) + + document.searchForm.textToSearch.focus(); + } + else { + var splitSpace = searchTextField.split(" "); + var splitWords = []; + for (var i = 0 ; i < splitSpace.length ; i++) { + var splitDot = splitSpace[i].split("."); + + if(!(splitDot.length == 1)){ + splitWords.push(splitSpace[i]); + } + + for (var i1 = 0; i1 < splitDot.length; i1++) { + var splitColon = splitDot[i1].split(":"); + for (var i2 = 0; i2 < splitColon.length; i2++) { + var splitDash = splitColon[i2].split("-"); + for (var i3 = 0; i3 < splitDash.length; i3++) { + if (splitDash[i3].split("").length > 0) { + splitWords.push(splitDash[i3]); + } + } + } + } + } + noWords = splitWords; + if (noWords.length > 9){ + // Allow to search maximum 10 words + alert(txt_enter_more_than_10_words); + expressionInput = ''; + for (var x = 0 ; x < 10 ; x++){ + expressionInput = expressionInput + " " + noWords[x]; + } + Effectuer_recherche(expressionInput); + document.searchForm.textToSearch.focus(); + } else { + // Effectuer la recherche + expressionInput = ''; + for (var x = 0 ; x < noWords.length ; x++) { + expressionInput = expressionInput + " " + noWords[x]; + } + Effectuer_recherche(expressionInput); + // reactive la fenetre de search (utile car cadres) + document.searchForm.textToSearch.focus(); + } + } +} + +var stemQueryMap = new Array(); // A hashtable which maps stems to query words + +/* This function parses the search expression, loads the indices and displays the results*/ +function Effectuer_recherche(expressionInput) { + + /* Display a waiting message */ + //DisplayWaitingMessage(); + + /*data initialisation*/ + var searchFor = ""; // expression en lowercase et sans les caracte res speciaux + //w = new Object(); // hashtable, key=word, value = list of the index of the html files + scriptLetterTab = new Scriptfirstchar(); // Array containing the first letter of each word to look for + var wordsList = new Array(); // Array with the words to look for + var finalWordsList = new Array(); // Array with the words to look for after removing spaces + var linkTab = new Array(); + var fileAndWordList = new Array(); + var txt_wordsnotfound = ""; + + + // -------------------------------------- + // Begin Thu's patch + /*nqu: expressionInput, la recherche est lower cased, plus remplacement des char speciaux*/ + //The original replacement expression is: + //searchFor = expressionInput.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, " 0){ + var searchedWords = noWords.length; + var foundedWords = fileAndWordList[0][0].motslisteDisplay.split(",").length; + //console.info("search : " + noWords.length + " found : " + fileAndWordList[0][0].motslisteDisplay.split(",").length); + if (searchedWords != foundedWords){ + linkTab.push(partialSearch); + } + } + + + for (var i = 0; i < cpt; i++) { + + var hundredProcent = fileAndWordList[i][0].scoring + 100 * fileAndWordList[i][0].motsnb; + var ttScore_first = fileAndWordList[i][0].scoring; + var numberOfWords = fileAndWordList[i][0].motsnb; + + if (fileAndWordList[i] != undefined) { + linkTab.push("

            " + txt_results_for + " " + "" + fileAndWordList[i][0].motslisteDisplay + "" + "

            "); + + linkTab.push("
              "); + for (t in fileAndWordList[i]) { + //linkTab.push("
            • "+fl[fileAndWordList[i][t].filenb]+"
            • "); + + var ttInfo = fileAndWordList[i][t].filenb; + // Get scoring + var ttScore = fileAndWordList[i][t].scoring; + var tempInfo = fil[ttInfo]; + + var pos1 = tempInfo.indexOf("@@@"); + var pos2 = tempInfo.lastIndexOf("@@@"); + var tempPath = tempInfo.substring(0, pos1); + var tempTitle = tempInfo.substring(pos1 + 3, pos2); + var tempShortdesc = tempInfo.substring(pos2 + 3, tempInfo.length); + + + // toc.html will not be displayed on search result + if (tempPath == 'toc.html'){ + continue; + } + /* + //file:///home/kasun/docbook/WEBHELP/webhelp-draft-output-format-idea/src/main/resources/web/webhelp/installation.html + var linkString = "
            • " + tempTitle + ""; + // var linkString = "
            • " + tempTitle + ""; + */ + var split = fileAndWordList[i][t].motsliste.split(","); + // var splitedValues = expressionInput.split(" "); + // var finalArray = split.concat(splitedValues); + + arrayString = 'Array('; + for(var x in finalArray){ + if (finalArray[x].length > 2 || useCJKTokenizing){ + arrayString+= "'" + finalArray[x] + "',"; + } + } + arrayString = arrayString.substring(0,arrayString.length - 1) + ")"; + var idLink = 'foundLink' + no; + var linkString = '
            • ' + tempTitle + ''; + var starWidth = (ttScore * 100/ hundredProcent)/(ttScore_first/hundredProcent) * (numberOfWords/maxNumberOfWords); + starWidth = starWidth < 10 ? (starWidth + 5) : starWidth; + // Keep the 5 stars format + if (starWidth > 85){ + starWidth = 85; + } + /* + var noFullStars = Math.ceil(starWidth/17); + var fullStar = "curr"; + var emptyStar = ""; + if (starWidth % 17 == 0){ + // am stea plina + + } else { + + } + console.info(noFullStars); + */ + // Also check if we have a valid description + if ((tempShortdesc != "null" && tempShortdesc != '...')) { + + linkString += "\n
              " + tempShortdesc + "
              "; + } + linkString += "
            • "; + + // Add rating values for scoring at the list of matches + linkString += "
              "; + linkString += "
              "; + //linkString += "
              " + // + ((ttScore * 100/ hundredProcent)/(ttScore_first/hundredProcent)) * 1 + "
              "; + linkString += "
                "; + linkString += "
              • "; + linkString += "
              "; + + linkString += "
              "; + linkString += "
              "; + linkString += "
              "; + //linkString += 'Rating: ' + ttScore + ''; + + linkTab.push(linkString); + no++; + } + linkTab.push("
            "); + } + } + } + + var results = ""; + if (linkTab.length > 0) { + /*writeln ("

            " + txt_results_for + " " + "" + cleanwordsList + "" + "
            "+"

            ");*/ + results = "

            "; + //write("

              "); + for (t in linkTab) { + results += linkTab[t].toString(); + } + results += "

              "; + } else { + results = "

              " + localeresource.search_no_results + " " + txt_wordsnotfound + "" + "

              "; + } + + + // Verify if the browser is Google Chrome and the WebHelp is used on a local machine + // If browser is Google Chrome and WebHelp is used on a local machine a warning message will appear + // Highlighting will not work in this conditions. There is 2 workarounds + if (verifyBrowser()){ + document.getElementById('searchResults').innerHTML = results; + } else { + document.getElementById('searchResults').innerHTML = warningMsg + results; + } + +} + + +// Verify if the stemmed word is aproximately the same as the searched word +function verifyWord(word, arr){ + for (var i = 0 ; i < arr.length ; i++){ + if (word[0] == arr[i][0] + && word[1] == arr[i][1] + //&& word[2] == arr[i][2] + ){ + return true; + } + } + return false; +} + +// Look for elements that start with searchedValue. +function wordsStartsWith(searchedValue){ + var toReturn = ''; + for (var sv in w){ + if (searchedValue.length < 3){ + continue; + } else { + if (sv.toLowerCase().indexOf(searchedValue.toLowerCase()) == 0){ + toReturn+=sv + ","; + } + } + } + return toReturn.length > 0 ? toReturn : undefined; +} + + +function tokenize(wordsList){ + var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces + var cleanwordsList = new Array(); // Array with the words to look for + // ------------------------------------------------- + // Thu's patch + for(var j=0;j"; + return this.input.substring(this.offset,this.offset+2); + } + + function getAllTokens(){ + while(this.incrementToken()){ + var tmp = this.tokenize(); + this.tokens.push(tmp); + } + return this.unique(this.tokens); +// document.getElementById("content").innerHTML += tokens+" "; +// document.getElementById("content").innerHTML += "
              dada"+sortedTokens+" "; +// console.log(tokens.length+"dsdsds"); + /*for(i=0;i t2.length) { + return 1; + } else { + return -1; + } + //return t1.length - t2.length); +} + +// return false if browser is Google Chrome and WebHelp is used on a local machine, not a web server +function verifyBrowser(){ + var returnedValue = true; + var browser = BrowserDetect.browser; + var addressBar = window.location.href; + if (browser == 'Chrome' && addressBar.indexOf('file://') === 0){ + returnedValue = false; + } + + return returnedValue; +} + +// Remove duplicate values from an array +function removeDuplicate(arr) { + var r = new Array(); + o:for(var i = 0, n = arr.length; i < n; i++) { + for(var x = 0, y = r.length; x < y; x++) { + if(r[x]==arr[i]) continue o; + } + r[r.length] = arr[i]; + } + return r; +} + +// Create startsWith method +String.prototype.startsWith = function(str) { + return (this.match("^"+str)==str); +} + +function trim(str, chars) { + return ltrim(rtrim(str, chars), chars); +} + +function ltrim(str, chars) { + chars = chars || "\\s"; + return str.replace(new RegExp("^[" + chars + "]+", "g"), ""); +} + +function rtrim(str, chars) { + chars = chars || "\\s"; + return str.replace(new RegExp("[" + chars + "]+$", "g"), ""); +} diff --git a/DOCBOOK/webhelp/docsrc/webhelp-files/search/stemmers/de_stemmer.js b/DOCBOOK/webhelp/docsrc/webhelp-files/search/stemmers/de_stemmer.js new file mode 100755 index 0000000..7ff3822 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/webhelp-files/search/stemmers/de_stemmer.js @@ -0,0 +1,247 @@ +/* + * Author: Joder Illi + * + * Copyright (c) 2010, FormBlitz AG + * All rights reserved. + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/german/stemmer.html + * Copyright of the algorithm is: Copyright (c) 2001, Dr Martin Porter and can be found at http://snowball.tartarus.org/license.php + * + * Redistribution and use in source and binary forms, with or without modification, is covered by the standard BSD license. + * + */ + +//var stemmer = function Stemmer() { + /* + German includes the following accented forms, + ä ö ü + and a special letter, ß, equivalent to double s. + The following letters are vowels: + a e i o u y ä ö ü + */ + + var stemmer = function(word) { + /* + Put u and y between vowels into upper case + */ + word = word.replace(/([aeiouyäöü])u([aeiouyäöü])/g, '$1U$2'); + word = word.replace(/([aeiouyäöü])y([aeiouyäöü])/g, '$1Y$2'); + + /* + and then do the following mappings, + (a) replace ß with ss, + (a) replace ae with ä, Not doing these, have trouble with diphtongs + (a) replace oe with ö, Not doing these, have trouble with diphtongs + (a) replace ue with ü unless preceded by q. Not doing these, have trouble with diphtongs + So in quelle, ue is not mapped to ü because it follows q, and in feuer it is not mapped because the first part of the rule changes it to feUer, so the u is not found. + */ + word = word.replace(/ß/g, 'ss'); + //word = word.replace(/ae/g, 'ä'); + //word = word.replace(/oe/g, 'ö'); + //word = word.replace(/([^q])ue/g, '$1ü'); + + /* + R1 and R2 are first set up in the standard way (see the note on R1 and R2), but then R1 is adjusted so that the region before it contains at least 3 letters. + R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if there is no such non-vowel. + R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the word if there is no such non-vowel. + */ + + var r1Index = word.search(/[aeiouyäöü][^aeiouyäöü]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } + + var r2Index = -1; + var r2 = ''; + + if (r1Index != -1) { + var r2Index = r1.search(/[aeiouyäöü][^aeiouyäöü]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + } + } + + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Define a valid s-ending as one of b, d, f, g, h, k, l, m, n, r or t. + Define a valid st-ending as the same list, excluding letter r. + */ + + /* + Do each of steps 1, 2 and 3. + */ + + /* + Step 1: + Search for the longest among the following suffixes, + (a) em ern er + (b) e en es + (c) s (preceded by a valid s-ending) + */ + var a1Index = word.search(/(em|ern|er)$/g); + var b1Index = word.search(/(e|en|es)$/g); + var c1Index = word.search(/([bdfghklmnrt]s)$/g); + if (c1Index != -1) { + c1Index++; + } + var index1 = 10000; + var optionUsed1 = ''; + if (a1Index != -1 && a1Index < index1) { + optionUsed1 = 'a'; + index1 = a1Index; + } + if (b1Index != -1 && b1Index < index1) { + optionUsed1 = 'b'; + index1 = b1Index; + } + if (c1Index != -1 && c1Index < index1) { + optionUsed1 = 'c'; + index1 = c1Index; + } + + /* + and delete if in R1. (Of course the letter of the valid s-ending is not necessarily in R1.) If an ending of group (b) is deleted, and the ending is preceded by niss, delete the final s. + (For example, äckern -> äck, ackers -> acker, armes -> arm, bedürfnissen -> bedürfnis) + */ + + if (index1 != 10000 && r1Index != -1) { + if (index1 >= r1Index) { + word = word.substring(0, index1); + if (optionUsed1 == 'b') { + if (word.search(/niss$/) != -1) { + word = word.substring(0, word.length -1); + } + } + } + } + /* + Step 2: + Search for the longest among the following suffixes, + (a) en er est + (b) st (preceded by a valid st-ending, itself preceded by at least 3 letters) + */ + + var a2Index = word.search(/(en|er|est)$/g); + var b2Index = word.search(/(.{3}[bdfghklmnt]st)$/g); + if (b2Index != -1) { + b2Index += 4; + } + + var index2 = 10000; + var optionUsed2 = ''; + if (a2Index != -1 && a2Index < index2) { + optionUsed2 = 'a'; + index2 = a2Index; + } + if (b2Index != -1 && b2Index < index2) { + optionUsed2 = 'b'; + index2 = b2Index; + } + + /* + and delete if in R1. + (For example, derbsten -> derbst by step 1, and derbst -> derb by step 2, since b is a valid st-ending, and is preceded by just 3 letters) + */ + + if (index2 != 10000 && r1Index != -1) { + if (index2 >= r1Index) { + word = word.substring(0, index2); + } + } + + /* + Step 3: d-suffixes (*) + Search for the longest among the following suffixes, and perform the action indicated. + end ung + delete if in R2 + if preceded by ig, delete if in R2 and not preceded by e + ig ik isch + delete if in R2 and not preceded by e + lich heit + delete if in R2 + if preceded by er or en, delete if in R1 + keit + delete if in R2 + if preceded by lich or ig, delete if in R2 + */ + + var a3Index = word.search(/(end|ung)$/g); + var b3Index = word.search(/[^e](ig|ik|isch)$/g); + var c3Index = word.search(/(lich|heit)$/g); + var d3Index = word.search(/(keit)$/g); + if (b3Index != -1) { + b3Index ++; + } + + var index3 = 10000; + var optionUsed3 = ''; + if (a3Index != -1 && a3Index < index3) { + optionUsed3 = 'a'; + index3 = a3Index; + } + if (b3Index != -1 && b3Index < index3) { + optionUsed3 = 'b'; + index3 = b3Index; + } + if (c3Index != -1 && c3Index < index3) { + optionUsed3 = 'c'; + index3 = c3Index; + } + if (d3Index != -1 && d3Index < index3) { + optionUsed3 = 'd'; + index3 = d3Index; + } + + if (index3 != 10000 && r2Index != -1) { + if (index3 >= r2Index) { + word = word.substring(0, index3); + var optionIndex = -1; + var optionSubsrt = ''; + if (optionUsed3 == 'a') { + optionIndex = word.search(/[^e](ig)$/); + if (optionIndex != -1) { + optionIndex++; + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'c') { + optionIndex = word.search(/(er|en)$/); + if (optionIndex != -1) { + if (optionIndex >= r1Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'd') { + optionIndex = word.search(/(lich|ig)$/); + if (optionIndex != -1) { + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } + } + } + + /* + Finally, + turn U and Y back into lower case, and remove the umlaut accent from a, o and u. + */ + word = word.replace(/U/g, 'u'); + word = word.replace(/Y/g, 'y'); + word = word.replace(/ä/g, 'a'); + word = word.replace(/ö/g, 'o'); + word = word.replace(/ü/g, 'u'); + + return word; + }; +//} \ No newline at end of file diff --git a/DOCBOOK/webhelp/docsrc/xinclude-test.xml b/DOCBOOK/webhelp/docsrc/xinclude-test.xml new file mode 100755 index 0000000..98435f7 --- /dev/null +++ b/DOCBOOK/webhelp/docsrc/xinclude-test.xml @@ -0,0 +1,13 @@ + + +Test section + +
              Some search words for testing + + arsenal, arsenic, buy, say, by, vary, try, sky, nucleus, day, key, currency, currencies, build.xml +
              +
              Some search words for testing (inflected) + + arsenal, arsenic, buys, says, varies, tries, skies, nuclei, days, keys, currencies, build.xml +
              +
              diff --git a/DOCBOOK/webhelp/template/common/browserDetect.js b/DOCBOOK/webhelp/template/common/browserDetect.js new file mode 100755 index 0000000..c6a2c73 --- /dev/null +++ b/DOCBOOK/webhelp/template/common/browserDetect.js @@ -0,0 +1,116 @@ +var BrowserDetect = { + init: function () { + this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; + this.version = this.searchVersion(navigator.userAgent) + || this.searchVersion(navigator.appVersion) + || "an unknown version"; + this.OS = this.searchString(this.dataOS) || "an unknown OS"; + }, + searchString: function (data) { + for (var i=0;ip{ font-weight: bold; } + +p.breadcrumbs { + display: inline; + margin-bottom: 0px; + margin-top: 33px; +} + +p.breadcrumbs a { + padding-right: 12px; + margin-right: 5px; + text-decoration: none; + color: #575757; + text-transform: uppercase; + font-size: 10px; +} + +p.breadcrumbs a:first-child {background: url(../images/breadcrumb-arrow-white.png) no-repeat right center;} + +p.breadcrumbs a:hover {text-decoration: underline;} + +#star ul.star { + LIST-STYLE: none; + MARGIN: 0; + PADDING: 0; + WIDTH: 85px; + /* was 100 */ + HEIGHT: 20px; + LEFT: 1px; + TOP: -5px; + POSITION: relative; + FLOAT: right; + BACKGROUND: url('../images/starsSmall.png') repeat-x 0 -25px; +} +#star li { + PADDING: 0; + MARGIN: 0; + FLOAT: right; + DISPLAY: block; + WIDTH: 85px; + /* was 100 */ + HEIGHT: 20px; + TEXT-DECORATION: none; + text-indent: -9000px; + Z-INDEX: 20; + POSITION: absolute; + PADDING: 0; +} +#star li.curr { + BACKGROUND: url('../images/starsSmall.png') left 25px; + FONT-SIZE: 1px; +} + +table.navLinks {margin-right: 20px;} + +table.navLinks td a { + text-decoration: none; + text-transform: uppercase; + color: black; + font-size: 11px; +} + +a.navLinkPrevious { + padding-left: 12px; + background: url(../images/previous-arrow.png) no-repeat left center; +} + +a.navLinkNext { + padding-right: 12px; + background: url(../images/next-arrow.png) no-repeat right center; +} + +a#showHideButton { + padding-left: 20px; + background: url(../images/sidebar.png) no-repeat left center; +} + + +.filetree li span a { color: #777; } + +#treediv { -webkit-box-shadow: #CCC 0px 1px 2px 0px inset; } + +.legal, .legal *{ + color: #555; + text-align: center; + padding-bottom: 10px; +} + +.internal { color : #0000CC;} + +.writeronly {color : red;} + +.remark, .remark .added, .remark .changed, .remark .deleted{ background: yellow;} + +tr th, tr th .internal, tr th .added, tr th .changed { + background: #00589E; + color: white; + font-weight: bold; + text-align: left; +} + +.statustext{ + position:fixed; + top:105px; + width: 0%; + height: 0%; + opacity: .3; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -o-transform: rotate(90deg); + white-space: nowrap; + color: red; + font-weight: bold; + font-size: 2em; + margin-top: 30px; +} + +#toolbar { + width: 100%; + height: 33px; + position: fixed; + top: 93px; + z-index: 99; + left: 280px; + color: #333; + line-height: 28px; + padding-left: 10px; +} + +#toolbar-left { + position: relative; + left: 0px; +} + +body p.breadcrumbs { + margin: 0px; + padding: 0px; + line-height: 28px; +} + +/*body #content { + position: static; + margin-top: 126px; + top: 0px; +}*/ + +body.sidebar #toolbar{left: 0px;} + +body.sidebar #toolbar-left{left: 0px;} + +div#toolbar-left img {vertical-align: text-top;} + +div.note *, div.caution *, div.important *, div.tip *, div.warning * { + background: inherit !important; + color: inherit !important; + border: inherit !important; +} + +#content table thead, #content table th{ + background: gray; + color: white; + font-weight: bold; +} + +#content table caption{font-weight: bold;} + +#content table td, #content table {border: 1px solid black;} + +#content table td, #content table th { padding: 5px;} + +#content table {margin-bottom: 20px;} + +*[align = 'center']{ text-align: center;} + +#content .qandaset>table, #content .qandaset>table td, #content .calloutlist table, #content .calloutlist table td, #content .navfooter table, #content .navfooter table td { + border: 0px solid; +} + +#sidebar { display: none } + +@media print { + + body * { + visibility: hidden; + } + + #content, #content * { + visibility: visible; + } + + #sidebar, .navfooter { + display: none; + } + + #content { + margin: 0 0 0 0; + } + +} + diff --git a/DOCBOOK/webhelp/template/common/images/Thumbs.db b/DOCBOOK/webhelp/template/common/images/Thumbs.db new file mode 100755 index 0000000000000000000000000000000000000000..8f7da04cc125c960dc7c6f0f1740b01c3bb78005 GIT binary patch literal 6656 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

              WX%>_$%y6S|Y|Hx>Oyqs~mbvp@%7*nZsH zSD=BT8=h7rV-i%}mM0l=ok%_g@LZ`iq$Z67&v7Oxb#Cxhx0%wleXm{>Uv*tiZqyqq zvu~b`jLI1N#%KH$MT?XG0YkLN>aP|J?=9Ya`u?E~Pg7niUpsW*nHl*Op$XHv@Ipf5 zl>KFa-yc@$jno~HFPHlFTy2=l|9GbS_kX@EwW@hF{I)mzXHWf|_4ng!4`f_i)QqAN zGe5|?U7lsu`E~c{w&drB+X%f1KN2q1Oq-J>Zj&ck*YjPRbIO*g9IvGpZEl@vNJzo_ zu{at>2{PigNR6Ki`|Vbt$k3vTs+h&;UMEuwjizjuml{q?xje&LD3=y-JGOy*M)$P) zyG83%{ZnyZ?a4Zd&q5}CEYU1%hM^V5G)YXGHYHX4?3QI9?8c2B@@rzD*E~m8cLXiJ zn`miey6vv*YN7>BZL3jKAG)`{QV+HF*jd$*VZDgxN<$YdjRT{Zwi1D7ym+j&>*P`u z$gN!d?2bxZXjf?yFNPMKbN#J+*^N@^?oQ9ihpcp_=Ty%~XYB7Cs{Bdc-%)gf#}Y2o iCiaHS1JO&1IQGF#QtV*SO=MjBFB`!BZ0P)-KmA|n0c}?R literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/admon/caution.png b/DOCBOOK/webhelp/template/common/images/admon/caution.png new file mode 100755 index 0000000000000000000000000000000000000000..5b7809ca4a9c8d778087522e5ce04b6e90099595 GIT binary patch literal 1250 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbQ|Pftew|C&U%V<=|it5MYpyU{F+K zFf?Rva$<;zVn|MA$j)XcE@r5%W@u>vqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/admon/important.png b/DOCBOOK/webhelp/template/common/images/admon/important.png new file mode 100755 index 0000000000000000000000000000000000000000..12c90f607a1b27ddde0a7d922ae255e8c90e883e GIT binary patch literal 722 zcmV;@0xkWCP)Gdz_qOoSb{LwMwNgp7=gl$4aErG%}mjHRWNrKOy`y@b8JoTa6ut*xc4t*y1SwY|N)#>U3Z&d%1> z*52OU=jZ3|@9+2b_y7O@tTMkk%M`~Kg@u8&dg_P^_0l3yQb639!jLZt^Lx<-O17UeeJ z-|=!77W(jGx&e#?FOku-gKofoU0$~4M+dhLFueEauP`}l7LV=;lsOdn%WHure=x;k`m0(bF&MU#) z-qv#^n8(MjB|ykioqII#+`g4no-MU=BK|Sahu_3M_-d*=7hq=~t?^}A)G7 zbairN0An*{V`DL9V>K}|HDobmIW;*pIW=W9HaTQ6F*7kTGI9=S@Bjb+07*qoM6N<$ Ef=i}M4FCWD literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/admon/note.png b/DOCBOOK/webhelp/template/common/images/admon/note.png new file mode 100755 index 0000000000000000000000000000000000000000..d0c3c645ab9af6318035b026dd86944b9ddc9114 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_ll{>(OzfJ4N{OX={Q&zNgO}j31DC;|ya^r9Fjd348&p+!^cT+^sws+=& zCu*T*mRNK3PE;$BNx$Fa_9(Y=&DoXLMFRd#U31O)<`W^F&-o=xbIqK-c?mr!bmn>! zky6TW;ML~4nXw$T{yra=OteL6G!=B;0=?;6;u=vBoS#-wo>-L1;Gm(b>6x3Dp6Z*J zo|&AjV4`QFXQ5zesc&GRZ(yj9T$EW{Qt6OeSzMBtte0A>mr`1gpI4%noS!>!m*Ngk zP=bxiOwUU!DFvFBnrfM1VQy}0X_lO7WM-b2nq**TZkb|inr2~`WR#dJWc*7VsEZGz hD*$LMgOO>4k%_i}w!yxSoa=!y44$rjF6*2UngF(YpwIvS literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/admon/warning.png b/DOCBOOK/webhelp/template/common/images/admon/warning.png new file mode 100755 index 0000000000000000000000000000000000000000..1c33db8f34a8b42b373179b46a2d8d8a10e061a9 GIT binary patch literal 1241 zcmeHH+e?!H6#vDtmgHCxG{Q}12(7`~)|MMe^RnTlY0JD#q1sIwW1DTCqzzwWg@Q=t zBC2Iceu@w4LHM97Gb5%*E%9MN*%m}jvs!{N@Pd8$H}vS?TsRzlzr#5kPPe|YG%fXL zDu6VdR$WC$&Oc)^X#ZjK-7LU>{!F!o39xr+d_Vw5fMTEwpb-s#9q<5Nzz6gIepyU?Lctpr{ZK zVzWaWPAC)#17S8h%;AIuf(Q_yeIybEqS0s^i1YdJcsv0ln9M{Xkpz;-I_^=P))~D~!!Hvpq{Dl8O{rN@cECkt>#DncX%I(O&3i_YgL-$m$VU zT3cLBLS%M1`o{TBX}S|Tbhc)vk!Yp)%rdDd&my(RPsxl%lU$)tC?(1~WuEwClUQn! n$Q8O{Mxt@ukkcT{K0> literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/1.png b/DOCBOOK/webhelp/template/common/images/callouts/1.png new file mode 100755 index 0000000000000000000000000000000000000000..de682c628feee885b97fd19e77b016518d833711 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=92~rKK68R45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWk%<(RmX6r@{8<}R!o-G--zwYdTlP5b5@8;1{=w*AcsQTNRLe=)iUl{`QE`z75pUXO@geCx4;f9R> literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/10.png b/DOCBOOK/webhelp/template/common/images/callouts/10.png new file mode 100755 index 0000000000000000000000000000000000000000..96c6ce45275c754c86964f523e57bb2ca5507877 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%nMc45_%)J87f$VF!_8`x4j_g4RWzt>|@iO6xonCpLUuhigLc3Jb+U%Op*^%iLyO4_(X;pN6- z=a#Hm^`=rTB~q_P5)HwY|d8XT*w^=@u zSiV--p1!#&MsKHy@TcQO>_47BbD2s2LA=92~rKJj#M45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWC>mIVh^7_bp?vVw0Ac8FkGr=O>_47BbD2s2LA=930$iScxC45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWu;5ShzZF-HKw%&(Ci= zKi__F#+A#LnX{Q1Wv$B$B&4JcEs1e3ld7n!Y^>a~XOD#~N71)ON4pbaWYyS|806*U zoij5voeK*MV|bQ)WU}+UbmrcJAECGvBVZi8DU2$xScp!J|iq49efdw9T3& z6_BCi{Wh_2S%*lDpnd(nngWmgRbRREj-5Ec;l&{=c~OYLP(f@;Re~n_6uEq+jm!eY z4?T-!I_%-FU3*BV(lAJgz49qrkWxKEFbBgty{H#GlO<(=fzROS>gTe~DWM4fIlZ{! literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/13.png b/DOCBOOK/webhelp/template/common/images/callouts/13.png new file mode 100755 index 0000000000000000000000000000000000000000..b4878f1a451337e8e34562ba148f4b8669dbbafc GIT binary patch literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$iT8AI45_%)J87f$;Q)bS`?pED9L)6<@taey*G&cvlxG%uf$~RZ!px!#yrs(!{N|KWn3Uov-5ZqPv zLGQ`bEpBhw_dhHwe}C`pZ?79y1Pi_A2up2ruQ;N8QQgipNi)2})8dF>*H_m&0{%5C zo^;LYWd5V~uFmmHXTR6CJ>sr`PZT&FSe&y8zHH*7Cd|XeyybRo#k_WnEVZdxqa~r7vo!eLJ*%Rovco*|#lmM%k0+X>Kp3Z{yj} zom19d!1vow!LQ@5y-vBWOO>_47BbD2s2LA=930$G4ynC45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWBqMPL8CfP}<}4avv(*kWU2Q#57OY#I+56h3lkd-N!&t^WVN#45%PeTI#kX1)LZ z{Y&6s{{R1fdO`}z@du(}8Bda~a)h?5<7D|};23;_o9z*!hN4f3i#NlOhKPVyjZ0+$ zs`hXm;d40CdVHCWLR`zdu*A+i5}Fg64?SQDQmSVN=3p>A>#6*xIoSgkq70s{elF{r G5}E)R1*_Zu literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/15.png b/DOCBOOK/webhelp/template/common/images/callouts/15.png new file mode 100755 index 0000000000000000000000000000000000000000..f6a76d51667ed2ea608facddd705cb079d9150e0 GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%VAa45_%)JIT=daDc$^|DBCd8xsyR zsGbb6N-H?~OhI+a?8&k|8apgJ*x8rYFtG>AaLKxI#O^8)d?mF@lv8$#g2j>)(NC;< z#D9AQCA~b@|NY(F*mqCw#XH>V>(omWWZUR}rZaqzyNgZW36WT#{v(`SZ`*gM#?9C~ zUGr0?^Pl`Rzga)Jwp@Bu#ox6k!ECnU^{=JNbWTU;P1l%y`n9p6z`Tsg-OYLxSf&G|7V^1m;Mc0w&Kr6dteMOc)I$z JtaD0e0ssM<)1m+X literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/16.png b/DOCBOOK/webhelp/template/common/images/callouts/16.png new file mode 100755 index 0000000000000000000000000000000000000000..c5ef6359aff17dae242a9f9b5b07d37492c5e2d5 GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$De`o245_%)JIOx#P=LtM{*BGkqO3z+ zOz0O-$=()Z)u9(O-ASYA#RbKZ7XdCut~zpb&9>MgVwGB;JwyM2zyzg*l3KD>B|27I z3%|3;`?@S;uY0)nPWiq2!paXWHgYr-cnqizE%Fd8zieDgW5l ze=>zBG}QIwrv|$$yZQW8D?_xBQk;!u9!W4bkhS$tfkn$>ittqpVD zf1h7XAn9?*^ohRPa@ljQmoC)k(m1>1>*KtssgV~-Z8Oq0M{e|;rn^@7O>_47BbD2s2LA=930$G4gbA45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gW?*}&7>JKP8>LQjxULeq0mxTLm?|WTXN6dy^?nI|9YG?f)^5jUtj}M6@4{d!ehO>_47BbD2s2LA=930$DfM)545_%)JIOx#P=LtM{`$6{S(g?% zwR`Myn9#*2I6cTZBz8;iw47M0DSWb4PmNg$3#LpnRlq>o})cD8xLPn<2RG#*B^`C5M#GZHV1}#5QrW zt5#B#YTt(FHNSa3`dX|k*t6Y7t@ur)oX+W}_d3&0OYpE|Y`>jhHoHKEec$`|pqG|s z&xL4Bed4#AIdWRE?ytXgCccMDtXdaoNbt3vNZYI)QsuR&+rU@&Yn5#GQKhsw=bv*l zHPo*U)7F{p9k?q=_I&nMsd௱J?yghEpb|-VpoRA}>5tWxeXQuIvD5d;Gpf0>c9xIYoipjdSHJpu$iFlY+O>_47BbD2s2LA=930$De`o245_%)JIOHPkb^|){7z@httA~7 z6gN8yth{mbWRR7}+&2oYE4pJBP2rQZvb17XH&@*nAiFEPpqy9H*+|6d%F&}u-gkce zf8?pO^2abg($Weo=AX(PI$`CEgN8G#7n!wh>srX9Dv= z^G6)@-TwO(?Kq?F#k{wj=_6M?kNvR0HfvMg!xc7eOM@C0X%xhY?|UCVDfL+8vKqVf zWxHcntdg=?bpQS0n>k5VbCo8aTyQsU@x_ce6Ta$vblwuBJH<;?XZq;?gV|@-IqTfs z7PvO7we;x0%}EAV?|Z#xu(oO>_47BbD2s2LA=930$G4gbA45_%)I?2$xH9+QQ|1|-{i2^qS z{QMqWc&5@~vSqi)jg)R@l`jf{`jM4 z@AGdp@pTq)^|)MeD(~sXLh~mUe4BI*Cv7}nz!Q9M``wL#*B>3;y!v{n?7Zh|)m1%( zx;M004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004_ zNkl3-r5QX2JA`%WOg@};C`jCi~jij)ModkqKNNHgqLBt~eKv9U2T9g=b zod`A->8!-&I4lepOcCT7AzE5UW)@CPNkRrbc9xmhncaO7j?GWp5!ZxDc!?P?BAUdf zohUhqG~$6c$Itdf6o_ZuxEw_~q2PDp?l;6cVY+#|L?Y2_G#XG<74!KVxm*sD$po=j z482|t;cytHX`)yxVmux{Qq3!OydMsSDNfGk^H?sIs8lLwwOXjx>u9&z$Ye62WjdY4 zU@+j$ZkZn<5{Y0sor>USG(t2Q6@Ds}5*^t(oeq-8q&;?$3oo4)iO1vUcDuq?6b1YJ zUiiD+4uL?xPE%!Pk$C4yT ze21><;yV_L1vE{AVHhlgsB|KL|JW_7$L_*O>_47BbD2s2LA=930$iScxC45_%)J87fW;Q*1g|4U?Dd_qr__Nog*S`iY2k5iL=zix>?%}Kg^qDT9ql*xg$<*x~|zy6W{WDR>vFSEu8_J2kJ|XUJ6!g ze`=_BuH*2m6L$spudbPO>_47BbD2s2LA=930$@$+0wo zD*JBcv>EUS9ygRKd3Wda2c@>dieam-=FL;_T=4qWyWPIaH{GaEvTHdWtvB6XF5>dm zzKR>~zZ=fzopr06Xx?WB>pF literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/23.png b/DOCBOOK/webhelp/template/common/images/callouts/23.png new file mode 100755 index 0000000000000000000000000000000000000000..3909b9cd8fd0720f5672bbdaa4ae37ba82c4b72a GIT binary patch literal 589 zcmV-T0004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004` zNkl@;rh&}uquSANt<%`2sbVuys_h9v7;)!@rdAvv@QY;h-&@>IEX(AqvV>ld& zd!x~S-|vTE7)Yg3==b~ARMTa}i*~zx#L0<70^{)*xm*s_Y892&PDh+wE*F-|r5roTqwd>3gp;|m3{_RJSS&D~ z&xP`PXgumA!OCztoyh0&NG6k5uh$}Dv)Le<&5DUCl?uw`vUtt~_k8ery`qR0uv)FY zt#mLLz~}SHtHFhOG#VAlNT<`7OeP=6ykXufM>rftuh)~Wx@-XVbUJA>#!_KDAsB<%w{t-LO}Uqfd9lPyGN?9A0LSWV&@ObC5W4^UX><4x0#%OmuWM( bB@^EOG7*lLyH^aK00000NkvXXu0mjfdrk4= literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/24.png b/DOCBOOK/webhelp/template/common/images/callouts/24.png new file mode 100755 index 0000000000000000000000000000000000000000..963a9e770cca4a2c7c7d0628a131848672c9bc83 GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$DfM)545_%)JIT=hP=LVk^%oAVP~8MvZ@g~%#R=Z-}gYXd}BmtEHUQf2FPej@wC zcP0`%ebH;heAI+5nDEA2Z;e`e%w>_rp#lpQ&qN`py_WozqO0O(Ne_%0(Y9 z++(O&#b@<6b7KU{@xleS->zfd9JSVrm8trmW$pWr(7n0aZzo8w=}bSpHs8^;&P7De z_v+```+6c=H;*PwT({>m$Gizf2kH+gd{;TAXunS}{lq`{xq5>3Z?7JCqLyB?>y&o- dr~Z`3=0&eE`Pvp`?*_&SgQu&X%Q~loCIDgE)%5@X literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/25.png b/DOCBOOK/webhelp/template/common/images/callouts/25.png new file mode 100755 index 0000000000000000000000000000000000000000..458a91990be481a831161da501d993f1fb4fb9ac GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$>GpJS45_%)J86IRAqSD;`#Tx4HG>?z zj{3?pn^^4hXjhnNU8Nr? z=UeBJ?Y;klV)@Q$`*$BhH>|Y?RMl}(=j*V1DByc&y7*Lw3#x_gbCUMkam=oG;;SL> z#YN^}dEr;?M^g(-^YrJRH<#{ZD~WA?Ub!MfYlh$Qj-yEtdeb{xl` z+{xPWSpOF+ja#pNZPh9z8NO~l6JO`uciUd?s#)?m#GccyA;Y9AZ+myr#*VXTn?sc* zdL&rLbXj&RIby6o>7>f5uU0v?{|O$6T7TVR`Q;+(=MKkBd`qlkuVk4Tx~@E$)EJ`0 zIeg3KG*D!B_%t{6OB{an^LB{Ts5T43Ks literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/26.png b/DOCBOOK/webhelp/template/common/images/callouts/26.png new file mode 100755 index 0000000000000000000000000000000000000000..74b2507390edc1d45140ac991b9e73a26657cbea GIT binary patch literal 596 zcmV-a0;~OrP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00052 zNklNP|PIxdf6<4i1k7aR_vB5gbx<5JZFw znjFOC4euWi5h6rP2pgW#7_NeJ&dnDusp!BD&g0(i-tV6GN%&qq;+i-kWWqsA35}=| zhPhF)h%Sj+!jGTpoluE;{;*j@55x(6FTVYPcp;wbY%d;<*K4&JWLd_1K1Vj2#b`8w z!{IkZQAeB;ehPxLHs zI-O{@+t_Zm!o_4V;U)RVDss78C=?3F=kuS_Ae(NtTfDj1Y>ETSV&Nku2$-$yEy5m2KJ`<O>_47BbD2s2LA=930$sq%Dj45_%)J85I~AqSE6`il)qMV9l4 z9z1wb(L+`yW{F4JnYph50*)+nejy;E#n|50zxUoUKHxt{h#t zqq}y!>Ll*mm(Bd|^xmJ2)wAbJnk%%u#ZBXg;6^2zLu&U9yJ;%L3i2P3tXs$Lq#iR* zMfs9&VblHY^8G4tobk^dhprC2y-7!-t4V?5Lf&@6`R6y@f6rRH{kG$@r|wdIKURF- z_kQ-;Fz)W7OtY3Py#9J&&`OS=%{N`NrXDJ=c(QWpgKiD6?s%c;&nq>idNoZs|NLTx ziBqR{>PMSfN345~Cp*gUu)QeTeNk0aaPHE}nI%@T5^aSM+9F&ho)*nGn|A1QM9nit zv)Qiu@3*geeIsvsdt23BzU!rr&G#f-3=S1te34^WX42j`ZrQC-yq8~^==uF9ztQ*j zPO8z&Cuy54Z6+>xpEKojs?PM&6#_Y$Vh#VVm@ZfM;d}nEb%#RV|BgGn507k?YP-|X jGRI!Eqvelo&L5VVV;QTDz7*I7j2Z?{S3j3^P6004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00050 zNkl3-r5QX1Gix7g9MMP_>Ln0O;f&{gQoumpvz{WyEQUr^DKR~chu@)hU z`2iMQVXvZMI4mwgFh!K>43;92nZ=WfBq0MI?B32}-pq}J?_nqIiEBb8PKha@5EbIX zNR&*XTcSi<;OF=xvP6?F7L(|iILGh7)o+M5LbbBJP$*O>m&=f48Jeacl}ceS7$6u7 zqFSwr@6+iNnM?+~Uav};E?0bPx7#sJPN&nD&*vx<3aHg;7>z~j|aoyQ25~luh%QitJMm--A_-hu`lPZ*2924^F2O#bOcJ zY!>VFT0C+KEaDiC$A=d9-?C7NMx$aF`FtLW#p2*#GMNam@V1}qKDxXB_T_S^I~)#+ z*|sD}aJ$`TwOT@~swxtR1ZJ}tFM?M(T7dt=9k*{(VGpmw6>;{*%B6{?<6SkD{K2&3 gJax^q004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00050 zNklcV7wL%}Lx4=Y&EW5C)+W55&6} zC|Q!Oh7ZJzvj0dqUG8|-YPBvnIF(9aGMS)QETUX4qup*Jolc`rC}6c(A)C!| z0q$(K@gjUa9|nVgm`B%jsH!S_{`Pu3;g3cm#9}dX>O>_47BbD2s2LA=930$3G{Sv45_%)I%%VKOM=9)`Noz?N>Wl% zvt;_6qxv5!EK=NYb>Yzm2UHcMm~PAD?b2oX&*+-Tb!6qjr)-vU^j@$PXJuIBdCY0O z=Wk-?x{ke0!S4Ow%a5pDR4?lk{pe*Qct13;J$sjuTxar@*X=u0WA;rn zwG9{D8^_=G*kM|#&UEh;tGZM?wW3qcT0gDOKjQe5#gXB#!GcUFv)R1ME@u`7tSmkx zcFKD02V-6~<}=SfKf3w7w#QBRo}G%^kx%YhyaZTY?BYBBdDb=7Y@6KdS7o~+)?fFy zEYh{eR2u<_B>$VGB9|$`njxgN@xNAoG!y< literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/30.png b/DOCBOOK/webhelp/template/common/images/callouts/30.png new file mode 100755 index 0000000000000000000000000000000000000000..c4dc404bc1cfeadb3f6e80671196d292e8eda1ed GIT binary patch literal 597 zcmV-b0;>IqP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00053 zNkl+FR z${bd!72EAr==FLHhr=NgHASk;W&@kehFC0yLZKkm6h+zTj=V(d5l_a=Uatq2%O&(| zHiOx07MjQ9aw(7LoY)+VM$j}(toZ$Y?wru=b{o-XRA?S~{uQFD&x66>qEe|?LZOiO zR_^d>wZeEjMlP2_Hk%a}r&1|QCKEQox#^n${u5{H9_bwR;|p;_SpKlwB~khARcZ2T jgUR`KjSMD#lLtQmtF?>&>wXE800000NkvXXu0mjfFy-;> literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/4.png b/DOCBOOK/webhelp/template/common/images/callouts/4.png new file mode 100755 index 0000000000000000000000000000000000000000..1e42fb376bf0da3014c1b71496a3027daf578487 GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$VeoWu45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWk%^r=YnIgE*Vor4#xN?x z@fMyo<2RAke=SI$GU0f98M_# zi3LlSwkn#MPJMWGw)u@Eu?|wa8*Uyubm&mQ>ub7ff`WoMQl&ErZiWR09&F%mSoGLL zV73DHzyJT`gB6vF&KSlpew@{~gKhdr1?LMUjR#oNGP)`bI@mC%wsiJna5hK?aC_OF zF)(NT=&Ml1kfdj0mdf-|>B|-_?0!c)I$z JtaD0e0s!H`mGl4r literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/5.png b/DOCBOOK/webhelp/template/common/images/callouts/5.png new file mode 100755 index 0000000000000000000000000000000000000000..635e7f816277da13e909e96b832ac8bb5e7d50d5 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$arAU?45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWL$+hvz+Zh-b8y_w; zG&=OQgEcd)(Q3W)%?x&S_O{a3*9==)TN5`|8VS5lZ2INN7U>orKmXyQqumxUXA~HY zJXP3U!njdnQ_t+#(uXIj`%5fZyjZfSxmohueEahsetu3*QMFN!=DpC%!_S{?QTa*5 z+0&ELxxC!`@SUB-7pK11kWkz`YnIfU+UMtFH_X4tc;Xm056gk|@%t~dt}}2{7H7S) ztF+tE)s^*;nyhTwRPFFZ+BccG=A3qrVgF>{^X1CQU>@)3dZ{12e@{Q&N@ ze}AouoIH-qV&GsXU}{k14XE0~*;TFZ?9k*VMvWDMRZ*>~pOTii@Ns>W_UQb>=%dK+ Y`mKN0%RTQafg#M`>FVdQ&MBb@0Dv*H*8l(j literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/6.png b/DOCBOOK/webhelp/template/common/images/callouts/6.png new file mode 100755 index 0000000000000000000000000000000000000000..521aedde2c46c55421e87a355b77c7d77238a929 GIT binary patch literal 526 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%eGb45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWij&rZ~=9KvP@ikAGBI4}o%6fQ-=VXbhs;UV~)th5j zH*FN^sGX2%Wo<2~<}>5Khfhzv+m`#!H##%JkU3H+#h9DhL?NJI#R?5(YisMncXk#_ z?yLLDWybO%Bt=zEVY$?T>_4BM^EY>OaXA+i867?~Rr}yMS7s}p8%_S+-rb2`UtLZ3 zc5$)0i$MIZr^U^ zjoh9myJ=Et&xIE|dSpJz$jI&f73kPzVZvfVI+ z*{k2Y@djhZ&JQX(eH7wa=7lA8?vc=(*!<`xTaZ#cLof$}O?6yAW0@5rFcug*UHx3v IIVCg!0PJ|aQUCw| literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/7.png b/DOCBOOK/webhelp/template/common/images/callouts/7.png new file mode 100755 index 0000000000000000000000000000000000000000..0d4b876a8cc1905944042956cc2c8e47b060fe3d GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$;qi2F45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWS+VuTo*!!8G5L6qV+#E-vTdV&hF`XZZx!Ctg+2(K!+*LG zyf}n6sxdGz%wd?3n8)^Lw!<5SBQX_|V$=lmo%~mCaEa@ga>DWD8@3>&dWK*QhNZV1 VXB~Ynd=MB|44$rjF6*2UngBtSpxyug literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/8.png b/DOCBOOK/webhelp/template/common/images/callouts/8.png new file mode 100755 index 0000000000000000000000000000000000000000..50fa94d16db8ef19ab376affc9da83e57521ee03 GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$3GsAs45_%)I?2%caDYgwe=>Wa0DC)+ zpJEBu(uGs_VqJK4q!+Gmc2|7#;K6x;<2tNIT{L!h7jP?;z{$vZO$J~+Srg9=`o3ATW<2sm`|TLKPrTl zTM4C0@wMNcJmZkTkrX4r)9gpqhUhL*y#IZBnwr_Ws=ayJ=WMe6Cs6xw^&$<9CWcKq zi*>xuq!~Y{yjSpT_qF3<$r5arOpaFAv^}<%;kUe3&g@n7?GwjR)Rt*v>2>?+&$9RHs^=a@+U0rJ3Szh4dsk!UJ}os#;LACNKZ~sxR($&5C?i~5 v@A7U^MNazE_CIbMmba_aTK-Hn|Hl-#D=GDt)vx2gKxgoD^>bP0l+XkKdAG}3 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/callouts/9.png b/DOCBOOK/webhelp/template/common/images/callouts/9.png new file mode 100755 index 0000000000000000000000000000000000000000..7190d5a9aaeccb11ce5c500d5eeadfb1299c78e8 GIT binary patch literal 537 zcmV+!0_OdRP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004S zNklHU+e8LN@ zwH$?bBM#-oFbrXu=5n0N<&eo_l66xSH+My|*$kFtfiZ?cp@2?jE#;NB;59 zCh$BDj^iK*0=TY=`Ft)L;VP9dz<+eX-6NdC{rEu~5!-)Q?wWW^dR3VGPBJ-vyg)Mf bmq`2tvJ+juyP*^?00000NkvXXu0mjfx%}Vp literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/header-bg.gif b/DOCBOOK/webhelp/template/common/images/header-bg.gif new file mode 100755 index 0000000000000000000000000000000000000000..f9efa280225828f2ccfc6c051ffcb6d668967dc6 GIT binary patch literal 619 zcmZ?wbhEHb6k$kVxXQrr_wV2D-@pI*_51thH{ZT}d;j6X&tJdZzI*rO%a`B3e}Dh+ z?_@ZZ0GpFe+j^Y-nB4GQky?|**%@Z-z7FI5Wv|Nm#8B~bjy0ybU;M1uU}!1n(@e}RXNnDU7wMLU;R z%)gK^#d&Si`s=-Ar{9+8KG;xUvu?)u7bR8)^LF3QpHSns{yO`QJ$3uP|M=g~*eKi5 z+ScAK)z#h8+v_%A0^{TRT6o;hpwoH;@B=L;=bykzOp=_^*StzNTs-8zPin>KIR z!n=LP&Rx4C_U_w%;6TUW!;;62pE!AP;+eDOoR}_Nx_srzvg_C9-nzwp_ul;n4_F^R zdHU=b_sdtW-@J)?|DNO1=PzHsvi$h@>-TT2fBzYn*+QHrBy4SF*Vl+Su_4h}O+fM5 zEQ^VaN4q7A(|C?eT)d!P!MRJtZPSEJlhx%{#GKre>g{fjXgAw)^RlyPe8tanPJHH> z*)iY#A?Mwur5P7%=6t{_Ev$x8UUy{IJ*D< literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/header-bg.png b/DOCBOOK/webhelp/template/common/images/header-bg.png new file mode 100755 index 0000000000000000000000000000000000000000..75202f9b37af36592e8f5bcb5badd5ac3f71d0d3 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^B0!wN!3HGTRtuZ~QWHE~978H@y*;y#_Yebv%f;Dk zjs`RM4lwB)U|@-!VA^p@iBqE~yUEE!RD!3;L@}q3=OVXb&Br&v8zZefTOJ>-47Kv? z-c>Ydn(tecwS3j;nbmeyp1Z$2QZe1WdUDCGa=)P8H5Q(Ce?L|EI{%<&3ofvqPkr;s d$^Y#CFcq0@`TrwZ))?qE22WQ%mvv4FO#lp^PX7P^ literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/highlight-blue.gif b/DOCBOOK/webhelp/template/common/images/highlight-blue.gif new file mode 100755 index 0000000000000000000000000000000000000000..4fdabde69252ba43e8b658c74a72775caaf304f4 GIT binary patch literal 471 zcmZ?wbhEHb)L_tNI3mh0b>*rn_bz?>^5NvQ+|z#z(?15yRD zlY#Yrf@+_NCr7*Rnu7}!QgzNx-55}@F4$S|f`i~ggBz0NjqwI*2{Q9{vnE;=IjrB+ zDCD7$u;0?zfI%<#i1GTJdsHRM1Uh5*=AKsEeQ?SYjaMqdjg0|KjY4kRs^-=Wtu3wX zZqXd>y-od16RmlavwB*EXSDg-v-nSI_Fpi|n$>jqfB1PxT?^`t?fQfg*PWROT z?4=7Bj-NPj$bb8e1?SIiu}ay0;o4&VD^suExnz0EZN;6_?hnqjm6bhlW2}3)ao5bl z&nzEpx@W<5 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/highlight-yellow.gif b/DOCBOOK/webhelp/template/common/images/highlight-yellow.gif new file mode 100755 index 0000000000000000000000000000000000000000..3e847e7e01623b08e9a7e7d823fcb97104e76194 GIT binary patch literal 331 zcmV-R0kr-{Nk%w1VJrYF0HOc@`{bSf|Nr^cZTH48_|8oJ^wtd=`2yXqN@dAW)FA{*9 z0^lo>f-$0TSwVV~Os3NTjY>HMo^?sUEofV-pivzGA!zUjgNA5FQ#EN!ZcP>Pwa!Lg z*&TUsLwr0%X>V dfG2i6;P)aBqN^Dbjd|Rq0Yr!k5L_hy06YHIk5T{t literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/loading.gif b/DOCBOOK/webhelp/template/common/images/loading.gif new file mode 100755 index 0000000000000000000000000000000000000000..085ccaecaf5fa5c34bc14cd2c2ed5cbbd8e25dcb GIT binary patch literal 1553 zcma)+TTl~c6vwlh>nb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/logo.png b/DOCBOOK/webhelp/template/common/images/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..b111258c0ca80f948528d9fe96d1288b257c5a1d GIT binary patch literal 35061 zcmXt92RN5)yjCbPTSm5!y|PDSZ<3Y0_lWHAWh6U$6Os_JH`!#9tn8h=H|OV^>wMSM zr%U?xzR&wS_wQbBh>DUlCK?GE0s;c2tc-*jeC>u`|Dim9|0}(s%Y-jT7GjEG2neN7 z=vPL_2ndu2vJztI?rB@;ZfWXcGq-bY|CA<^w;S2aj5dDw<7I}d69 z!+s|-<#RfBsIYC*)Z_x7Xu!n3=OYpMo`VBfKw?^D;4_Fve+mKmO#x64qDK z(L7&%k%D43@z>(^5yBPzU|AQXgX^))>8U@s=Mqz4}f*`IPq zZTk1cL~Im`^M$S+qLqE!#f6_j27iAzLbv1c&-b&MiOu_gGn=;eRZv2|ZTdDJ`F+js zdc=v#iB{!T*K$5^xhuLH?ahL~C`Rl#GqRaM%Ig%alz{xga5|4v`*{D~9HKq~vj5Jk z;EoTKjcEcoGK&Ati?K~lk*npLX$kE(gx_dmpYzE57PFF;1MeMZozCiP-WD79R0saX z`b_v+)os?d>lWh|dH8<_WqlW?e+0&D_1tED3NpqSRnHy-o3%+tv7_B*Fik$4^=w`} z)O&No`AI5AMY(3T>C%3%k0kK^JtX(bF@l3mz3Jj7GI-e|rZYaL=~$2Y2ObccikTnQ z4ca<1-`+Ih#*n>WvivaTJsNQumBNlDd(vEOv!tQnySIb;6O;14n+vAIrW7t8Tz^VR z6tu`4!M@&-=8GihlLSNtZNpK(7*5if5bQWilS#7RKc_%F|?sE z3?XVxzDAmAriUogi&ShSDG|ryW8?cv<#P-qb8hbH_b`R2QAVuC-qswgvdD>L zp<~EwD{2}v&(fcp%EnyXN@Tihd`EVWw4oV2meZ37{F8RLNHa(%6T^V{dC)5HYgF=4 zfmjh219C1;Tb%d8o06tUu07p2+Wg#n)hEdb@7zAB*&qZGy<860o37G)^krW*M%_Sf zCE~f1E;&*7hraIL1{A_^6n&ETPd9!R&x}wyk2Kzh6=^8T5Zx%fmJMRKNL9vtDmztg z7Hs>6h%levp9-?Sv5LztyLV&pBALsWBMr`@goPXuekU(PF_b9|RHW-A1#n13wWmpN zj5CNWN&DB^x4HzUrUM2gW#f2?_0~r6D{Aj~V&o5pxbggXjzrqUbp8cPqxgvAdEGFg z+0(A4`s1TxH0NH^b1x_wE9FL>jV(PK`O-74KFR7}p(N3us)p0Y>ExFzHC z4!Y${o1IL>4rhLTH6@o?GaRZh-enAOVvA`?c~_lbC9Z5qytf_o4mFM6va0l-Bt1d= zplv6{K0IM#c&;P5Yzx#4Ica&pDaGifulm}K92UF5pyU*}zidZ61BpZBj+Ub=2?;N`{^JoON=-J zp}faWqH+WlwDBiIGgT34QcUgZ@*?KcFzX ze@tp=jE#eY{C2(?ufSPtIwWS@fh*{K5Odlml}F1o^Cvaf_-NeL$34dhPet|0!Wk~G zkqFQ__D`3F@pYSJj1iB{TZEcm;MgW}Iuo{QExs{o7ZDpB;16_Qx#f zH6-@@G%+wR#6&!38D4xMKpg#NgN6uKG;Arfvh;pOweb13v6PY?aTHdh`@dejX3%oW zbu17_PfHXpy7_fU?}xAA6O_P~r<$=>h+$Cd_jy}gZY&>F426(18}r;cozG|<^*-a+ zcxAuSMLeV3o?FMW3j+iffwug&d!SqwnAHUc3#|jaU;vIY9h+}D*jQ&!viSo%d z2^TT<(ih3hCG941;uC4%G+!;(FV#1nzLY=nC7O_I-hFe+>sYrgqB;Cb( zYFMkcJ#)1bq?xhxPEh2&iUN_K(QH_+!Nq0xq4_#uYrerA`VA8$3Zk?P$5|?~ynFjk zer)Vn-_7mn#|BOAPL#q2sPccWPv-^;OPVg?y_+9m=J8Ra@p#YWp3U7ue0XT!xVoR- zsb^}6L=fMBau)R|hV~$eKGVi)FFLry*;Ci7;Js}mMNs5v=IF+k`ufWXwQF?WmS#MB zG-SuLhj>WHyfe;Tf8(@AMYT)4I|?Wh*Ahjp{SEf!9uPOro}AIDGT?{z^ccNW?Jtc-I{@x{EnnotWH%PSPL+<#48JARJSAM8dBsuK*zaPX+S z$v7C}Lp2S2js-QRl>fRV8v7Vr;R|Na$}=cYOmF1Hj@U2SjLq<6j5S<*UN_A>t)<>&WpQ4YIz$x8M4OnCoN(~WVX{jper zRe{YOd7q%SM6MKRw&ps4U4m;EMt~o`LYm0O?2nBlQ6j+sCS8$6)zelsb{#8ksbq0i z2ng0)1ZY)hMMTJBdn6PTFi=rZ1A~KOGcs?CwWy{i@} zI#_hAjVrFPD*qbs$t;AcG|atG-&9*FhrhD(M8f-GBQGv7(RnT1EyGp77j1&f*JM33 z6s@43fG;gk+D-HEwGzEZX4LGg{vsakxBTMHrTtGyNiv#lymg+0)Khc{&8-HQTP3;46PuTaZ<=0NoTSg3`#m&s!0_L{2Is;0l~vKd z-ZT7bN|=K2s4W{m|BV$sV`E#(3MRkkbb)`+ZPp{WqN0LJyerwiZDIcBd&Ic7I2AoT z#i%hkStkyiBEkr%0NV5Ij3WUu@~GfH34|AEN(0Fv=~%N~Sd}^v!(*3R4;=$sRc=o6Z>_1Td>-l-leY}j*QLdKi`w6 zJUdNP7PuW>i{fiR*{gW$P(AIjT{&KJ{O3)`$B%qwDX<{+jmH|Zez!h5wQCupN^Kh- zI*g5a{}gRaG^Oj+yW$X#MNF?yd$pqoOid4OxJ=mcP*c+kTXIWCOPf^cs1}Y*czSJY z?5tY)iU_1fuCH5G=&&3gAA>yjA{#rj;evvOyiJIn`}Aphd%MbO?VdAKyiaDyR-<2| zQ&W5QjM@g0DBIT#ODzU7{ww||%5!mXvHtJh;xDF>t4_DV!a^%cOG*)ujD@z~OxLL@ zyXnrG>&x2Pn@i=F_FdD;7VM70l3~S+zN`6b653_okQVZy3t+wXjz*QsZ70i0gqRo^ z7h~jEv%Y`F5X1f$7IrCXc|qk^KVv)BlpfEdx%jqry;LV8H1cb4RYG5%!pZJ*@aP6D zD{JJ*i7Q;o$I#I1>gvRnfQL(td_ShQ6;gR34i4VN#Kip2DVo@JHP!AkBBP%Co+!~0gKqPuI9deuTt+@DWWo0}p zJ}xdUd}<(4r2kwXJmrJK!`goZg?FOI9iE30lU}{sZl`&9sr&xo=%-YSvcS1UB%~n! zdh#22^^^5s#ZA$Py;?@Y-iRkZxJ6zKS#mcV4hV*m2_}TGH4%wn@11*p*DCcF+^Inf zZWDupHYjq*oT%qInM|`RZFqjLa`)p}c0AOrZB{lmZ3~X<=381H^c?Tm6&3M4d6b=< z!|%P0J^EGgCH}Rmh-YI)V7mk}Av%q8ME18IpDK=AbW&1@1$~8NLqaUMN#NGa%*<-^ zSmCZdnGpx6$%>2Lf6z!?q#V0cla;k-95c5}5RTJCXZ zZp%aZ*ub0PO_i-!&M>>>5G9>*hJu9!JzLWmb-8(eHawPqhgc)Of4Ao*>i=>c6z=Md zrkQN^6D?^t_~llz9+Db}K~j{0&Q?zpr1o6y^($?Q&8>Apnrs?%1Op4pD-)*<0?oal zmsn1R{k%Ejo5`GJXnq%?nOe1PpJp?}z@CSbD`jrJN-W5ErP5v27xPs9+xPEZN=l+W z?m5!RQa^i!n%En(eyFOg9U@iqwWug!Z_n|oQo5Xr0>*uIrxDuL)>fI1QS<@=DcI?e z@OQ$cXi6Gy1o-*+YlO*L`^>$wWlUb-MdRSaB_xdep6H&ZdT9xVNPsbPb=BP1*jS}- z47Mq)YWw#7kAE|6`QN{r{_c+M>+XLlB61@=?)Ac9baeEksVS{LrHY0|XB(DiUo?%h zBj1yT^VQV9Z+lrPs;VB$rSdz|Ddoj(mNaL;?h2@$^$g>k^Nzjy+7^tpwC@f_f9r2; z?B#BA=Hj9;onnfFlF}o#<||J45vIz@O7DXn`t@Va27NZVSk(W%ePb{-F{wQok*{4z zcyqQUdfOw<)+k|R^-QNI;qPBvsR)u|A8QY^mNOlNx~He-?sBhgPMgGcHew-W)t-0Wu^WYH>NO~KNMTLbeeGkEtRZwXEHa==o z&E?uhG^i=7jjn=i z<>feg6#H>oGRx;qDF)}fJE6UIM`t`$Rabv>7!~})jEsVU zKF!Zz3X@|A3k$;{si~=T|N3?RDtr5Np@!4(m?j=BuDGHiW(;kXI%9ru@oIJ$tMTTa zBBBT>m}MNP{oLH#jw|t+#yqJWTcuqeqoU}UnZqk>#yK5kg*wBD@zN;axFjji>9RhS z%f-!AleM#Bd93eFRj64)_w;Gd@87?7wR`cdog$f>U(3ZSqq^H_OdIvEM5de;9!h1@ zcsl&8iAH?*2;s9jqsLy$!*iY2m*WI1D6K!gKZNJrm&_G>yg5EPKHgQo+tfRfD<6QH zJScjb)}P878ykBl%;a%F)ypZ3j;7V@D-2L$`BMDHq-|dkKVG9!uv`%xi*Pz%i@3PB zO1`>;lq5_Fc~c1_6RD`xSY;6-fFrFUjoGX5W+YhSj~enYNYnN7zT|yXGcZtgH>I_X z_>kQyj**qs-rfO=`SYac%^d+FdLFv9(57AI@{BA!9fMc^KUXb;5=BB%a(H-B)<=&l zo`3+BWWKD+yhhaY%z=t?nGTfgVXoQT|iLq4ipf~ z%ah-2{-Hv-pCc7vyf%>jO`TEg)higNTQl{EKYsj}_exJsr=_Roa^EvVC@U|&*W{E| ztXH1^$aepx$MZ5VbpH{q@Q8 z`Sje)gEJ45#NOjdXD7EK?@t*opT1_XDP&(|`sI9IY6-p;%mzgsRmWubjV zpEb8y;Wmb6OiON>`XMcbp9>4ae*9p6J0O5wJsmM?Xn3&P^D$e-OcJ?jRzD>*C5g`p zR}vYyy|e3;p0=!;8!urPvb>iddG(t;ccHSuHJazo2_mH00E~!4y!psW6650Vaq)1m zk?z4$VCa>QkQ%WmrwXISd;4~x>K#+SLrif8_9639M_SR$D2)<2A)&N{1VSNlES}T| zkHgh06~^K0F8XiL4%-=-{5+FS3GJ$ZdkVuQw9*Kxn(D|#q}@5x|qugP$>_6aJYA4>%VDwQZgPUmrG5}88Z+W8C$iRl0t&;>({R{(`}u_#YF&O406uEi6kP? zlI-yu)%+jFCor?}i%PnNr{$fTI6MRHWe!T8>@8d^tt5J!rn~ujzj*tWb7f@(4tjCj zBHHZjJmOnAg|o@2eU}$mDvnDLyctKS451a3mC;E_?o+?^J%ogAx|asW-aT(b{#>`k z8#Y(7ee!0ILe#2Zq3dHQV3M7koqOZ#?saj$`DM#WhAa>kZxIUEzj5*L!_(99a4-Pp zk2n8BCq#=mo6wXxIl(sHauu}N*!b?gglRsQ+%})}GWu!A`cK9c7l92o0quHM7P;J* zj~`J|Qd5E2XB8D;{@2;rX?X70NS-$uqLy#^>vujJyy*0FMQa_B{r&xlH_SvYUs~DO z+&u%!cLF@#7tb&;F-qEp6wU*d+z02K5xTw|1mUEj8K;^>)I!w$DgUgGJcaM5QeJ&( z{cdgWVm5U_VFB>QmK-biB>j>^Ab>6cWFP{>u-DzlBmn0+Iy#d2&8McPqs@pL z^`mHI;o*K&NESCUdwRG2W@f7D0KrlZ;OF`>MKdu;d4Bj@x{`bEi2;t4YB8huztGSi z>`h=XhUdGI2|CbNwx)l7ObmSAGo2&CV;|%Ar{cL{b@HtkkiuH}h z8KPS;LS~FTYgk^?w=z8i8ih}(sNS#iCO-5Cr4U#sC@gFi9#;OZ`x}G!%a_r#AvHC8 zt!-_nn3$4}KP`R~p#XXH;ll#~0f9Zw#xyP;0sHFIgAuh1-&JCApCeUZLf?5vyGTfq z_-zP5elXYW2*7st2*w(n8I!E<5SNujg+E1D-`y3>-+n+B)3)%rEZhHAC>ju|XZiW2 zrl#1CBe}S6Gv>zF0L?il3;enqt^h7@>3_z zLxj~X_$9a6m)ut4w8Xc2b(rjSbKWPsD^yliM#O6m2ppXjBMwYjApH?gt)suXu-dR| zbUk~X+Rjx)2z#B(A9^~~>$XcsJD)7~SXS!j`uHe_T-pk;K2~OZ(8Cyy|gk(#A##m%rpQv`AKt@Ie%?WTsB=<<3kz-D z7i>~ec?So!>KRv3{ixuopSxg$nBJVPId312mpgYoLPJNNthd0*lA-|?Pe1%Dlp6Su z$<^6DkWO}(doVp|Mm?fZ&VhTuAZLW69JcxA$at6tGw6|c7C=L zl?)mLmIVH(1=o6~`We_#@E-~~`b&ICPcN@Kc&@5SfK>tfc*eqF))h(Cm&PBPolOl} z6F$+!#RaL~695Dx_}y_QB@GkL`kbGST0MPD);XHr*~q^4n6uA{SNJw+Ei<|KOuW(2 zfA;$FqlYrGcEZa0qcY}l`xyaykSwu8!}l;qdBW*4y<^~mei|~K$d=dKEc%TZNfe9E@5cK9Cb56Nbq5iNoV9hq?bYlbDS2luouWUYPR7RF zU?KIgHXe~qPc1mY21T4tEC@OaXyQ*FphPShv%WUA4GU7uk-Bp^U|+zrD$)qkDFR0J zq;M>B()KGz*QzQWPA;xz%*?c)9)^ZgKvz5ncn?Mid^f+S=qWX|Kd4wad3jkGnV$=e z*koji0A-Vtlfa2#%lc1me}&0c(=Cv$q(B#|qN5{cZce9Dbn?a1=XGB8-v4(2UiaCc zT92CfO~@g*I!yh;T3FjVA>{uF0S?W99P{Y4}r~Gu^jlFJpz)OSy`yHM( zcx$i^L@w58KxV=kZVg)7A1s%dxx9Oa^O!)Y>H@6lHW!NnW3FGV8ui0uiaM3Kn`^AY{^ z>(}3&lc>E?!$x`!Oc8vR)gSDxI}`8Kita>NQc_Zh-9xYo`R8M^)ySe2ziAYLuY`7E z&P@^!Y6y;#gand#IdMP>c10u#DykSZ5;qAZ4$QC|^>n3R@vIj)!;~oZhlht@CuL`6 zvlC&!Z-9rwZ@_%b8MgEnlz?$Z67e8iNgA9RGzd(@Ifm%OU0jZ2U9jd0Lt90Cp3$;a zR9Bo;*-vO>-QSbbPpll&a72@wvl5e(M0We@^bnLcvtHdD9zIyP$z~XtogG-q^cy%> z>8;%?u1{h&y1&#JAxKl_!i1fq^z?)p0oFo`nGj)Q zWCXCX;|U?5?h06QT^Yh&-2(%wT0X*Nxw)oML@nXYgP4Dqn3*xO6DChP9{(O2LuN6B z^!FJvgJFVPM@9atWS)174;nLIQ>rr(IIs0DvH9I_CF=R|n{-B+T~Ad$5%Ep}*Akq3 zmZG9S%gXl7c1l@Xw&o)cZ^YeYTWb-ap)#_vR1$?NFjHw6IS=NhJTK^568|jvOuM=# zT5$MW*ksIIB?^C0Vf|^=wqsg&29ZrxvY9bzYu#2(VJp04Ry*8Sq{t7_mfL%*2Ey ziw^JW3tu4T_=JSGpm7;Om)BM}%%-^ieAnxJt*L)rbk*(0sT5ara(cW!)QDx5Z&~bt z@WScXY+R_(Xz2qc?~HGo)&d6E=IPE%FCv!EUJ-5(EH%03I@QVUoS)SC8QtB%xILW@ zfE!sINRuBB%O>2(iqg{P z$jC>bp`kEx=>!~+%BQ!%g#@1(BKmt`KWC?VuYkZD?$lqS{XDrFg_gFqrnfiO4M&S% zTYsCJ#JSh8=4p21g73b6{-k`;FPsjn{&IjY z0T84{w-`czajM&HoD(v>|AqR^@8uKaUc7^%r%z%BL{h=+K(f_f(o0VV|3U&{ z6{>py!!jVO#`XP#EtHd6dvDJkLeK>M-(P#)-69=HKnmy8{x+j(JPL}a@fB(wffR64 z@vJ#CF>h}nsaRAm2ew=HeMwqb4Mh+X?nhX5fNbRcrmIsJxqi--f$6f&+}&K4gt%PPQ0wR%{TS{28rZXGYW7eYyMtM%?;+z{9^^P8%0FyXgIN9`bi@Y<;j2F|`4 zKE#0l`qD@hrx*NhpNEgwZOXA{%ZJpvW<_KodY*B8Yvh$;}OdaSK+r*U46kDUUO)C`F}I+Yr@D24;rO`EY7Z zT<`Wa=ri_I1t6-i!p0IR0$hfLx$2DPU{+1kd+|mnDynO|=HO-uV~-8_@`d(h?Rc`H%<}5$$jppl=4j7Cz{Aq%ZQobPO(M%b9~oCqqYhjC5Paedp5W1Kd;RHP6kA94 z{cs!{p@XYeOBwE-lLQ6A)29>Ck4VhPd`{LO;qFQ1GiL$gzWMfg_s+oI7|r9d`NRAG zlO#|nug$*tm4U&aMW)YP?h^uD?37K3@HRI>&0l*oG&BZgM)5e>&dhg&(F+Sim=Elm zw|PF8n+*@o4&1r-Acu0w3PM3Qo@~!4JHNsMBvs(sWRCNHVQtMQkj~2BgDZ&x{*zqp zUAh437_uu+kr1!K-~rxTQCY$%{h@;aCwuJ-3CB!Yt%O2FhB7dw~_;Gyhc_7nv8 zJu%9sED(cm_PKR^Tq`BXlU)4Y%9HzNU1ni^eJQ*HCxmH<9I)<`nJ&QDn{QL(VP z){e8)^UvJ-Qw#+%2Ol3fA~ye>TZ3a+h=bHJ_)S_G1Wu@0KCLiK07MaIXLr_SK3ZU_ zIs<-SP>|C?iLa!VCBuW9=#dy)G<3A9P`UbaSY)s~x=2VNbE9Kq3|)@H2jK5oFEzP~ zGM!Ai4!Ya00EmXi#)2BF69KYDMn+Yi#RJ+1*;gCP;XRhNkw?z~D|mf4r@gb2bJeT1 z=*B|qQHtI(m0#WVvT=X6BM5sJ3yZbB4`&cd8Ubf(zTS2K0~lQG`F(eA9OLEgL~){l zFF%vU_d7)>TIUbP$F-hcN9CslDUTz={KKMQOBn?PT56%R-*NaL5hi{ZA%Z(D<-qoj0V88~cQ>V5Cx*Vqxfw{BmXgQJp9{)jU{zphfWUAU z%J@9eyY2e$`O3WJXOK>);JiC)5p{Dus!xZo5f~YG#P0W3k72Zds+`$<$l4oD&KsGO zL<9(wUr->PGYk)uLWtAM)I1v1mz^$aWXjE&x@+=4Pk9VhzmR-KL1h)E< zn&z#^3@nTez`ymUTVSAF8+qyG9eB>rWz`#p8<)Z^ljHGO390kn0i+&MsQ{`H-< z1K<00S@3P(ou~((O6-;V))P3o(GE+s0Z&b=O&lbkyE~s!9-fUd77RI=m_Ufd+1R2$ zlo)X)TUuKiFLy@=Cif$NdR5WTmW2ogLIv=ykOg@m_W)(V<9EXk>7Mb_(Z-Qrx^G+i zqA^I6whvf&*$rtQE<9l@g4^}&xAiA8xzNy|4}p}S)KUTWs(U3pJosVOtb{dsfvvB~ zPWQ(TFLG;UxBjAR?lz|&|HgpvKbe=yKQ`@~7Kqb#@}kKxEw`SNU`pleS4f~RvoM)# z#5}#@Pb4J2V8ez$665xV+1SMRTS0N>hKq5j)|GT|S=l^-GepwUb@4|>E)aVH_fU(8 z-FI*7j%k07_;4NK^#swYdnM!Y9@@mi92{SAa~B|v-kRMWf7#yk3X(#GP#_rda#$D> zr7#BkztSW2dHMN?5{3o+uHeqltqRxXvUotBAXY+un&y0FdhPk)5rvY?f7&JAzI`q! zfu@0?voqK8%1W>oR{K)B0$T#^2v&Ak%%cB&iA=Vd^5?v~cyJF;Ik^7QouBWb#e8&p z3??&CMXsEZ;>uxvYLD<*nqRLWNgf`(J$m+FugR&%k(1M_m2HFqQC+{yUfvnc(fEMi zN1SOJHte9&-C@?>srZeJ4KaMl-`4Ng!+ZOA=M==nTTch7>+4g4&>zRd#^Q0C$}1}7 z<}{|;rSjkq6G%ej;B;@WIRefp*huORU85#y_?r3D^V{t!??^O=u7M_zY!hP@#`r*K z36FrX1?R(%iuvm5!RGm)2RJCD_LJi3F5Ga_U|YPW1VFNMuxWcj zDD~hOw% zkmC?d);2aCU>&;eHlCiX=R^?+dmgzBXeOAEdo7}V7Z&E`eI6a1+%p+V zAIoovolwOCNc{{m$>L3s1}OAes9VT_0QJP!nQP93h50;Yz2PhXUh|i{Jd^6_Qk^33 zc0Q};clY<3UDIc>Q_(+sX~{sGpU+JWvx4enl8BE$H|HhRlb<7hKD60)P0kHI_By4O z#U+WLvn0<C+2Mb2>P`a8QAQL6QtP31pzZ! z6#t9Kb3jJo6mJ;ZIRZ`HmQs^0J|O2wTo#W49$>cO^HpnVYLPg0!~Pjk=`#;ln_Qub2o9u{)`OIDoL6>rSRUn_vfemuub{7 z5C7COkS2w}e#w$?Jn)>9@k_Of;ObR1-}HX3b>8@)#g~$)tfz>%M5nNK`EFvny`!Do z;}^bhP7WaF$Lw{t11qbn+}h-d3T`^36bUddpxp#s0Z<>f0>H!UrmTB8!yjK2KINqL zUv8K1wB<2ItP)qf7hR#2-@bW#;X$tr=mTVB|J)m9KSaVWPd?(@8CacP>Ha*t&j(@5 zo$X;=nLWAz1{2kD7R;~?aT%G9bN6fWf@4P1it7&K3T$kiF)$0!7%ATBQK6t^oMl?9 zCAYO6ggwH4ULYa6*rzYGnMeX#XKx{x;w_k58JztFHwTY-?EiK{?ZF)y66d3tH%I9Q z6o8S`+S=VaD4nbFDI-JatsI&W4vs>G z5ZEOD^_%BFy+SPDp-K7VkBVv&^!C)ykZ_DuE^a1tZHTWvex6$qFB!$bBMr+bi2|v~ zOenvngIc6PT7kvH$|{vNn#D`>Ng{gEdCjtb$5RrjT*L;P+_pNw!f31-FuF|7#UHxQgQZn zKfd~^fSMAJB>r+3nbv#k`ExLo0Byvay?|8ruE5|%zMha&g&l{BLm&xx-K#vMT(CSM z2b5O((&aTZ9|H#fpXaU}B4J94azCOglEZS(5Mr{kZ3jPjRasOM>8Q?k{-!&kcm`9H zNZ6+Lf^>qcw>y=|`Rei zztusN4#KM@1V;>{T;_ex+B(vdz$hlXx)_%!QviYlaq8AoW2z4*QZT*z#l>_y1%e+v zp@ax8Fc9exIo}HnR~|XB&vP4JfIbDx%(yq`!%^J$_m7&6?t@801biC6uM^*szzE`{ z>c0`8;wVXw<`)=pO9zQV3nyQl5yoA2cOTf`oFHw$h}a9ER>i@=AQ4Kcs}q1@8y%OX z@cK0YnSpmph4TQF0MA__2sOC%Xqs>$4u4p$?40ZY%QrWF&q9AmB#0s8ioZaX(JLXdqVWJ}F$+OCFXSH)0k`L5q6@QwE@9~z(3G&Fb31MuHW z2EZ_OaaGe*4;Mo~!_=Apt0K(CLN!Qc$(< zvY?mBiH22uz{>M)V*>yjX}ej7TzM$l9RZ@zqmz?6!!Ki|p5J?q(y#7Re@ak*&vlFF zPX;+O9EE3QVA8_uxu$wKJ@w=Cgf@ZYO(%4GnxfBlc6L_T{Lazwnk?{t`Xv%5<&ARqZfSXE zcTeKckIW8>sTxs%@}Xj3i6|RUJHVnissE{=iT9WyN*Vv$_||tyM@I&&J!$OQn8L4~ ztekQ#cYOS(A?)SJ;O&4_2s&3L#-+fqSspX zZ5kj>QaLzL<9CUD^ZB*|9KVX{>cc{Gw&mD&n>AZyyTAR7W?U4TX5-kWY?t(f*SLIjBVZ^3LcC` zjj+*$7kK1K&CkcLr;0eXE!}e(TMIn*YfLx`sgAV3Z9a2Z_HIE3r73w17iP1SX{xlnO3Sck|}EaZF_wHPHzT%cqHX zY>Beoo2d7pa&-RNgyuxP(Pfn#(4n7$4j3|%|IMq)7miVf8V}uvyotkNM|aksG8A;i zr<8=wH%ywi6py80NdSZH;15(B@T=^~Tx3|Ck6X5;pU3UHu2@>KZylD-kRV=)<5e$- z`9y{gnpDHkXGDjj)bc$|O4sLj>^rVmCcR8u8bqmxcTH_$UdVPDguZwi;tHFfP~}(7i3KsNw`Z29YZ?mxx7O znbYspm)@$Ut=oU+CDL-g35v2JNYO%w$9H$7W7~i7GmYPw&-2KV{kN%`o7<4R^;Ct` zO&HUy{1rCDBwY6i>x=B{fD%B+2>x;)a&|c1<>htg?Sjhznr0U_3w) z``p-gZ9^~T<0A~Vaa!6Fb@0$(ElC98^rovX-;o6c!4L;hwWO(ka{B7Eb_mEeE^LEd z>vAA!`>%NV2hoDWTkNpr$ewMU*|u4v-bx>vCAM*eyswdg`1~~0{3`J!HqwVj^`~}pyZA3#rAULKIYTjq z@6XUr$g3^OwTQSpx#3LT<+U^Qu32N&0k|b#l9heH%&DtO8Hjw;++uFc_zn{jJk;NL zAK8vG{bR>X@4;IxSRyxjHIwD$xAK*5&wm9(MvC? z6_fyA6s-2Ac0mdZRa{Zo^IKL3VyK>RL{n*N6CHV8=&^zTiGTf?`}y->GL%*oz1KnD zpTHP_A_I~b-?KWjGY?!yUmP49_IRNw!z^2K-+T|)UBVxY5iYKcf9r4@hi7KCn=y{& z#elX2fKc8%j!8?Bfi4FrkFDXKzT`RFr`MtnTNuL7h+iA63^z~S+D}jX{yT9x66&XW zO|vtE+6skh2rmB=y$Ob97B6oiw1xTByJm)lezpdoUz7XZYuIZ=*Y)1-Xn-=oEn%sL zA0tLmXgl)#MypDlM{8^4&;d!gPY!DC34+*9$g)O8{0G-wCV*F(y}q?2fgSj{q$ea6 z@yf@@%3o9EH4hIV$a*`)e%VuB=#V&R6SoCFGTTYx*Rrd+ z4MkmSKAgOjO)zb~ESg#SRK4@}!d|)hSo$$UGeCtpvTUvT^5LpPB=6@ zP1-QJ(B5 z>+@pZ@1S5|(Q_JB6F^)BZOfrsvL;5`XKYM|yVR_YzYeMV`}dFNxhFSN=31}|z&(r3 zk-jq~q2+*fUz7WBe8R}=r0f=NAj5U@qjUUBGi~vskeK^FS1bQ~`TE5)NkPR5z~Q%p_t0UVcd?A;jv1rQKZvxR}q2L0yS~B@K9vGvJ|*U2Lr`5 zIAEZd^+wcdjf~PlyZCzUXx5_Yv}uxiMDXbg@&B;zGmI#|IC~+vZzwHHf%cHefBPfy zy?X@MXDB1GGLyERlcruJ<$~p-Ue`BC$%)Kjp|U^U7B{2R3tkQkTs90k&z-)WovMm} zw?IBzTzD=|&Zo*Sf9SE5DjehF6k>Ki_k_+wK>+|YIPj1vf_()osK55rKiFsU2bh_d z+N{f|5_^bw>f@V zR@sYmQ?q!+d-x(ELM>mbK-lDjnAFex7Hc=YTiG|}21@*RQC)X!GH7)RL!g|IL4LPV z%p=Pcxttt4SdLY`YZ4tZf}+`S zU3&VKwf$Yee}soE z)!CcftG&AcdRE!A{?jS?`s4F|>Wm%luP>89`2xF{bYA`8eCfKH<|NfgkgkBC&5gV8 zy?kJC(C>=Id2K-QvP6NGKeCTBO47=~!HX$DuKnH@x1!4gg0p%Jx0DsP8iJUQ9WjYX#ThsN4GTgtGmuc@>Py0@` zla7=*J%KHTFPI5m>Ami_@wu!4ps*5l4VR|yiMxgJo!`{pT7Wn$uJc;s9HSBw?O^lX zLGN6`YJxOly2wlh=B_-IEM08F$&^i=Uau2lvGnM~`0|gLS3q#9~<(kFI$rc$# zCtH)>bxQpu57%O4=x&c6qfn#C%b)E#_-dElVPNnkUek0z zUB&@kk=b!mWR;`E1-4RLzf?~7ooW6)JTmg_+-Xx+eC7rIU1P4G>;RGC z<(J8r;9UAO=ZF7fYTeZ$kN{YkNqp_%;F_1U~+;VVg6@bd# zGcza2m_fDm@IWf_F4`Yf#qbn9T%df6J={UyU31)kVW)I`5$MjSWg&WN!Ae+(AQzvc5h*H^Xtk6lY}fhj2| z-yAGI!)qJP0|N4AweCWZYFU)&a#YbWu+X%)A?zYNA6P^UP&CFiTms8jOfv^h9ab!3 z2y>kxl@E>un-2Oi5`5m|qScCfoct#fInj8X zZr$TVt>zC)S7!`@jCW}tJE|*4kCreDb-y!8bH~mgX71kBR8#Zc$0w6iB81A|-SgR+DVKJS`FHFIO~<#jPa>pf6ngPO0za|F z=cM(TaxU)IP?iW^Ld-Iy+0;5>*2@`dQ=0}{L1HrS?+XT6=FpZFG4uWuNq9-Z%WYRG zSIz0?g5m$^R_K%E15MrY0p%-(A~>yE1yGj4AS;ry;&5^$~H>Ln9D zsT;hXe`nJr6(CH0yP39KzY~#{Za4NV9|%CWEci`c{=>AK%uA+@U@@>+s>ece54{j%f2E}fy)b2X zDqJo5Q*AEYVdnL74=sO8qo$3ts6*E3lADvQ-mIihU%cggnS4yA1C4L)?Z19e1L=)$ ztcZ?_Ljv>JqqO)D(EJ`Tva+rs#iLLI&a_*1<|%O`Jb&G$r>6&h(dm^R9AoZ*2>Tjb z0_vpR;q4>X_2?NGBHB$xW5bplNdT$Sj;*e)F1H?MHazvei8Js0_||w)oVlF+akDWl z@Na%kZ^Lz5yxh`CW+T#d+o8=+!8}rCm)!7JNK~fJ`Sj^lqFQ(0*6DEsCy9?mxwiX|Dz0_?~A&N-zT= zT!t2*Dr^xXlr#J#-hw4j@vb`}eaY3G|F*lewW2oluoYpQ{=fj>&{6H8M`P-6w$1SK z4-N#Ke&d4C32=HxFiK|cxeJo7nio=s;ZVsIYZ9QN#`ms44GcIa8MdljpRq}~ph@3f zd~l#1KYmb(f{=+G+jQn{D%*)^y*Wz}5glwen7d-`FWmL6sjPIoxjF%~W20&JWB}X) z5|>LjRI@0aVExKb^<;TD3(Ia=0~zD}{A6>6i& zmvj?OVsGTbtCqK10;2Zd&zJuDOEmZm{ZuiXCMiPlq7QLmapJ1HeEn29QM!GHs8HSN zuS_2iQ3^Q)FJ7+;d>P-0t`8p$S1TmU9}(L64g=1TBdF`ZU#DEB4~r0J24Uxi-U9S7 zcM4XWzKWlpIM`gfyA@!hP$^K~`_==o1uH8p7jZJQqswy(#l{1J=f9a>F+;JX{K%nq zjJPhoeuYqxP9@BxS&lKIt8prupuGhalIx3b50_QlfZei?1_nqSlHNL1dOmC zFnfZ3A3kSXXF^0k^{hgknpAFu3@zSF$I`d{7wo}fX52L3+Hyui$jdyP$fM-8n>V^# zCcdc`RN?A4mpdB^(XtgfY#DcYqx$;oxH+-y<-d%@%aOaC40D-^`hI6?-}Gv*%e4EF znl8;@3@>LdhL3Yki9(}Lzph3&wSuhvbsc(X3n%F%GVH6CF`%YM~D ze0}&=r0L&Tk<91ltnN)tW#ljjwpSjQHmKtyt_8=($4MVl>&Jqg8JH!gzpzWXy1LG} zj6N^8BwN6|mV7tx*FLtg+Ju+nzZqLl)xk0y6cn_&v4NSLT6J^;n;M|S@b{OmU-4-t z0Fs002&|&O^T6)`7Ft$T7IpM*Ss51`KJeT3^e6(i08*t}qX!c-t<622JE5(wp%3z; zroyz+m(GV7Hrll)D$xyb% zYkYNa0`@G}3fE3R$tAb2Y-eMWbJT@LyTo}r0yRRWWo(QPti0fQp;Kc58V zGTr-OQpmopqocq}X5O3T037Xrk&%z;r>+klKB{SGwDD;fJvTRBlRGE%v6W8{+p=&| zPf;6KPE=|vE8XdGv+Qe-X2w&Jw`7bicnGI(*WB*(W-m9E z(=yR!L$A#zGqDuX0F7XW0TR|?#f!0T`TY5F7dIDbgyLIoQC7W1z-2cMwv;$jbu~Lq zr$~ewGQnf0w#f^KWC~X6wI2|B3Uv6d_4SZm5>`-a}uY3>p!W76nxqQ&P_br~VBICma7 zCbUjR9{y>Bv0~Bj{2HAW5e{ga&+p5)(Fl1uDQ-Q&jmQJI%V#!|2M0@gYVmg_xqDpSVg`&^m<(r^U)=>1JyBqC{hAYOIIg zh6aYIFam6t5QG|M1O=y%uXofnaiEBce99Dhjxp4wS_8fZg4|)s!#)I zddI-PgemdI<%klTi~-R@Whe@Lb36l|c(+@RID%GoJrU>`%|9ovFK#}T%+}w~Z{ESV zKCO6hvlbU8akiS}C*r=J-ZJXT23z7hAcm`5c+iw!CPEsWL8ann<#kyo3BIpEiHmPT z&r`v02KDCO$q_hU!WVbt=#z3(i&VSTU^*Y8CjeOBaPr$yF`M4dLn7Lm*|*Q1tE%ZL zGN*Z(z-?nr;1Uw*Zh00pb=iXXfASONL=5PDqLh}##LqMcpwudY+o4l3K( zMv4Z*7f^QK@|7Pr(dpFF($t`G>aYS^+#xFmPb1X9Q-lkrfEloqmbX3DRiKU&gs*#Gi{ZdXh%cxElSTb}=B9-L9VpP>cjroG zagoGeJ$P_`o*%Bca0XGWMRC(L-wTN&LYs+_wMRxb!e}{MJS^v0LZNx1bO}1mgpyXw zUt*t`e#tG!yvb52ID^T%(^CA96p9i|4zRf>(?3SY|2nz2i_rrj_@AJ0x&w_z`IXU$HQ3$~G<`1=Ei|wNzh)m^!`BZhpG;h-_%{h%P}PaGLy|6>BK`-!&Gk z5peGSJ8znk)0Zih1_}n&WQnZdZv@`lDTF^XW){wKY0Q(FLam$?0b26 zc~CM&L5-rM6y=D;o7N8yiOMV&?XIIZIXO9@uyNh9gruY}HjcQ3Ov8pa^!{RHiN~HOHeR;*lM-CKMiS}g8_xrs4NgFUr%q(f7+~! zH#)Je8O%KLVXdg8plsqjbVayaN8arv{5pCV`u+R&;ImF}@%9L9q)QtbQbHMpDgi(j z5*)XbxF9t;A4w7~7e?O8>}(nU6QO%Vu{Ub}hI@st`AuIzIK$$m(O14=o(yWhD}{ z+kNYQCqhOF&NXG6TylM|RJL*r3lYqoAi!hf;OJa)Qq|IuFbCla%ra5Vnxz)kb9FbU?Y^nrjR!kygO^8j zj~*9((er_8lHT3f?q%$P-M##{DLO95gv8`m? z0z_!Q!F>Y%?RkeRY`hqC5fj8| z{jyqGNs@sY%!%NX!$(I22xauzP+D3VP_}g3aSDtO)X!@ZYv$ZVP{!klqR#W6bvpS;`ZeJEs>!uKgw--4GOu z>BlrYAHx5VmBXLWLQ?@_C}Qb#WK>iHNsP~yde&$7&Ky2Vn6O=dBYAp$M9TH~gMMw_eohVEamQjkVDpzxBTyN)EfsIY34+3PR@5AH`{SSUd473Z8jpXwB5OL2MhZF zA}cEngeSGN$(A<<#2?x9LS>8Bhnj<6mjY8ls0On+fWpWT2jGuX<M7ovbchvaFsM&dtF}^NC0UY1B)o^Mo-|p1Iq-}$fPW}aD1x`9N4y1PohAOqIq+e{81S*F(bHsqL~f}KN~ zRTid8WcmufaOCKwOz|+MAm`6Mor-v~4J?=@fR=%El?k-k+i4CkGC}jgdVrH4Pe(#Y zNfhc18lt6^D0W&BbReQOcekZ;#%X&8v;&)|0sMn%3Dr142E}1wEW4`eVOT3orI)kD zrG9I37T*|A6of0RD`N`R6Re$@Lkk9z?h6~V)!5|swudcd+}SS~Nk~W}=@URw6TD=} zNz!J^zv5O8pff3zaSlSu&@Y8T#O*(eezF0BhExy<#H~8}OC%rKe!jUri(?k}J9WXZ zc_neNFL1NBN=12oHt2tx6UAZFwCchN_P&M>_o#g0A+o{oc-qo=LdQ~7UH!3-B%BDO zU=XTd8su2SMfa!4)8kndM^rn^hKjNX0BG%V^=J|I_v*qo`<(phk3a)*!oCFq=FV@` zb1!cu7Phsn<{*v92{kp{p5I;QXgPSWq6hpj^YQRVhTAv<0Slr;@S{X!+R?+d`B2?n zPOO0E-bS~V-@T%`rV1)T3Uo;(rtV~sT(!Pbu{1}RYff+lky2d|N06AZ)oEPSuVlSPOR^O zCl^OfgBW-Fcl-|*3zdM2tp0iYO zx-8s|;uW?t zPScBqCrO*7@f^pf|XYYM{P2V~{sKyVH7?t7I2Xha|;hsg-w6hcBm zkd27!geN@awB{uPPwES5Txzly{J2i&&&YtTqOXE8GtA^Uzjgw@LxfmdCr|N0e2*Dy zs(>V`;MNq5TLVM`n;=Rd-sSf4J+KC4O^x7-;@pw|E^QPT&9R>=|EX z`Y9xul9J2P7Wo5);8psJ{eQa3sr?p69P#h>ZT9^9e6X4Uesyqg05&2jOg$JGFnCEy zJA>ruKEp*hdc+T$*XbeEjXZNk$EKrkm+al>=va&o@kw#FnEKfGq`HQ-{L|Mo@K8R6K$V3B@%|15 za%{|j#Af3?)F>*Li$U}*r>BQ!9v3Y%gC#lIm!kY5hh%VA57eKFN4ta=A;G^l=bkSt zF5;NU$JgcPsnD%E3PN}oJnSyQ8UN{pNYTLacIE5)rJ_Gdl3EfvuDT)@A+2{ zF|yQiR**1{$YEY}!_FCoTejb+l5JRJ{jjv@m<;eE>+NlYC-{AOwec}YhN)aOvrSnb z6siCLi*7mL)&2SmKxP2Ng7Bd(a5@_2XQU-gYHDb33ULK27)#O-sT-<31v@Hz4kG)T zpskBpFm!onNiUfRH73WvTcPvAg=xt#nb^o902mp#6q3Zy$e|5o$9#t!Hy{f7FFINf zWWI3alp(U4o8Mqce{@YNEiEmm$T6K+guHavC{ar}y2hCBBV?vr;aesinOK(Z0w z?1zEqcJ|#joFt&zU;A2AlKL_GS~VxPHW{Q~%GpJl$k4^murSpwGtrYdXS(uML0H%3 z7tgQ(a#;AYZ_{d?G|cNv4}*h?yQ`|Y9#X2BtpPwKr1VJ_k8{IC)nI-covM_2w{eRoWU|GN&W7Bu@$j^ccH8Px`#uV`}KP&?7slf?p<6- z-LrL9QVL!BwLdgBrwnmQS(mE}Oy}>Mt8fBWSmHf+2ZnvauHNDY-BQD)83=K2tk4un zF-q+hYXag2RvxjXZP?;qf`kd^f!{$w)*f_|k4S87RRm&S<+)aQ)F zDBE+Ay(2UXLR>qnxR>1OlGBr+8E^@4HUIqij?)I9BEVT*(|=YgL^@)w?%YwH+6gq$ zVkMHMMZ_!SS*3FY^+ZO#ng4HY`<8&hWsaqRd$+Q%g7_ zzo8)m!VguowUbjWi61T{r{~reDV^#AVhKdc7f-Z%_YmD{|6JS;>jwQkA`?I%vnTyP z%8)rhO-=KgTExTrm(0uW->V>q)-bq-nMg_UN8eC-uHxB$-^|~923(}_ScXc0qdh2! zkg2FEz#zWfUv6i(x{$y!Q)AlZs6&Nd58;geY0fo^9-fR5B9VW9OCfEIOH{OPvhn;C z%;!6HcF5h=YZd+G?Fuqf(v45Rv`lyZ!Y9S&5P=6P(8wRrCqz;E6M7DB_kP}nEgTf% zSlC#=NbX}lD07+S{y~XzSn+4E@y{=a0gMO9P;^3$RP%6-9I1a2`5BC}fR}h>#5Q=J zsH}*xL72n~17AK($YbW zW^n4Dfi^EaIk^P}J7qHwUm#Aabo+7q_U^Ro3&yy*^78Yh6OtaBhLy|Ht~=ix<^Axx z=pvX+b-$LG8J!;$8WVfZT*Q=^{&n7TFjH*KZPpGTE|?CH$)8A-H?+;sOOMXZ&gnAK zdq97YAmg+q^_?F8AFs{&QQet_3RfwKJrB~g8oZA={g+c`Rdg$Od)Wk!TJp=F+in}f7HDo$zn8CLorW{v$$f~7C^A2-U)KRt}rKx zO?SS#rgJ$^0(d=Mq~$!YHIB@gNN=)uU@(u28>T?W2e(`2efyFAut*c;)?_E)l&?RC*#27n#7s=4QarNeCk4P4Q<1-G0iCGb_Y11xDB8%#;!q7qT)u%AmKqlk=J2;1U$G{BNGcMg7~));XY|G zFzV{7s{>s7u|w<^&oDIC0RHhd52q>fLu*HeE0V5U_7psop~gcvHNb zUP)6RhRmwQkND+O2csA~K}%PKW7dl056A&m6kNE6ayww}4R;DEfke~dVBJR6AShwG zAsco0P1UYvmiQGHY}~!ES!ZVUMZBAp;nMZ)k7EjQxaudb&l?u&Hy#n&Yo9QL zoUi`w0_q0xtwUz*>ti5d_vVhBFSIU}lG;E?>Yu>C`NBJM*cK^@gp}#l z*P7q7o0p$Op@+1d`ie^}aav}0(nGkf>-Ltbss( z5EBE;IuJJ9W)Kt`Ayv5g@#fIqYWMfANgT1@aqD)t6dybQHZU?W3jJ4O_sFY3+?2|! z4EKK6@Ft|ye0;A=2NISPT`S{TzSW83=%|dW?DXU@pJO|9c>NnW$v=RC?J*uoGj+4% zyUQPs`7>gv`1F+f+i^j{1n^B-`_xJZhdQ;01Crtl9KZAy# z4It+@(MwKfS#_6@EQ0PwAbR>L{$KD#+b0Iqi9n5iZvHGOicdxgeuW=FoFt@8_d$%X zx0L_&RXk6XeXmNTgd$Y=0iA|am>dAQaG!T27IFK#x|b~-9TNkMYV~;5VZ%A=g1lzV zr(&-yozD{c5$xuWkjulz_e_x7LXd?C`}C^CMT{~E4=aR(oa9%h#5LCo(d*j1%8!b9 zNEfVIJ)Y&}cHL`zdz2lwI@lCJXZ=!JJAB$C8{)SnCNx*MNyX#B{$^5wNN7AUaf+2_ z%f_bQ8Kul;RS3U;2pNk$drK=1l8WJQ&Ek$7CoZUlQJ^-j7!;MJ#>I6bzx7u0zeIVu zV8$(=?I3Lh%-}6}-M0MdFJJzIT?W_;U=#>P>T;YJN!l_VYESRDWv3CLqjGnSdZZ5w zs07^q;eBEcNGfcumzS5(Z`~*M7vRUWj9$QRn>R4H{1L1lj^PvAeX2;HP)8Yo( zgH0J(Czg*&gdL9r=3O!_2^leP$OV6nYZ<}xcQHiFkkqRKbGcj`<&`$K)I^CvuXNM- zLr^?an|7XF?$lt~4Z)|SBOmZN&B@7qDj(|ra|%w$?#(+)GLgh~H$eUhL6#sd&01rpX)R1g4dw`pR&!3T&H zD1Bj}8?wCr8K{LWH!awO)3hP3oR2RNfu>#Dm&_G3JgnN$*%|V=2_^(+1X!tqqT8(4 zRKmgY_64P-94k%7Kkoqcj8r;5*`92A@nP=Yu^l7sYNNx##oW4guSO6`jz2I0=A#ttSbXj2Fivn6-4;}OmoLR zIXm;&>S57oG`S1Q3#S=C+N9IPQctOSFZoDfP-0AXGsQq+cP|7oNs`D#ypUWAER)b= zAyE|o_=1KSSXqG?_decfHRhyFQbe#2#%Hwus4~a&?>cAL$n1mh3~KI>k&~KPoj!YI zqG=fkfTJHiCW7(_OpPu2bcu??kd5N+-z2&Hf)2l>li6PO66M@Nu?36Zok5Qzh&8UR>4^waPT6Me@ei07UthipgS6>fYN zeaVGAa7W%KDk=)jO-BswGLWEia&xy(W%=MI&BkO5Bn;Nu8==Ryl1!;BUuaZCbJwN!6IQGHse-%$~7BWB)p#@gjVMtx0zeEqH52;T4)OYio~ zaARaW&(@M4sbjd)?SXY-Bq&hB^sC=KmbjT7)OH_!Mz{Pnp!(`x)=ji-PIh%Z8ld8` zIj`G$62~;PFw3k<8xJCll?~MOdQVRUEuum|YX(9j7)U_*$@oF>@5RE2pvNBdMFn;Q zepxawIWWzGCIK`Q7QB2*F2YQuUnGl$fe?@t#7F+tzEr-bK-=Joag!9;R!5cRT)d*u z?Y6Q>N6o?>zvJV>zGxPm9ZBO1Cp@6<-<)>l|03k2G;m4Ni4j^OmcHgB^eQp2Yt0Gz z7A>wu0*vJ_mjE=@2`2+?8AP4Iunz18G{vPOQ5{PClD}X=MyA}j)qzt7$sfIgr54l= zcnGffFWAa z*ZX<4+jqm)|>)4JI%#;TNB z_H07lCnG_}<0R-gNIwc#Y#iwVVP3c5<>u#?bv^F*QdHV0E*`7T-uW@9GnLPVk%=u2 zI5nsTA6a$(Wlji#1ArWaN06lK!L9J(1&&>3ECd)sQQSZ*-iVvZJYD~tz+(#10RZN( z(1IjMQ&LlfpDM8f9xdQ64sb4LU!W)lAKS5irU50lkPwq{o3lZ&{)9Jn=k|tkX-0iX z`s*4omM1Fo2^z1oa>lI$UG}KKVnB~jMrL^a;2EGsD1V-?67)W@_WJ%E{5l0qrEx&Y z_#F;OSDL$?IhdYf@1Hp=>WoN?owSq~c;B%49##p|^rfo$FZGODl9_XJ6_~If5Aut1 zK5-RLoZHv$@B`(dTBy;N!E+Bb&wcIas_hAQD~JgsHv?9Q+&E`vdu!)aAZWJ3m@Uy{ z=Pt41{xf1#eYF-P2n>MKbWo#hZEdSE69NgrBPb{jj$VkwSuVG|Jh}|Qyni z5(fSPg5|k!Hv1$4=W0gojt^W?!X@#=;SI8ZD4`&YiLf zzYZ*8Ich~Zb=D7$Bklv0UC7A6kSQOZl@#{RSNHd(3mHNi3k(nx6m8|_(ExkgFG0xW zsCtZS{D}-~{#7Z=Nj#H~fU!ZHs3-)OFkI+1Q!dy({}UW02LCUt zorPqrc~-L!AVA!AYg?ZHIZ(##U8S>6iUP^`(?b*pR)sb4F(Jl25Z`4>BTAdQy9GbW z-@h;ChVqSPZbO%+*zUQJAqSpzkpKGaQZuMp9MgPc;apGS@rr-RU3o~{bh&9T>32S3 zlxiEAupnL1aI6a@*~r&QZV!Cn2+N=!#Oyjvlx@q(tZ9lNt(%0g-cC@F~=w=ATa<34ETkF0`}y#L2;t6X8#_P1iN%~Cczw2Q;#`&U={8%_jYxmgQONd5p;|rNFD?| z`dJ7uU@0EH;t=(Zth#2LoS+*9s*jA!1eyYp#ekNM!y5?x3kSV8>xVNKh5uGr@Zba@ z*J%yr@vzJwm_*sZgi8?JEzS;1#8(!Ul>cUhpr+{CyIVx2XAKG!X^l>ewKX<)pY@Ku zFs;^hR8fXU=4FuvojMb!4NYa$36#KSW#W?#9)B7?HsTOYettAsJo~sX$Un3gNNJ5s zWKm^I)Oe+VuJE0HrM`0o^udtV0Ek>$f&%CWfO8jE^a!e{wtqqv1Ij5>Qz6OUi#65N)LQr^4Z@@f+tysTHxKdlE>xKlzm!{eQI;n0toQdScd0Xh zEjny=rFnawv)0?4-b14>m(^xen2#@{b34y-Lxp2Zb_}p*F$1XUxgi zrwMv|C$J5?=1RNGE!{3pXNqcH29PAT|B1V_@Z;2;Hd^`k9vSYucB{;bwNii2gn`qO z8cXNe8+b>QqIx6PoWWS@Ix_k8E2sa0=-<<2Vp1~7_4hH4Jl6;PWoZ*ZRH4o3FFq)K zh;?h&G5H>q$Gg;-nZ8?Gh@YD-<+f)|tQI`pKs*3+T=tC!>e3LP)z8}7p=n}6kSFQk z2G7uB7-NRTTI560ET)Q--*4~!*&opX+3jC3Z{Q<8fdKQ}V%+HF>aT!1Ktf>%B!SD) zjQjp_p^GqEZMU>VOEKgIk&xh$tAg+dmoimPrpnb7vV+R)wl#^&w>fqALtk52g+owo z7AQ=lzyk=1w$(Vn3U&seh_|dnIaO7BhhryRP#;>3h=_@E1}v&YG6vqvJnUi}OBd$q zv;tcMp;~P;J%LEI0}=%Px@8TI0n$KQfAR+jb6%cjhh494WY9lnC0prU6m?te?z|pj zI{#NyBknQj-soocRv}xJjwr!(SgLJNPBZ2h<>gDlLI-%V6w0{P-5 z059wPS%dJ9!;N2P6!$UY00q#UD#Z|?S@DT27ub0oA39W}YKy7}Cw}%fez#x71&XI7 z<9J}msqvzaBF1i8Rc{}*f^lmg`50Uxow}Yiz=finj@1Rl7l3I{%VA%O0fKsJND>Bq z>k5#tCDTyL=8OsOe;(c5ubt0*uMip*8qR>16aadkYsYlax_!> zHZ;ImfB#3Jd*qMUxNL6@Ktr?X!MX(~34%>T-!@e!;fYRSzB2s^aHoZw?KQf^P{A%i1V*lPOZ~UIZg1?Qi|cZ~bx|v3T{BkuYr^Ln&}&GQqx99F<^gz`7J;s1 zIs6%H>EXu!@1Mcn^T6Jn`lxe6)djgk(| zlJY>v10yI7V18VVK)r`U4yZ~p0BS9Wa85IxG-Xomoc0!|S)hLaGW01!W)N6eEl4|i zt>WbDjon36IXC2y0-nz8_D_?}e?2#lk{!qaVopj>r04p5Bx70@?QO~%xw!p=5bJXv z(KaY4K|`XLC&iqI52_@CZn%|z3D<@Dc;d?LC^5!W$)%Wx|n>O8S0fU8w>l zn%9i`LsNpcgJNtiX}R3Kp}$rldY@Ot`fsA=Sn;FgNMq%o_n^?#%7Q^LWf2j*bVo!} ziip;T*on`g*y2fsvrFUdrAkGhpy$GltSF@%ple=Kb*)RcOtJPo$br@ieeo(D`*tqg zB98(tDo`zeMQ4Ky2VSOSSSs*<1jHnJN1c>+OtI2OTwZbzV!-RpsL8QgP0D`tOp*M- z4!dN32lnVTg8T4-I26jbd!U>O#`QT4edKs{U=9cNb8Rh&dQZ<7D51b$3%@-87o~?} zPBG95qZN?X{G_ZZT{aoj4{JSLEzj-lYZht%=>`AQE_FP5yWDUBNHwyR1955!fkQfS zYLY5Ftjz3OMbv`Mm`d--BTsR!w!49 zwW<&-MFX3P@zhH5jGlc!ea@YdNR04qI$)8@ypF6deKu5VXa2hl?vk$lUTKJUrS}nE zU0p{BrY6A%;0cZBR)DZtct=xfDc$ZfT09LctsICu1Oe1%MydC7=z;GbZd&KD%vKvS zy!=Fl_I6Nnyh?vpF4zqKCxrY3Y7Pz#u_{mxLqJP#zeP}egMlG-^)x3eA?b7aj^>dM zfgzlpzF*NEh*v7mKn$sstrj({JiNj3bSN1rNrwM{G$l+iPmxLlxre-4JCVpPGGEB7M?(c7R@+a9V-JLraElDfwX8F-bX&Dcf zsaDQw*Cg!cwPszbdVKi|Z#YCiez>Aheev%Z=}Lsmdx6FaJ@&Tuh@tL$0{^O=-NrK$ z(Ny2xb+VJc;}T9$hH~D?=E$nNHuP%!;NkguaZBHs17+qZ6^`zXjf)o{6Q)VQ53Ao0iE-;iyRry}9y zOANMZIXd-D%x)TQ8bY)1yHcz^p{*!X{OVz>``=D150$!~mIp~Wy(2KEame>@OI62{ zTfc7rQCV*ug(yr^_nr!+kuXtGCzB3tP`paF{`H6En~PW>^ZMq~I`dD~@N8I!MIH25 z{Rq*1>xfQm{Bp>#f|2dW@+?!=5oLtryJF**iTHoo5+A(c-ij;LFm<>#c{J4L)$dFT zzBul~RL_5yes@_W<#XPCP`MJqi@ynrfk`~-N0!$QD~V5n0!D39@``+{JEzmyT+gcO z$ORP=5eNoib!F>qr)rMJDQnkp+?z&3j@VLNpZf($Rk$~@UJi_^-)#|+6f9TB@M^4W z)aHMixbf~&Wz?;_;ti6rZ+9~BU%Y+7=+Kw^_1ok3!^7--@uvF~0ud$z%1fPu=J#^& zGJka|-TLI^hL#r-9QeAhVKZG&e0k;Wvoq$Wd=h;U;@lrkKQ#`s;3m#k)Yxp0VQ!G$ z5xX-nXpk1| z>a<;OPDD)^lbx4+Uu;7nay#0q+qz=l_R?~AD6NOhpdLj*Y}S^MuBM@Nb((_3?toC| z*i^8~a)y!8l|chR$g>cOhPV7EXtyElHb%hh@7C|8AyXDcrioV3H_zjCZ25yGGg)`Iyl^wk=UTWJl-J8#sXKoe zqiSIHcPOC2!87b0T5F!Ul8bJTp_q-WIe9@`Rtt;7^=A9R;ruebR^6~|zq0HT#d$v^C@@gZ&&a5fNO2zp~2Ld5r>hu=N}KoPJ|5`YX*)PMRIcFj^A6$)_wPd9p04w z>X!GkJgU4|2PyJ`fi><8o@YDr4!rWT2AY~>8n_zFf*EyZVcXcxpP6vskmN;k_4t^I z`<)cKPi|-HIZRINUMn^CE&FM8 z2An41#N;m0ymaoKLYcEBvBMzj2HhLdj8EfiY^;kzUio~ihln7d_l)HQP5Y})DvalB zgR|E|^Ctakj{3q{qq`SdNz6fS?Yom%Z2wR`Gxj&RK zbVzF^zA082ni2P3*~mmk3sn1#l{jVWkfpJteNc|UT#r37Q$J}d&bgL`&y?Us?U zH)S>|jy@}zu4(3CBJ@oKTPpo^d+!rna8S|f6 zd{CY6Sk~~5T{xh=WtHt_XIPPKKO!Kc9N0NcX3c57Y(2fY^YOCbVY7Aj2RQ#KzAmo~7Jb6k!2OryIxfmRC4#H+>al7M zy{~w+{aK70uZ$haC-#~opVGRrH}Z-K&zYh+O>DO_aDL>{GZWmJik^rJy1;hhVV?cc zM#rvz@4xQQ$YW2RKkGV_@`r5pO2YeZJ9Qp@fyOHFK;79%Q^m@+t<8c=Kh2!sW$k%~ zF8|BbGl>_}p8NyL@H$94yOVkE#hd}Dg2*6AdJL}PE z^eP=TLnXOw`LklS>1N@=fJ&5A>OhWQxcTpZ;k=Rf<+#W{uMBR>e2>ee&ROqHv>K&P zNhoE%HY1`4>TpE={bIwV22!oY#1Ba z;X&HOf{y`rrX)8)W@SHg2*=37-Z`DYo3S7Q!IG0v#aCqm36LLe-^#;kTJYvQ-3pkT zaNZNVOF>0WT5>aYWJAfp$}-G_c$$kPw;;&dxVsl%hi?@g7%H0i`c3QkER`#f@GIgl z4ijOrXEvsoq!B8Ab*rsI+TWYXxMQJnoj;pA(E;`Fsk;gs@&q0r)T>}B7K_9m*TGrgt4-?=%KjisBc|vX1|v# z1(;S%8ff+Y{HV-ey0G%iBZuX-)R zob{yM#yOU+e)x80in&~xwjZ|7Ndrm0(4PLCC@<}<6yas`LFSH-W=zDsP$ddrEV zlBIbMroXZ8;c#Uy(`G9glZ|=Zwry~IcC?LI5^eYt$p2VM!M+nJ@jWm6_oKG_T1w1B z`jh>c1tWfR;VQNim&TaSi{{Ka_jLON&k^>mN7*cU7>Bs;7_RJjWDk>HR4;U0G)l~k~EqL_RVNHXt zp|F%aL&tk&QFDfk40f#s0sKdvH+BhgXtFR)5Pp>CcW~(kW&w4*hz$n>JLDT!A~tAb uu{`2*V3nW1I#D!_;gQn}&KC>{2N>!FRd(cyzWN5Vl)=;0&t;ucLK6V+=s$P> literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/previous-arrow.png b/DOCBOOK/webhelp/template/common/images/previous-arrow.png new file mode 100755 index 0000000000000000000000000000000000000000..347bc53474ce6f9246e45a2784623ac3c55203fa GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dF8<0HkD{mW+k}PqJC<)F_D=AMbN@Z|N$xljE z@XSq2PYp^(7*cU7>Bs;7_RM+{CQNw1Fo``;OomIOA;eyQoxxDq zqleYEkzs-s!=tK_vpODKLJPP=Hrzbak`ij8=UULpEv8e!aHP*6O-Z2sz)AtOhAwdi tO;?4yBLSV-6%OYZAAQ~MfRV$1!EulJ!>J6GyMcBxc)I$ztaD0e0sv`WKHvZV literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/search-icon.png b/DOCBOOK/webhelp/template/common/images/search-icon.png new file mode 100755 index 0000000000000000000000000000000000000000..715f62d08b07f857b5866aadab38c9275c1c7513 GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6L!3HE_wj8emQjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sf9Y#@6Www1Qyw!k0S3F%DLp+YZ zy<+I?6ez>`Aztf}Sn4}APCv){3l|=>Yl)V3lbRE=XyLww>=g=mre-ad1o$;s=E~eD z+1Y%=dExh#rt)dr&+9GQtIt35Z{zvT^t|GLxm`j3W0RKkh6mMWWjy3Aj!_ZROK!09 ztNWn5M@?|QQ%lvEHI1z2$~vEH`%o!!e`u6{1-oD!M<4CsTk literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/showHideTreeIcons.png b/DOCBOOK/webhelp/template/common/images/showHideTreeIcons.png new file mode 100755 index 0000000000000000000000000000000000000000..c1ec1f96a4c519610064feea6de06358e9f6e38a GIT binary patch literal 726 zcmV;{0xA88P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igY> z6BZ`#&b%i800LG?L_t(Y$L-b2ZW2)($MNr6N{|8D3Y1Hs4@EXeks5%$)hVFkKicx7iruNhXt=oZtVGoO9+s+TNG1A|i+gzW?(r z;&VCo>%25YWQu^ooPi>ZYKsMQ;c$770xZ9<{Y za&RV{W_@jq+J2p0|9r0P^L-zuT0<$HaIF053r`_&Cm&Q{H+i}n| zol>cYVHoql>ual|Qz?#HE!v&VQa5(ux>Ov8(8>zsVgXIlX2aP`n!#Ym;n8uR&t)_k zQLER9MlBNY8?)il(=L`3A(==7fXLs^cFj7>-y*CeEhVB^3=@cQL(EGFNSj+i#gA^xvn=?v5V2@-~JyT1jz=0 z-v`KkSQhRWhVf$AEbx3$xCy)l?!;ozMYp;QyaDb$+P#1H11-^gON17#t^fc407*qo IM6N<$g5CR900000 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/sidebar.png b/DOCBOOK/webhelp/template/common/images/sidebar.png new file mode 100755 index 0000000000000000000000000000000000000000..5492671871c1fdb7c149bf233e34ebddd074c777 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp@K+MU(1SHcW3~hmwWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8U{4pvkcwMLbBxo^O;mQ5C}5VBp8e!WN?S`y%iQnt-qwGU z>u7lMf5n5>*VhX;sx9C%(%2aC{q^zkm`nHf)ixVQbn@6YFfcQ; Xxf$LLJ^5Y}Xgq_btDnm{r-UW|fBilp literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/images/starsSmall.png b/DOCBOOK/webhelp/template/common/images/starsSmall.png new file mode 100755 index 0000000000000000000000000000000000000000..490a27b9255075c8ce355aa3e36f89c82038b794 GIT binary patch literal 1032 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").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
              a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="

              "+""+"
              ",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
              t
              ",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
              ",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

              ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
              ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
              ","
              "],thead:[1,"","
              "],tr:[2,"","
              "],td:[3,"","
              "],col:[2,"","
              "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
              ","
              "]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
              ").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/DOCBOOK/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js b/DOCBOOK/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js new file mode 100755 index 0000000..fec53e8 --- /dev/null +++ b/DOCBOOK/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js @@ -0,0 +1,321 @@ +/*! + * jQuery UI 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +(function(c){c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.2",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Widget + */ +(function(b){var j=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add(this).each(function(){b(this).triggerHandler("remove")});return j.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend({},c.options);b[e][a].prototype= +b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==undefined){h=i;return false}}):this.each(function(){var g= +b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){this.element=b(c).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create(); +this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===undefined)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/*! + * jQuery UI Mouse 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&& +this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault(); +return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&& +this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX- +a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Resizable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.resizable",d.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");d.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element, +_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&d.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(d('
              ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!d(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var e=0;e
              ');/sw|se|ne|nw/.test(g)&&f.css({zIndex:++a.zIndex});"se"==g&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[g]=".ui-resizable-"+g;this.element.append(f)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=d(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=d(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}d(this.handles[i])}};this._renderAxis(this.element);this._handles=d(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();d(this.element).addClass("ui-resizable-autohide").hover(function(){d(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){d(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){d(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(d(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +e=this.element;this.resizing=true;this.documentScroll={top:d(document).scrollTop(),left:d(document).scrollLeft()};if(e.is(".ui-draggable")||/absolute/.test(e.css("position")))e.css({position:"absolute",top:c.top,left:c.left});d.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var g=m(this.helper.css("top"));if(a.containment){c+=d(a.containment).scrollLeft()||0;g+=d(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:g};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:c,top:g};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=d(".ui-resizable-"+this.axis).css("cursor");d("body").css("cursor",a=="auto"?this.axis+"-resize":a);e.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,e=this._change[this.axis];if(!e)return false;c=e.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var e=this._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName);e=g&&d.ui.hasScroll(e[0],"left")?0:c.sizeDiff.height; +g={width:c.size.width-(g?0:c.sizeDiff.width),height:c.size.height-e};e=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var f=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(d.extend(g,{top:f,left:e}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}d("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,e=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(e=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(e=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,e=k(b.width)&&a.maxWidth&&a.maxWidthb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(f)b.width=a.minWidth;if(h)b.height=a.minHeight;if(e)b.width=a.maxWidth;if(g)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(f&&l)b.left=i-a.minWidth;if(e&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(g&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=d.browser.msie&&d.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return d.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return d.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){d.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});d.extend(d.ui.resizable, +{version:"1.8.2"});d.ui.plugin.add("resizable","alsoResize",{start:function(){var b=d(this).data("resizable").options,a=function(c){d(c).each(function(){d(this).data("resizable-alsoresize",{width:parseInt(d(this).width(),10),height:parseInt(d(this).height(),10),left:parseInt(d(this).css("left"),10),top:parseInt(d(this).css("top"),10)})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else d.each(b.alsoResize,function(c){a(c)}); +else a(b.alsoResize)},resize:function(){var b=d(this).data("resizable"),a=b.options,c=b.originalSize,e=b.originalPosition,g={height:b.size.height-c.height||0,width:b.size.width-c.width||0,top:b.position.top-e.top||0,left:b.position.left-e.left||0},f=function(h,i){d(h).each(function(){var j=d(this),l=d(this).data("resizable-alsoresize"),p={};d.each((i&&i.length?i:["width","height","top","left"])||["width","height","top","left"],function(n,o){if((n=(l[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(/relative/.test(j.css("position"))&& +d.browser.opera){b._revertToRelativePosition=true;j.css({position:"absolute",top:"auto",left:"auto"})}j.css(p)})};typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?d.each(a.alsoResize,function(h,i){f(h,i)}):f(a.alsoResize)},stop:function(){var b=d(this).data("resizable");if(b._revertToRelativePosition&&d.browser.opera){b._revertToRelativePosition=false;el.css({position:"relative"})}d(this).removeData("resizable-alsoresize-start")}});d.ui.plugin.add("resizable","animate",{stop:function(b){var a= +d(this).data("resizable"),c=a.options,e=a._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName),f=g&&d.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height;g={width:a.size.width-(g?0:a.sizeDiff.width),height:a.size.height-f};f=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(d.extend(g,h&&f?{top:h,left:f}:{}),{duration:c.animateDuration,easing:c.animateEasing, +step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&d(e[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});d.ui.plugin.add("resizable","containment",{start:function(){var b=d(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof d?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= +d(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:d(document),left:0,top:0,width:d(document).width(),height:d(document).height()||document.body.parentNode.scrollHeight}}else{var e=d(a),g=[];d(["Top","Right","Left","Bottom"]).each(function(i,j){g[i]=m(e.css("padding"+j))});b.containerOffset=e.offset();b.containerPosition=e.position();b.containerSize={height:e.innerHeight()-g[3],width:e.innerWidth()-g[1]};c=b.containerOffset; +var f=b.containerSize.height,h=b.containerSize.width;h=d.ui.hasScroll(a,"left")?a.scrollWidth:h;f=d.ui.hasScroll(a)?a.scrollHeight:f;b.parentData={element:a,left:c.left,top:c.top,width:h,height:f}}}},resize:function(b){var a=d(this).data("resizable"),c=a.options,e=a.containerOffset,g=a.position;b=a._aspectRatio||b.shiftKey;var f={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))f=e;if(g.left<(a._helper?e.left:0)){a.size.width+=a._helper?a.position.left-e.left: +a.position.left-f.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?e.left:0}if(g.top<(a._helper?e.top:0)){a.size.height+=a._helper?a.position.top-e.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?e.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-f.left:a.offset.left-f.left)+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-f.top:a.offset.top- +e.top)+a.sizeDiff.height);g=a.containerElement.get(0)==a.element.parent().get(0);f=/relative|absolute/.test(a.containerElement.css("position"));if(g&&f)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(e+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-e;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=d(this).data("resizable"),a=b.options,c=b.containerOffset,e=b.containerPosition, +g=b.containerElement,f=d(b.helper),h=f.offset(),i=f.outerWidth()-b.sizeDiff.width;f=f.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f});b._helper&&!a.animate&&/static/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f})}});d.ui.plugin.add("resizable","ghost",{start:function(){var b=d(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, +display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=d(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=d(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});d.ui.plugin.add("resizable","grid",{resize:function(){var b= +d(this).data("resizable"),a=b.options,c=b.size,e=b.originalSize,g=b.originalPosition,f=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-e.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-e.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a}else if(/^(ne)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}else{if(/^(sw)$/.test(f)){b.size.width=e.width+h;b.size.height= +e.height+a}else{b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}b.position.left=g.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +; +/* + * jQuery UI Selectable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
              ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom").addClass("ui-autocomplete").appendTo("body",c).mousedown(function(){setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(d,b){b=b.item.data("item.autocomplete"); +false!==a._trigger("focus",null,{item:b})&&/^key/.test(d.originalEvent.type)&&a.element.val(b.value)},selected:function(d,b){b=b.item.data("item.autocomplete");false!==a._trigger("select",d,{item:b})&&a.element.val(b.value);a.close(d);d=a.previous;if(a.element[0]!==c.activeElement){a.element.focus();a.previous=d}a.selectedItem=b},blur:function(){a.menu.element.is(":visible")&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()}, +destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource()},_initSource:function(){var a,c;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(d,b){b(e.ui.autocomplete.filter(a,d.term))}}else if(typeof this.options.source=== +"string"){c=this.options.source;this.source=function(d,b){e.getJSON(c,d,b)}}else this.source=this.options.source},search:function(a,c){a=a!=null?a:this.element.val();if(a.length").data("item.autocomplete", +c).append(""+c.label+"").appendTo(a)},_move:function(a,c){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](c);else this.search(null,c)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")},filter:function(a,c){var d=new RegExp(e.ui.autocomplete.escapeRegex(c), +"i");return e.grep(a,function(b){return d.test(b.label||b.value||b)})}})})(jQuery); +(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(e(c.target).closest(".ui-menu-item a").length){c.preventDefault();a.select(c)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,b=this.element.attr("scrollTop"),f=this.element.height();if(d<0)this.element.attr("scrollTop",b+d);else d>f&&this.element.attr("scrollTop",b+d-f+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); +this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prev().length},last:function(){return this.active&&!this.active.next().length},move:function(a,c,d){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(d,a):this.activate(d,this.element.children(c))}else this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active|| +this.last())this.activate(a,this.element.children(":first"));else{var c=this.active.offset().top,d=this.element.height(),b=this.element.children("li").filter(function(){var f=e(this).offset().top-c-d+e(this).height();return f<10&&f>-10});b.length||(b=this.element.children(":last"));this.activate(a,b)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last")); +else{var c=this.active.offset().top,d=this.element.height();result=this.element.children("li").filter(function(){var b=e(this).offset().top-c+d-e(this).height();return b<10&&b>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":""));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");var a=this,b=a.options,d=b.title||a.originalTitle||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
              ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
              ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), +h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", +e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== +b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index", +c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== +f[0]&&e.shiftKey){g.focus(1);return false}}});c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false,e=c("
              ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a, +function(g,f){g=c('').text(g).click(function(){f.apply(b.element[0],arguments)}).appendTo(e);c.fn.button&&g.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging"); +b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,position:f.position,size:f.size}}a=a===undefined?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position"); +a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop", +f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0];a=a||c.ui.dialog.prototype.options.position;if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(e,g){if(+b[e]===b[e]){d[e]=b[e];b[e]= +g}})}else if(typeof a==="object"){if("left"in a){b[0]="left";d[0]=a.left}else if("right"in a){b[0]="right";d[0]=-a.right}if("top"in a){b[1]="top";d[1]=a.top}else if("bottom"in a){b[1]="bottom";d[1]=-a.bottom}}(a=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position({my:b.join(" "),at:b.join(" "),offset:d.join(" "),of:window,collision:"fit",using:function(e){var g=c(this).css(e).offset().top;g<0&&c(this).css("top",e.top-g)}});a||this.uiDialog.hide()},_setOption:function(a, +b){var d=this,e=d.uiDialog,g=e.is(":data(resizable)"),f=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");break;case "draggable":b?d._makeDraggable():e.draggable("destroy");break; +case "height":f=true;break;case "maxHeight":g&&e.resizable("option","maxHeight",b);f=true;break;case "maxWidth":g&&e.resizable("option","maxWidth",b);f=true;break;case "minHeight":g&&e.resizable("option","minHeight",b);f=true;break;case "minWidth":g&&e.resizable("option","minWidth",b);f=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title", +d.uiDialogTitlebar).html(""+(b||" "));break;case "width":f=true;break}c.Widget.prototype._setOption.apply(d,arguments);f&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight", +this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.2",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&& +c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
              ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&& +b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight, +document.body.offsetHeight);return a",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:'
            • #{label}
            • '},_create:function(){this._tabify(true)},_setOption:function(c,e){if(c=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[c]=e;this._tabify()}},_tabId:function(c){return c.title&&c.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+s()},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_cookie:function(){var c=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+v());return d.cookie.apply(null,[c].concat(d.makeArray(arguments)))},_ui:function(c,e){return{tab:c,panel:e,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var c= +d(this);c.html(c.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function e(g,f){g.css({display:""});!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);var a=this,b=this.options,h=/^#.+/;this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],p;if(l&&(l===location.toString().split("#")[0]|| +(p=d("base")[0])&&l===p.href)){j=f.hash;f.href=j}if(h.test(j))a.panels=a.panels.add(a._sanitizeSelector(j));else if(j!="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=a._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(b.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else b.disabled.push(g)});if(c){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(b.selected===undefined){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){b.selected=g;return false}});if(typeof b.selected!="number"&&b.cookie)b.selected=parseInt(a._cookie(),10);if(typeof b.selected!="number"&&this.lis.filter(".ui-tabs-selected").length)b.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));b.selected=b.selected||(this.lis.length?0:-1)}else if(b.selected===null)b.selected=-1;b.selected=b.selected>=0&&this.anchors[b.selected]||b.selected<0?b.selected:0;b.disabled=d.unique(b.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(b.selected,b.disabled)!=-1&&b.disabled.splice(d.inArray(b.selected,b.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(b.selected>=0&&this.anchors.length){this.panels.eq(b.selected).removeClass("ui-tabs-hide");this.lis.eq(b.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[b.selected],a.panels[b.selected]))});this.load(b.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else b.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[b.collapsible?"addClass": +"removeClass"]("ui-tabs-collapsible");b.cookie&&this._cookie(b.selected,b.cookie);c=0;for(var i;i=this.lis[c];c++)d(i)[d.inArray(c,b.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");b.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(b.event!="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs", +function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(b.fx)if(d.isArray(b.fx)){m=b.fx[0];o=b.fx[1]}else m=o=b.fx;var q=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show", +null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},r=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(b.event+".tabs", +function(){var g=this,f=d(this).closest("li"),j=a.panels.filter(":not(.ui-tabs-hide)"),l=d(a._sanitizeSelector(this.hash));if(f.hasClass("ui-tabs-selected")&&!b.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}b.selected=a.anchors.index(this);a.abort();if(b.collapsible)if(f.hasClass("ui-tabs-selected")){b.selected=-1;b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){r(g, +j)}).dequeue("tabs");this.blur();return false}else if(!j.length){b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this));this.blur();return false}b.cookie&&a._cookie(b.selected,b.cookie);if(l.length){j.length&&a.element.queue("tabs",function(){r(g,j)});a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs", +function(){return false})},destroy:function(){var c=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(b,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this, +"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});c.cookie&&this._cookie(null,c.cookie);return this},add:function(c,e,a){if(a===undefined)a=this.anchors.length;var b=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,e));c=!c.indexOf("#")?c.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs", +true);var i=d("#"+c);i.length||(i=d(h.panelTemplate).attr("id",c).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);i.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide"); +this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(c){var e=this.options,a=this.lis.eq(c).remove(),b=this.panels.eq(c).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(c+(c+1=c?--h:h});this._tabify();this._trigger("remove", +null,this._ui(a.find("a")[0],b[0]));return this},enable:function(c){var e=this.options;if(d.inArray(c,e.disabled)!=-1){this.lis.eq(c).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=c});this._trigger("enable",null,this._ui(this.anchors[c],this.panels[c]));return this}},disable:function(c){var e=this.options;if(c!=e.selected){this.lis.eq(c).addClass("ui-state-disabled");e.disabled.push(c);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}return this}, +select:function(c){if(typeof c=="string")c=this.anchors.index(this.anchors.filter("[href$="+c+"]"));else if(c===null)c=-1;if(c==-1&&this.options.collapsible)c=this.options.selected;this.anchors.eq(c).trigger(this.options.event+".tabs");return this},load:function(c){var e=this,a=this.options,b=this.anchors.eq(c)[0],h=d.data(b,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(b,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(c).addClass("ui-state-processing"); +if(a.spinner){var i=d("span",b);i.data("label.tabs",i.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(b.hash)).html(k);e._cleanup();a.cache&&d.data(b,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.error(k,n,c,b)}catch(m){}}}));e.element.dequeue("tabs");return this}}, +abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(c,e){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.2"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(c,e){var a=this,b=this.options,h=a._rotate||(a._rotate= +function(i){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=b.selected;a.select(++k").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"}); +c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=j.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c|| +typeof c=="number"||f.fx.speeds[c])return this._show.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c])return this._hide.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||typeof c=="boolean"||f.isFunction(c))return this.__toggle.apply(this, +arguments);else{var a=j.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+ +b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2, +10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)* +a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(b(this).offset()).appendTo("body")});return!0},_mouseStart:function(a){var c=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();b.ui.ddmanager&&(b.ui.ddmanager.current=this); +this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY= +a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);c.containment&&this._setContainment();if(!1===this._trigger("start",a))return this._clear(),!1;this._cacheHelperProportions();b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,!0);b.ui.ddmanager&&b.ui.ddmanager.dragStart(this,a);return!0},_mouseDrag:function(a,c){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +if(!c){var d=this._uiHash();if(!1===this._trigger("drag",a,d))return this._mouseUp({}),!1;this.position=d.position}if(!this.options.axis||"y"!=this.options.axis)this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||"x"!=this.options.axis)this.helper[0].style.top=this.position.top+"px";b.ui.ddmanager&&b.ui.ddmanager.drag(this,a);return!1},_mouseStop:function(a){var c=!1;b.ui.ddmanager&&!this.options.dropBehaviour&&(c=b.ui.ddmanager.drop(this,a));this.dropped&&(c=this.dropped,this.dropped= +!1);if((!this.element[0]||!this.element[0].parentNode)&&"original"==this.options.helper)return!1;if("invalid"==this.options.revert&&!c||"valid"==this.options.revert&&c||!0===this.options.revert||b.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;b(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",a)!==false&&d._clear()})}else!1!==this._trigger("stop",a)&&this._clear();return!1},_mouseUp:function(a){!0=== +this.options.iframeFix&&b("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});b.ui.ddmanager&&b.ui.ddmanager.dragStop(this,a);return b.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var c=!this.options.handle||!b(this.options.handle,this.element).length?!0:!1;b(this.options.handle,this.element).find("*").andSelf().each(function(){this==a.target&&(c= +!0)});return c},_createHelper:function(a){var c=this.options,a=b.isFunction(c.helper)?b(c.helper.apply(this.element[0],[a])):"clone"==c.helper?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo("parent"==c.appendTo?this.element[0].parentNode:c.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){"string"==typeof a&&(a=a.split(" "));b.isArray(a)&&(a={left:+a[0],top:+a[1]|| +0});"left"in a&&(this.offset.click.left=a.left+this.margins.left);"right"in a&&(this.offset.click.left=this.helperProportions.width-a.right+this.margins.left);"top"in a&&(this.offset.click.top=a.top+this.margins.top);"bottom"in a&&(this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();"absolute"==this.cssPosition&&(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0], +this.offsetParent[0]))&&(a.left+=this.scrollParent.scrollLeft(),a.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&"html"==this.offsetParent[0].tagName.toLowerCase()&&b.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"==this.cssPosition){var b=this.element.position();return{top:b.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(), +height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;"parent"==a.containment&&(a.containment=this.helper[0].parentNode);if("document"==a.containment||"window"==a.containment)this.containment=["document"==a.containment?0:b(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,"document"==a.containment?0:b(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,("document"==a.containment?0:b(window).scrollLeft())+b("document"==a.containment?document: +window).width()-this.helperProportions.width-this.margins.left,("document"==a.containment?0:b(window).scrollTop())+(b("document"==a.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var a=b(a.containment),c=a[0];if(c){a.offset();var d="hidden"!=b(c).css("overflow");this.containment=[(parseInt(b(c).css("borderLeftWidth"),10)||0)+(parseInt(b(c).css("paddingLeft"), +10)||0),(parseInt(b(c).css("borderTopWidth"),10)||0)+(parseInt(b(c).css("paddingTop"),10)||0),(d?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(b(c).css("borderLeftWidth"),10)||0)-(parseInt(b(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(d?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(b(c).css("borderTopWidth"),10)||0)-(parseInt(b(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom]; +this.relative_container=a}}else a.containment.constructor==Array&&(this.containment=a.containment)},_convertPositionTo:function(a,c){c||(c=this.position);var d="absolute"==a?1:-1,g="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(g[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition? +0:("fixed"==this.cssPosition?-this.scrollParent.scrollTop():h?0:g.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():h?0:g.scrollLeft())*d)}},_generatePosition:function(a){var c=this.options,d="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent, +g=/(html|body)/i.test(d[0].tagName),h=a.pageX,e=a.pageY;if(this.originalPosition){var f;this.containment&&(this.relative_container?(f=this.relative_container.offset(),f=[this.containment[0]+f.left,this.containment[1]+f.top,this.containment[2]+f.left,this.containment[3]+f.top]):f=this.containment,a.pageX-this.offset.click.leftf[2]&&(h=f[2]+this.offset.click.left), +a.pageY-this.offset.click.top>f[3]&&(e=f[3]+this.offset.click.top));c.grid&&(e=c.grid[1]?this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY,e=f?!(e-this.offset.click.topf[3])?e:!(e-this.offset.click.topf[2])?h:!(h-this.offset.click.left< +f[0])?h-c.grid[0]:h+c.grid[0]:h)}return{top:e-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollTop():g?0:d.scrollTop()),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollLeft():g?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"); +this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=!1},_trigger:function(a,c,d){d=d||this._uiHash();b.ui.plugin.call(this,a,[c,d]);"drag"==a&&(this.positionAbs=this._convertPositionTo("absolute"));return b.Widget.prototype._trigger.call(this,a,c,d)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});b.extend(b.ui.draggable,{version:"1.8.14"}); +b.ui.plugin.add("draggable","connectToSortable",{start:function(a,c){var d=b(this).data("draggable"),g=d.options,h=b.extend({},c,{item:d.element});d.sortables=[];b(g.connectToSortable).each(function(){var c=b.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",a,h))})},stop:function(a,c){var d=b(this).data("draggable"),g=b.extend({},c,{item:d.element});b.each(d.sortables,function(){this.instance.isOver? +(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(a),this.instance.options.helper=this.instance.options._helper,"original"==d.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",a,g))})},drag:function(a,c){var d=b(this).data("draggable"),g=this;b.each(d.sortables,function(){this.instance.positionAbs= +d.positionAbs;this.instance.helperProportions=d.helperProportions;this.instance.offset.click=d.offset.click;this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=b(g).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},a.target=this.instance.currentItem[0],this.instance._mouseCapture(a, +!0),this.instance._mouseStart(a,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",a),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(a)):this.instance.isOver&& +(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",a,this.instance._uiHash(this.instance)),this.instance._mouseStop(a,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",a),d.dropped=!1)})}});b.ui.plugin.add("draggable","cursor",{start:function(){var a=b("body"),c=b(this).data("draggable").options; +a.css("cursor")&&(c._cursor=a.css("cursor"));a.css("cursor",c.cursor)},stop:function(){var a=b(this).data("draggable").options;a._cursor&&b("body").css("cursor",a._cursor)}});b.ui.plugin.add("draggable","opacity",{start:function(a,c){var d=b(c.helper),g=b(this).data("draggable").options;d.css("opacity")&&(g._opacity=d.css("opacity"));d.css("opacity",g.opacity)},stop:function(a,c){var d=b(this).data("draggable").options;d._opacity&&b(c.helper).css("opacity",d._opacity)}});b.ui.plugin.add("draggable", +"scroll",{start:function(){var a=b(this).data("draggable");a.scrollParent[0]!=document&&"HTML"!=a.scrollParent[0].tagName&&(a.overflowOffset=a.scrollParent.offset())},drag:function(a){var c=b(this).data("draggable"),d=c.options,g=!1;if(c.scrollParent[0]!=document&&"HTML"!=c.scrollParent[0].tagName){if(!d.axis||"x"!=d.axis)c.overflowOffset.top+c.scrollParent[0].offsetHeight-a.pageY=k&&e<=l||f>=k&&f<=l||el)&&(g>=i&&g<=j||h>=i&&h<=j||gj);default:return!1}}; +b.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,c){var d=b.ui.ddmanager.droppables[a.options.scope]||[],g=c?c.type:null,h=(a.currentItem||a.element).find(":data(droppable)").andSelf(),e=0;a:for(;e').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})), +this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize", +"none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize());this.handles=a.handles||(!b(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){"all"== +this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw");var h=this.handles.split(",");this.handles={};for(var e=0;e');/sw|se|ne|nw/.test(f)&&i.css({zIndex:++a.zIndex});"se"==f&&i.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(i)}}this._renderAxis=function(f){var f=f||this.element,c;for(c in this.handles){this.handles[c].constructor==String&&(this.handles[c]= +b(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var a=b(this.handles[c],this.element),d=0,d=/sw|ne|nw|se|n|s/.test(c)?a.outerHeight():a.outerWidth(),a=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");f.css(a,d);this._proportionallyResize()}b(this.handles[c])}};this._renderAxis(this.element);this._handles=b(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!c.resizing){if(this.className)var b=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);c.axis=b&&b[1]?b[1]:"se"}});a.autoHide&&(this._handles.hide(),b(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){b(this).removeClass("ui-resizable-autohide");c._handles.show()}},function(){if(!a.disabled&&!c.resizing){b(this).addClass("ui-resizable-autohide");c._handles.hide()}}));this._mouseInit()},destroy:function(){this._mouseDestroy(); +var c=function(c){b(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){c(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);c(this.originalElement);return this},_mouseCapture:function(c){var a= +!1,h;for(h in this.handles)b(this.handles[h])[0]==c.target&&(a=!0);return!this.options.disabled&&a},_mouseStart:function(c){var g=this.options,h=this.element.position(),e=this.element;this.resizing=!0;this.documentScroll={top:b(document).scrollTop(),left:b(document).scrollLeft()};(e.is(".ui-draggable")||/absolute/.test(e.css("position")))&&e.css({position:"absolute",top:h.top,left:h.left});b.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy(); +var h=a(this.helper.css("left")),f=a(this.helper.css("top"));g.containment&&(h+=b(g.containment).scrollLeft()||0,f+=b(g.containment).scrollTop()||0);this.offset=this.helper.offset();this.position={left:h,top:f};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:h,top:f};this.sizeDiff={width:e.outerWidth()- +e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:c.pageX,top:c.pageY};this.aspectRatio="number"==typeof g.aspectRatio?g.aspectRatio:this.originalSize.width/this.originalSize.height||1;g=b(".ui-resizable-"+this.axis).css("cursor");b("body").css("cursor","auto"==g?this.axis+"-resize":g);e.addClass("ui-resizable-resizing");this._propagate("start",c);return!0},_mouseDrag:function(b){var c=this.helper,a=this.originalMousePosition,e=this._change[this.axis];if(!e)return!1;a= +e.apply(this,[b,b.pageX-a.left||0,b.pageY-a.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)a=this._updateRatio(a,b);a=this._respectSize(a,b);this._propagate("resize",b);c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(a);this._trigger("resize",b,this.ui());return!1},_mouseStop:function(c){this.resizing= +!1;var a=this.options;if(this._helper){var h=this._proportionallyResizeElements,e=h.length&&/textarea/i.test(h[0].nodeName),h=e&&b.ui.hasScroll(h[0],"left")?0:this.sizeDiff.height,e=e?0:this.sizeDiff.width,e={width:this.helper.width()-e,height:this.helper.height()-h},h=parseInt(this.element.css("left"),10)+(this.position.left-this.originalPosition.left)||null,f=parseInt(this.element.css("top"),10)+(this.position.top-this.originalPosition.top)||null;a.animate||this.element.css(b.extend(e,{top:f,left:h})); +this.helper.height(this.size.height);this.helper.width(this.size.width);this._helper&&!a.animate&&this._proportionallyResize()}b("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",c);this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(b){var a=this.options,h,e,f,a={minWidth:c(a.minWidth)?a.minWidth:0,maxWidth:c(a.maxWidth)?a.maxWidth:Infinity,minHeight:c(a.minHeight)?a.minHeight:0,maxHeight:c(a.maxHeight)?a.maxHeight:Infinity}; +if(this._aspectRatio||b)if(b=a.minHeight*this.aspectRatio,e=a.minWidth/this.aspectRatio,h=a.maxHeight*this.aspectRatio,f=a.maxWidth/this.aspectRatio,b>a.minWidth&&(a.minWidth=b),e>a.minHeight&&(a.minHeight=e),hb.width,j=c(b.height)&&a.minHeight&&a.minHeight> +b.height;i&&(b.width=a.minWidth);j&&(b.height=a.minHeight);e&&(b.width=a.maxWidth);f&&(b.height=a.maxHeight);var k=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,m=/sw|nw|w/.test(h),h=/nw|ne|n/.test(h);i&&m&&(b.left=k-a.minWidth);e&&m&&(b.left=k-a.maxWidth);j&&h&&(b.top=l-a.minHeight);f&&h&&(b.top=l-a.maxHeight);(a=!b.width&&!b.height)&&!b.left&&b.top?b.top=null:a&&(!b.top&&b.left)&&(b.left=null);return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var c= +this.helper||this.element,a=0;a');var a=b.browser.msie&&7>b.browser.version,h=a?1:0,a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-h+"px",top:this.elementOffset.top- +h+"px",zIndex:++c.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,c){return{width:this.originalSize.width+c}},w:function(b,c){return{left:this.originalPosition.left+c,width:this.originalSize.width-c}},n:function(b,c,a){return{top:this.originalPosition.top+a,height:this.originalSize.height-a}},s:function(b,c,a){return{height:this.originalSize.height+a}},se:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.e.apply(this, +[c,a,h]))},sw:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[c,a,h]))},ne:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[c,a,h]))},nw:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[c,a,h]))}},_propagate:function(c,a){b.ui.plugin.call(this,c,[a,this.ui()]);"resize"!=c&&this._trigger(c,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement, +element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});b.extend(b.ui.resizable,{version:"1.8.14"});b.ui.plugin.add("resizable","alsoResize",{start:function(){var c=b(this).data("resizable").options,a=function(c){b(c).each(function(){var c=b(this);c.data("resizable-alsoresize",{width:parseInt(c.width(),10),height:parseInt(c.height(),10),left:parseInt(c.css("left"),10),top:parseInt(c.css("top"),10),position:c.css("position")})})}; +"object"==typeof c.alsoResize&&!c.alsoResize.parentNode?c.alsoResize.length?(c.alsoResize=c.alsoResize[0],a(c.alsoResize)):b.each(c.alsoResize,function(b){a(b)}):a(c.alsoResize)},resize:function(c,a){var h=b(this).data("resizable"),e=h.options,f=h.originalSize,i=h.originalPosition,j={height:h.size.height-f.height||0,width:h.size.width-f.width||0,top:h.position.top-i.top||0,left:h.position.left-i.left||0},k=function(c,f){b(c).each(function(){var c=b(this),d=b(this).data("resizable-alsoresize"),i={}, +e=f&&f.length?f:c.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];b.each(e,function(b,c){var a=(d[c]||0)+(j[c]||0);a&&0<=a&&(i[c]=a||null)});b.browser.opera&&/relative/.test(c.css("position"))&&(h._revertToRelativePosition=!0,c.css({position:"absolute",top:"auto",left:"auto"}));c.css(i)})};"object"==typeof e.alsoResize&&!e.alsoResize.nodeType?b.each(e.alsoResize,function(b,c){k(b,c)}):k(e.alsoResize)},stop:function(){var c=b(this).data("resizable"),a=c.options, +h=function(c){b(c).each(function(){var c=b(this);c.css({position:c.data("resizable-alsoresize").position})})};c._revertToRelativePosition&&(c._revertToRelativePosition=!1,"object"==typeof a.alsoResize&&!a.alsoResize.nodeType?b.each(a.alsoResize,function(b){h(b)}):h(a.alsoResize));b(this).removeData("resizable-alsoresize")}});b.ui.plugin.add("resizable","animate",{stop:function(c){var a=b(this).data("resizable"),h=a.options,e=a._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName), +i=f&&b.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height,f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-i},i=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null,j=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(b.extend(f,j&&i?{top:j,left:i}:{}),{duration:h.animateDuration,easing:h.animateEasing,step:function(){var f={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10), +top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&b(e[0]).css({width:f.width,height:f.height});a._updateCache(f);a._propagate("resize",c)}})}});b.ui.plugin.add("resizable","containment",{start:function(){var c=b(this).data("resizable"),g=c.element,h=c.options.containment;if(g=h instanceof b?h.get(0):/parent/.test(h)?g.parent().get(0):h)if(c.containerElement=b(g),/document/.test(h)||h==document)c.containerOffset={left:0,top:0},c.containerPosition={left:0,top:0}, +c.parentData={element:b(document),left:0,top:0,width:b(document).width(),height:b(document).height()||document.body.parentNode.scrollHeight};else{var e=b(g),f=[];b(["Top","Right","Left","Bottom"]).each(function(b,c){f[b]=a(e.css("padding"+c))});c.containerOffset=e.offset();c.containerPosition=e.position();c.containerSize={height:e.innerHeight()-f[3],width:e.innerWidth()-f[1]};var h=c.containerOffset,i=c.containerSize.height,j=c.containerSize.width,j=b.ui.hasScroll(g,"left")?g.scrollWidth:j,i=b.ui.hasScroll(g)? +g.scrollHeight:i;c.parentData={element:g,left:h.left,top:h.top,width:j,height:i}}},resize:function(c){var a=b(this).data("resizable"),h=a.options,e=a.containerOffset,f=a.position,c=a._aspectRatio||c.shiftKey,i={top:0,left:0},j=a.containerElement;j[0]!=document&&/static/.test(j.css("position"))&&(i=e);if(f.left<(a._helper?e.left:0))a.size.width+=a._helper?a.position.left-e.left:a.position.left-i.left,c&&(a.size.height=a.size.width/h.aspectRatio),a.position.left=h.helper?e.left:0;if(f.top<(a._helper? +e.top:0))a.size.height+=a._helper?a.position.top-e.top:a.position.top,c&&(a.size.width=a.size.height*h.aspectRatio),a.position.top=a._helper?e.top:0;a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;h=Math.abs(a.offset.left-i.left+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-i.top:a.offset.top-e.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);i=/relative|absolute/.test(a.containerElement.css("position"));f&&i&&(h-=a.parentData.left); +h+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-h,c&&(a.size.height=a.size.width/a.aspectRatio));e+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-e,c&&(a.size.width=a.size.height*a.aspectRatio))},stop:function(){var a=b(this).data("resizable"),c=a.options,h=a.containerOffset,e=a.containerPosition,f=a.containerElement,i=b(a.helper),j=i.offset(),k=i.outerWidth()-a.sizeDiff.width,i=i.outerHeight()-a.sizeDiff.height;a._helper&&(!c.animate&&/relative/.test(f.css("position")))&& +b(this).css({left:j.left-e.left-h.left,width:k,height:i});a._helper&&(!c.animate&&/static/.test(f.css("position")))&&b(this).css({left:j.left-e.left-h.left,width:k,height:i})}});b.ui.plugin.add("resizable","ghost",{start:function(){var a=b(this).data("resizable"),c=a.options,h=a.size;a.ghost=a.originalElement.clone();a.ghost.css({opacity:0.25,display:"block",position:"relative",height:h.height,width:h.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof c.ghost?c.ghost: +"");a.ghost.appendTo(a.helper)},resize:function(){var a=b(this).data("resizable");a.ghost&&a.ghost.css({position:"relative",height:a.size.height,width:a.size.width})},stop:function(){var a=b(this).data("resizable");a.ghost&&a.helper&&a.helper.get(0).removeChild(a.ghost.get(0))}});b.ui.plugin.add("resizable","grid",{resize:function(){var a=b(this).data("resizable"),c=a.options,h=a.size,e=a.originalSize,f=a.originalPosition,i=a.axis;c.grid="number"==typeof c.grid?[c.grid,c.grid]:c.grid;var j=Math.round((h.width- +e.width)/(c.grid[0]||1))*(c.grid[0]||1),c=Math.round((h.height-e.height)/(c.grid[1]||1))*(c.grid[1]||1);/^(se|s|e)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):/^(ne)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c):(/^(sw)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c),a.position.left=f.left-j)}});var a=function(b){return parseInt(b,10)||0},c=function(b){return!isNaN(parseInt(b, +10))}})(jQuery); +(function(b){b.widget("ui.selectable",b.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var a=this;this.element.addClass("ui-selectable");this.dragged=!1;var c;this.refresh=function(){c=b(a.options.filter,a.element[0]);c.each(function(){var a=b(this),c=a.offset();b.data(this,"selectable-item",{element:this,$element:a,left:c.left,top:c.top,right:c.left+a.outerWidth(),bottom:c.top+a.outerHeight(),startselected:!1,selected:a.hasClass("ui-selected"),selecting:a.hasClass("ui-selecting"), +unselecting:a.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=b("
              ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(a){var c=this;this.opos=[a.pageX,a.pageY];if(!this.options.disabled){var d= +this.options;this.selectees=b(d.filter,this.element[0]);this._trigger("start",a);b(d.appendTo).append(this.helper);this.helper.css({left:a.clientX,top:a.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var d=b.data(this,"selectable-item");d.startselected=!0;a.metaKey||(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",a,{unselecting:d.element}))});b(a.target).parents().andSelf().each(function(){var d= +b.data(this,"selectable-item");if(d){var h=!a.metaKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(h?"ui-unselecting":"ui-selected").addClass(h?"ui-selecting":"ui-unselecting");d.unselecting=!h;d.selecting=h;(d.selected=h)?c._trigger("selecting",a,{selecting:d.element}):c._trigger("unselecting",a,{unselecting:d.element});return!1}})}},_mouseDrag:function(a){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,g=this.opos[0],h=this.opos[1],e=a.pageX,f=a.pageY;if(g> +e)var i=e,e=g,g=i;h>f&&(i=f,f=h,h=i);this.helper.css({left:g,top:h,width:e-g,height:f-h});this.selectees.each(function(){var i=b.data(this,"selectable-item");if(i&&i.element!=c.element[0]){var k=false;d.tolerance=="touch"?k=!(i.left>e||i.rightf||i.bottomg&&i.righth&&i.bottom *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var b=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh(); +this.floating=this.items.length?"x"===b.axis||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;0<=b;b--)this.items[b].item.removeData("sortable-item");return this},_setOption:function(a,c){"disabled"===a?(this.options[a]= +c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):b.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,c){if(this.reverting||this.options.disabled||"static"==this.options.type)return!1;this._refreshItems(a);var d=null,g=this;b(a.target).parents().each(function(){if(b.data(this,"sortable-item")==g)return d=b(this),!1});b.data(a.target,"sortable-item")==g&&(d=b(a.target));if(!d)return!1;if(this.options.handle&&!c){var h=!1;b(this.options.handle,d).find("*").andSelf().each(function(){this== +a.target&&(h=!0)});if(!h)return!1}this.currentItem=d;this._removeCurrentsFromItems();return!0},_mouseStart:function(a,c,d){c=this.options;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition= +this.helper.css("position");b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder(); +c.containment&&this._setContainment();c.cursor&&(b("body").css("cursor")&&(this._storedCursor=b("body").css("cursor")),b("body").css("cursor",c.cursor));c.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",c.opacity));c.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",c.zIndex));this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()); +this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(d=this.containers.length-1;0<=d;d--)this.containers[d]._trigger("activate",a,this._uiHash(this));b.ui.ddmanager&&(b.ui.ddmanager.current=this);b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.dragging=!0;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return!0},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageYb[this.floating?"width":"height"]?g+k>i&&g+ke&&c+lthis.containment[2]&&(h=this.containment[2]+this.offset.click.left),a.pageY-this.offset.click.top>this.containment[3]&&(e=this.containment[3]+this.offset.click.top)),c.grid))e=this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1],e=this.containment?!(e-this.offset.click.topthis.containment[3])?e:!(e-this.offset.click.top< +this.containment[1])?e-c.grid[1]:e+c.grid[1]:e,h=this.originalPageX+Math.round((h-this.originalPageX)/c.grid[0])*c.grid[0],h=this.containment?!(h-this.offset.click.leftthis.containment[2])?h:!(h-this.offset.click.left li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,c=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");a.headers= +a.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||b(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||b(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||b(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||b(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(c.navigation){var d=a.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var g=d.closest(".ui-accordion-header");a.active=g.length?g:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", +function(b){return a._keydown(b)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);b.browser.safari||a.headers.find("a").attr("tabIndex",-1);c.event&&a.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(b){a._clickHandler.call(a,b,this);b.preventDefault()})},_createIcons:function(){var a= +this.options;a.icons&&(b("").addClass("ui-icon "+a.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");(a.autoHeight||a.fillHeight)&&c.css("height","");return b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);"active"==a&&this.activate(c);"icons"==a&&(this._destroyIcons(), +c&&this._createIcons());if("disabled"==a)this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!this.options.disabled&&!a.altKey&&!a.ctrlKey){var c=b.ui.keyCode,d=this.headers.length,g=this.headers.index(a.target),h=!1;switch(a.keyCode){case c.RIGHT:case c.DOWN:h=this.headers[(g+1)%d];break;case c.LEFT:case c.UP:h=this.headers[(g-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:a.target},a.target),a.preventDefault()}return h? +(b(a.target).attr("tabIndex",-1),b(h).attr("tabIndex",0),h.focus(),!1):!0}},resize:function(){var a=this.options,c;if(a.fillSpace){if(b.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height();b.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){c-=b(this).outerHeight(!0)});this.headers.next().each(function(){b(this).height(Math.max(0,c-b(this).innerHeight()+b(this).height()))}).css("overflow", +"auto")}else a.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,b(this).height("").height())}).height(c));return this},activate:function(b){this.options.active=b;b=this._findActive(b)[0];this._clickHandler({target:b},b);return this},_findActive:function(a){return a?"number"===typeof a?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):!1===a?b([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,c){var d=this.options;if(!d.disabled)if(a.target){var g=b(a.currentTarget|| +c),h=g[0]===this.active[0];d.active=d.collapsible&&h?!1:this.headers.index(g);if(!(this.running||!d.collapsible&&h)){var e=this.active,f=g.next(),i=this.active.next(),j={options:d,newHeader:h&&d.collapsible?b([]):g,oldHeader:this.active,newContent:h&&d.collapsible?b([]):f,oldContent:i},k=this.headers.index(this.active[0])>this.headers.index(g[0]);this.active=h?b([]):g;this._toggle(f,i,j,h,k);e.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +h||(g.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),g.next().addClass("ui-accordion-content-active"))}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var i=this.active.next(), +j={options:d,newHeader:b([]),oldHeader:d.active,newContent:b([]),oldContent:i},f=this.active=b([]);this._toggle(f,i,j)}},_toggle:function(a,c,d,g,h){var e=this,f=e.options;e.toShow=a;e.toHide=c;e.data=d;var i=function(){if(e)return e._completed.apply(e,arguments)};e._trigger("changestart",null,e.data);e.running=0===c.size()?a.size():c.size();if(f.animated){d={};d=f.collapsible&&g?{toShow:b([]),toHide:c,complete:i,down:h,autoHeight:f.autoHeight||f.fillSpace}:{toShow:a,toHide:c,complete:i,down:h,autoHeight:f.autoHeight|| +f.fillSpace};f.proxied||(f.proxied=f.animated);f.proxiedDuration||(f.proxiedDuration=f.duration);f.animated=b.isFunction(f.proxied)?f.proxied(d):f.proxied;f.duration=b.isFunction(f.proxiedDuration)?f.proxiedDuration(d):f.proxiedDuration;var g=b.ui.accordion.animations,j=f.duration,k=f.animated;k&&(!g[k]&&!b.easing[k])&&(k="slide");g[k]||(g[k]=function(b){this.slide(b,{easing:k,duration:j||700})});g[k](d)}else f.collapsible&&g?a.toggle():(c.hide(),a.show()),i(!0);c.prev().attr({"aria-expanded":"false", +"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(b){this.running=b?0:--this.running;this.running||(this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data))}});b.extend(b.ui.accordion,{version:"1.8.14", +animations:{slide:function(a,c){a=b.extend({easing:"swing",duration:300},a,c);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),g=0,h={},e={},f,i=a.toShow;f=i[0].style.width;i.width(parseInt(i.parent().width(),10)-parseInt(i.css("paddingLeft"),10)-parseInt(i.css("paddingRight"),10)-(parseInt(i.css("borderLeftWidth"),10)||0)-(parseInt(i.css("borderRightWidth"),10)||0));b.each(["height","paddingTop","paddingBottom"],function(c,f){e[f]="hide";var i=(""+b.css(a.toShow[0],f)).match(/^([\d+-.]+)(.*)$/); +h[f]={value:i[1],unit:i[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(e,{step:function(b,c){"height"==c.prop&&(g=0===c.end-c.start?0:(c.now-c.start)/(c.end-c.start));a.toShow[0].style[c.prop]=g*h[c.prop].value+h[c.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:f,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide", +paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(b){this.slide(b,{easing:b.down?"easeOutBounce":"swing",duration:b.down?1E3:200})}}})})(jQuery); +(function(b){var a=0;b.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var c=this,a=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(a){if(!c.options.disabled&&!c.element.attr("readonly")){g=!1;var d= +b.ui.keyCode;switch(a.keyCode){case d.PAGE_UP:c._move("previousPage",a);break;case d.PAGE_DOWN:c._move("nextPage",a);break;case d.UP:c._move("previous",a);a.preventDefault();break;case d.DOWN:c._move("next",a);a.preventDefault();break;case d.ENTER:case d.NUMPAD_ENTER:c.menu.active&&(g=!0,a.preventDefault());case d.TAB:if(!c.menu.active)break;c.menu.select(a);break;case d.ESCAPE:c.element.val(c.term);c.close(a);break;default:clearTimeout(c.searching),c.searching=setTimeout(function(){c.term!=c.element.val()&& +(c.selectedItem=null,c.search(null,a))},c.options.delay)}}}).bind("keypress.autocomplete",function(b){g&&(g=!1,b.preventDefault())}).bind("focus.autocomplete",function(){c.options.disabled||(c.selectedItem=null,c.previous=c.element.val())}).bind("blur.autocomplete",function(b){c.options.disabled||(clearTimeout(c.searching),c.closing=setTimeout(function(){c.close(b);c._change(b)},150))});this._initSource();this.response=function(){return c._response.apply(c,arguments)};this.menu=b("
                ").addClass("ui-autocomplete").appendTo(b(this.options.appendTo|| +"body",a)[0]).mousedown(function(a){var d=c.menu.element[0];b(a.target).closest(".ui-menu-item").length||setTimeout(function(){b(document).one("mousedown",function(a){a.target!==c.element[0]&&(a.target!==d&&!b.ui.contains(d,a.target))&&c.close()})},1);setTimeout(function(){clearTimeout(c.closing)},13)}).menu({focus:function(b,a){var f=a.item.data("item.autocomplete");!1!==c._trigger("focus",b,{item:f})&&/^key/.test(b.originalEvent.type)&&c.element.val(f.value)},selected:function(b,e){var f=e.item.data("item.autocomplete"), +i=c.previous;c.element[0]!==a.activeElement&&(c.element.focus(),c.previous=i,setTimeout(function(){c.previous=i;c.selectedItem=f},1));!1!==c._trigger("select",b,{item:f})&&c.element.val(f.value);c.term=c.element.val();c.close(b);c.selectedItem=f},blur:function(){c.menu.element.is(":visible")&&c.element.val()!==c.term&&c.element.val(c.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");b.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); +this.menu.element.remove();b.Widget.prototype.destroy.call(this)},_setOption:function(a,d){b.Widget.prototype._setOption.apply(this,arguments);"source"===a&&this._initSource();"appendTo"===a&&this.menu.element.appendTo(b(d||"body",this.element[0].ownerDocument)[0]);"disabled"===a&&(d&&this.xhr)&&this.xhr.abort()},_initSource:function(){var c=this,d,g;b.isArray(this.options.source)?(d=this.options.source,this.source=function(a,c){c(b.ui.autocomplete.filter(d,a.term))}):"string"===typeof this.options.source? +(g=this.options.source,this.source=function(d,e){c.xhr&&c.xhr.abort();c.xhr=b.ajax({url:g,data:d,dataType:"json",autocompleteRequest:++a,success:function(b){this.autocompleteRequest===a&&e(b)},error:function(){this.autocompleteRequest===a&&e([])}})}):this.source=this.options.source},search:function(b,a){b=null!=b?b:this.element.val();this.term=this.element.val();if(b.length").data("item.autocomplete",d).append(b("").text(d.label)).appendTo(a)},_move:function(b,a){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(b)||this.menu.last()&& +/^next/.test(b))this.element.val(this.term),this.menu.deactivate();else this.menu[b](a);else this.search(null,a)},widget:function(){return this.menu.element}});b.extend(b.ui.autocomplete,{escapeRegex:function(b){return b.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,d){var g=RegExp(b.ui.autocomplete.escapeRegex(d),"i");return b.grep(a,function(b){return g.test(b.label||b.value||b)})}})})(jQuery); +(function(b){b.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){b(c.target).closest(".ui-menu-item a").length&&(c.preventDefault(),a.select(c))});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,b(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(b,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,g=this.element.scrollTop(),h=this.element.height();0>d?this.element.scrollTop(g+d):d>=h&&this.element.scrollTop(g+d-h+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",b,{item:c})},deactivate:function(){this.active&& +(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(b){this.move("next",".ui-menu-item:first",b)},previous:function(b){this.move("prev",".ui-menu-item:last",b)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(b,c,d){this.active?(b=this.active[b+"All"](".ui-menu-item").eq(0),b.length?this.activate(d, +b):this.activate(d,this.element.children(c))):this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var c=this.active.offset().top,d=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var a=b(this).offset().top-c-d+b(this).height();return 10>a&&-10a&&-10").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),d=this.options.icons,h=d.primary&&d.secondary,e=[];d.primary||d.secondary?(this.options.text&&e.push("ui-button-text-icon"+(h?"s":d.primary?"-primary":"-secondary")),d.primary&&a.prepend(""),d.secondary&&a.append(""),this.options.text||(e.push(h?"ui-button-icons-only": +"ui-button-icon-only"),this.hasTitle||a.attr("title",c))):e.push("ui-button-text-only");a.addClass(e.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){"disabled"===a&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a="ltr"===this.element.css("direction"); +this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); +b.Widget.prototype.destroy.call(this)}})})(jQuery); +(function(b,a){var c={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},d={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},g=b.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};b.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(a){var c= +b(this).css(a).offset().top;0>c&&b(this).css("top",a.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");"string"!==typeof this.originalTitle&&(this.originalTitle="");this.options.title=this.options.title||this.originalTitle;var a=this,c=a.options,f=c.title||" ",i=b.ui.dialog.getTitleId(a.element),d=(a.uiDialog=b("
                ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +c.dialogClass).css({zIndex:c.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(f){if(c.closeOnEscape&&f.keyCode&&f.keyCode===b.ui.keyCode.ESCAPE){a.close(f);f.preventDefault()}}).attr({role:"dialog","aria-labelledby":i}).mousedown(function(b){a.moveToTop(false,b)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(d);var g=(a.uiDialogTitlebar=b("
                ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(d), +l=b('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){l.addClass("ui-state-hover")},function(){l.removeClass("ui-state-hover")}).focus(function(){l.addClass("ui-state-focus")}).blur(function(){l.removeClass("ui-state-focus")}).click(function(b){a.close(b);return false}).appendTo(g);(a.uiDialogTitlebarCloseText=b("")).addClass("ui-icon ui-icon-closethick").text(c.closeText).appendTo(l);b("").addClass("ui-dialog-title").attr("id", +i).html(f).prependTo(g);b.isFunction(c.beforeclose)&&!b.isFunction(c.beforeClose)&&(c.beforeClose=c.beforeclose);g.find("*").add(g).disableSelection();c.draggable&&b.fn.draggable&&a._makeDraggable();c.resizable&&b.fn.resizable&&a._makeResizable();a._createButtons(c.buttons);a._isOpen=!1;b.fn.bgiframe&&d.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){this.overlay&&this.overlay.destroy();this.uiDialog.hide();this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +this.uiDialog.remove();this.originalTitle&&this.element.attr("title",this.originalTitle);return this},widget:function(){return this.uiDialog},close:function(a){var c=this,f,d;if(!1!==c._trigger("beforeClose",a))return c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",a)}):(c.uiDialog.hide(),c._trigger("close",a)),b.ui.dialog.overlay.resize(),c.options.modal&&(f=0,b(".ui-dialog").each(function(){if(this!== +c.uiDialog[0]){d=b(this).css("z-index");isNaN(d)||(f=Math.max(f,d))}}),b.ui.dialog.maxZ=f),c},isOpen:function(){return this._isOpen},moveToTop:function(a,c){var f=this.options;if(f.modal&&!a||!f.stack&&!f.modal)return this._trigger("focus",c);f.zIndex>b.ui.dialog.maxZ&&(b.ui.dialog.maxZ=f.zIndex);this.overlay&&(b.ui.dialog.maxZ+=1,this.overlay.$el.css("z-index",b.ui.dialog.overlay.maxZ=b.ui.dialog.maxZ));f={scrollTop:this.element.attr("scrollTop"),scrollLeft:this.element.attr("scrollLeft")};b.ui.dialog.maxZ+= +1;this.uiDialog.css("z-index",b.ui.dialog.maxZ);this.element.attr(f);this._trigger("focus",c);return this},open:function(){if(!this._isOpen){var a=this.options,c=this.uiDialog;this.overlay=a.modal?new b.ui.dialog.overlay(this):null;this._size();this._position(a.position);c.show(a.show);this.moveToTop(!0);a.modal&&c.bind("keypress.ui-dialog",function(a){if(a.keyCode===b.ui.keyCode.TAB){var c=b(":tabbable",this),d=c.filter(":first"),c=c.filter(":last");if(a.target===c[0]&&!a.shiftKey)return d.focus(1), +!1;if(a.target===d[0]&&a.shiftKey)return c.focus(1),!1}});b(this.element.find(":tabbable").get().concat(c.find(".ui-dialog-buttonpane :tabbable").get().concat(c.get()))).eq(0).focus();this._isOpen=!0;this._trigger("open");return this}},_createButtons:function(a){var c=this,f=!1,d=b("
                ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),j=b("
                ").addClass("ui-dialog-buttonset").appendTo(d);c.uiDialog.find(".ui-dialog-buttonpane").remove();"object"===typeof a&& +null!==a&&b.each(a,function(){return!(f=!0)});f&&(b.each(a,function(a,f){var f=b.isFunction(f)?{click:f,text:a}:f,d=b('').click(function(){f.click.apply(c.element[0],arguments)}).appendTo(j);b.each(f,function(b,a){if("click"!==b)if(b in g)d[b](a);else d.attr(b,a)});b.fn.button&&d.button()}),d.appendTo(c.uiDialog))},_makeDraggable:function(){function a(b){return{position:b.position,offset:b.offset}}var c=this,f=c.options,d=b(document),g;c.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", +handle:".ui-dialog-titlebar",containment:"document",start:function(d,i){g="auto"===f.height?"auto":b(this).height();b(this).height(b(this).height()).addClass("ui-dialog-dragging");c._trigger("dragStart",d,a(i))},drag:function(b,f){c._trigger("drag",b,a(f))},stop:function(k,l){f.position=[l.position.left-d.scrollLeft(),l.position.top-d.scrollTop()];b(this).removeClass("ui-dialog-dragging").height(g);c._trigger("dragStop",k,a(l));b.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function d(b){return{originalPosition:b.originalPosition, +originalSize:b.originalSize,position:b.position,size:b.size}}var c=c===a?this.options.resizable:c,f=this,i=f.options,g=f.uiDialog.css("position"),c="string"===typeof c?c:"n,e,s,w,se,sw,ne,nw";f.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:f.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:f._minHeight(),handles:c,start:function(a,c){b(this).addClass("ui-dialog-resizing");f._trigger("resizeStart",a,d(c))},resize:function(b,a){f._trigger("resize", +b,d(a))},stop:function(a,c){b(this).removeClass("ui-dialog-resizing");i.height=b(this).height();i.width=b(this).width();f._trigger("resizeStop",a,d(c));b.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var b=this.options;return"auto"===b.height?b.minHeight:Math.min(b.minHeight,b.height)},_position:function(a){var c=[],f=[0,0],d;if(a){if("string"===typeof a||"object"===typeof a&&"0"in a)c=a.split?a.split(" "): +[a[0],a[1]],1===c.length&&(c[1]=c[0]),b.each(["left","top"],function(b,a){+c[b]===c[b]&&(f[b]=c[b],c[b]=a)}),a={my:c.join(" "),at:c.join(" "),offset:f.join(" ")};a=b.extend({},b.ui.dialog.prototype.options.position,a)}else a=b.ui.dialog.prototype.options.position;(d=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(b.extend({of:window},a));d||this.uiDialog.hide()},_setOptions:function(a){var g=this,f={},i=!1;b.each(a,function(b,a){g._setOption(b,a);b in +c&&(i=!0);b in d&&(f[b]=a)});i&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(a,c){var f=this.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":this._createButtons(c);break;case "closeText":this.uiDialogTitlebarCloseText.text(""+c);break;case "dialogClass":f.removeClass(this.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+c);break;case "disabled":c?f.addClass("ui-dialog-disabled"): +f.removeClass("ui-dialog-disabled");break;case "draggable":var d=f.is(":data(draggable)");d&&!c&&f.draggable("destroy");!d&&c&&this._makeDraggable();break;case "position":this._position(c);break;case "resizable":(d=f.is(":data(resizable)"))&&!c&&f.resizable("destroy");d&&"string"===typeof c&&f.resizable("option","handles",c);!d&&!1!==c&&this._makeResizable(c);break;case "title":b(".ui-dialog-title",this.uiDialogTitlebar).html(""+(c||" "))}b.Widget.prototype._setOption.apply(this,arguments)}, +_size:function(){var a=this.options,c,f,d=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});a.minWidth>a.width&&(a.width=a.minWidth);c=this.uiDialog.css({height:"auto",width:a.width}).height();f=Math.max(0,a.minHeight-c);"auto"===a.height?b.support.minHeight?this.element.css({minHeight:f,height:"auto"}):(this.uiDialog.show(),a=this.element.css("height","auto").height(),d||this.uiDialog.hide(),this.element.height(Math.max(a,f))):this.element.height(Math.max(a.height- +c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});b.extend(b.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(b){b=b.attr("id");b||(b=this.uuid+=1);return"ui-dialog-title-"+b},overlay:function(a){this.$el=b.ui.dialog.overlay.create(a)}});b.extend(b.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:b.map("focus mousedown mouseup keydown keypress click".split(" "),function(b){return b+".dialog-overlay"}).join(" "), +create:function(a){0===this.instances.length&&(setTimeout(function(){b.ui.dialog.overlay.instances.length&&b(document).bind(b.ui.dialog.overlay.events,function(a){if(b(a.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});b.fn.bgiframe&&c.bgiframe();this.instances.push(c);return c},destroy:function(a){var c=b.inArray(a,this.instances);-1!=c&&this.oldInstances.push(this.instances.splice(c,1)[0]);0===this.instances.length&&b([document,window]).unbind(".dialog-overlay");a.remove();var f=0;b.each(this.instances,function(){f=Math.max(f,this.css("z-index"))});this.maxZ=f},height:function(){var a,c;return b.browser.msie&&7>b.browser.version?(a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight), +c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),a").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+("min"===c.range||"max"===c.range?" ui-slider-range-"+c.range:""))}for(var e=d.length;e"); +this.handles=d.add(b(h.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(b){b.preventDefault()}).hover(function(){c.disabled||b(this).addClass("ui-state-hover")},function(){b(this).removeClass("ui-state-hover")}).focus(function(){c.disabled?b(this).blur():(b(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),b(this).addClass("ui-state-focus"))}).blur(function(){b(this).removeClass("ui-state-focus")});this.handles.each(function(a){b(this).data("index.ui-slider-handle", +a)});this.handles.keydown(function(c){var d=!0,g=b(this).data("index.ui-slider-handle"),e,h,m;if(!a.options.disabled){switch(c.keyCode){case b.ui.keyCode.HOME:case b.ui.keyCode.END:case b.ui.keyCode.PAGE_UP:case b.ui.keyCode.PAGE_DOWN:case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(d=!1,!a._keySliding&&(a._keySliding=!0,b(this).addClass("ui-state-active"),e=a._start(c,g),!1===e))return}m=a.options.step;e=a.options.values&&a.options.values.length?h=a.values(g): +h=a.value();switch(c.keyCode){case b.ui.keyCode.HOME:h=a._valueMin();break;case b.ui.keyCode.END:h=a._valueMax();break;case b.ui.keyCode.PAGE_UP:h=a._trimAlignValue(e+(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(e-(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:if(e===a._valueMax())return;h=a._trimAlignValue(e+m);break;case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(e===a._valueMin())return;h=a._trimAlignValue(e-m)}a._slide(c, +g,h);return d}}).keyup(function(c){var d=b(this).data("index.ui-slider-handle");a._keySliding&&(a._keySliding=!1,a._stop(c,d),a._change(c,d),b(this).removeClass("ui-state-active"))});this._refreshValue();this._animateOff=!1},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return this},_mouseCapture:function(a){var c= +this.options,d,g,h,e,f;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();d=this._normValueFromMouse({x:a.pageX,y:a.pageY});g=this._valueMax()-this._valueMin()+1;e=this;this.handles.each(function(a){var c=Math.abs(d-e.values(a));g>c&&(g=c,h=b(this),f=a)});!0===c.range&&this.values(1)===c.min&&(f+=1,h=b(this.handles[f]));if(!1===this._start(a,f))return!1;this._mouseSliding=!0;e._handleIndex=f;h.addClass("ui-state-active").focus(); +c=h.offset();this._clickOffset=!b(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-c.left-h.width()/2,top:a.pageY-c.top-h.height()/2-(parseInt(h.css("borderTopWidth"),10)||0)-(parseInt(h.css("borderBottomWidth"),10)||0)+(parseInt(h.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,f,d);return this._animateOff=!0},_mouseStart:function(){return!0},_mouseDrag:function(b){var c=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b, +this._handleIndex,c);return!1},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=!1;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(b){var c;"horizontal"===this.orientation?(c=this.elementSize.width,b=b.x-this.elementOffset.left-(this._clickOffset? +this._clickOffset.left:0)):(c=this.elementSize.height,b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));c=b/c;1c&&(c=0);"vertical"===this.orientation&&(c=1-c);b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+c*b)},_start:function(b,c){var d={handle:this.handles[c],value:this.value()};this.options.values&&this.options.values.length&&(d.value=this.values(c),d.values=this.values());return this._trigger("start",b,d)},_slide:function(b, +c,d){var g;if(this.options.values&&this.options.values.length){g=this.values(c?0:1);if(2===this.options.values.length&&!0===this.options.range&&(0===c&&d>g||1===c&&d=this._valueMax())return this._valueMax();var c=0=c&&(alignValue+=0",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
              • #{label}
              • "},_create:function(){this._tabify(!0)},_setOption:function(b,a){"selected"==b?this.options.collapsible&&a==this.options.selected||this.select(a): +(this.options[b]=a,this._tabify())},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+ ++c},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var a=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++d);return b.cookie.apply(null,[a].concat(b.makeArray(arguments)))},_ui:function(b,a){return{tab:b,panel:a,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var a= +b(this);a.html(a.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function d(a,c){a.css("display","");!b.support.opacity&&c.opacity&&a[0].style.removeAttribute("filter")}var e=this,f=this.options,i=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=b(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return b("a",this)[0]});this.panels=b([]);this.anchors.each(function(a,c){var d=b(c).attr("href"),g=d.split("#")[0],h;if(g&&(g===location.toString().split("#")[0]|| +(h=b("base")[0])&&g===h.href))d=c.hash,c.href=d;i.test(d)?e.panels=e.panels.add(e.element.find(e._sanitizeSelector(d))):d&&"#"!==d?(b.data(c,"href.tabs",d),b.data(c,"load.tabs",d.replace(/#.*$/,"")),d=e._tabId(c),c.href="#"+d,g=e.element.find("#"+d),g.length||(g=b(f.panelTemplate).attr("id",d).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(e.panels[a-1]||e.list),g.data("destroy.tabs",!0)),e.panels=e.panels.add(g)):f.disabled.push(a)});c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"), +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),f.selected===a?(location.hash&&this.anchors.each(function(b,a){if(a.hash==location.hash)return f.selected=b,!1}),"number"!==typeof f.selected&&f.cookie&&(f.selected=parseInt(e._cookie(),10)),"number"!==typeof f.selected&&this.lis.filter(".ui-tabs-selected").length&&(f.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"))),f.selected=f.selected||(this.lis.length?0:-1)):null===f.selected&&(f.selected=-1),f.selected=0<=f.selected&&this.anchors[f.selected]||0>f.selected?f.selected:0,f.disabled=b.unique(f.disabled.concat(b.map(this.lis.filter(".ui-state-disabled"),function(b){return e.lis.index(b)}))).sort(),-1!=b.inArray(f.selected,f.disabled)&&f.disabled.splice(b.inArray(f.selected,f.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"), +0<=f.selected&&this.anchors.length&&(e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(f.selected).addClass("ui-tabs-selected ui-state-active"),e.element.queue("tabs",function(){e._trigger("show",null,e._ui(e.anchors[f.selected],e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash))[0]))}),this.load(f.selected)),b(window).bind("unload",function(){e.lis.add(e.anchors).unbind(".tabs");e.lis=e.anchors=e.panels=null})):f.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[f.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");f.cookie&&this._cookie(f.selected,f.cookie);for(var c=0,j;j=this.lis[c];c++)b(j)[-1!=b.inArray(c,f.disabled)&&!b(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");!1===f.cache&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if("mouseover"!==f.event){var k=function(b,a){a.is(":not(.ui-state-disabled)")&&a.addClass("ui-state-"+b)};this.lis.bind("mouseover.tabs", +function(){k("hover",b(this))});this.lis.bind("mouseout.tabs",function(){b(this).removeClass("ui-state-hover")});this.anchors.bind("focus.tabs",function(){k("focus",b(this).closest("li"))});this.anchors.bind("blur.tabs",function(){b(this).closest("li").removeClass("ui-state-focus")})}var l,m;f.fx&&(b.isArray(f.fx)?(l=f.fx[0],m=f.fx[1]):l=m=f.fx);var p=m?function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.hide().removeClass("ui-tabs-hide").animate(m,m.duration||"normal", +function(){d(c,m);e._trigger("show",null,e._ui(a,c[0]))})}:function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.removeClass("ui-tabs-hide");e._trigger("show",null,e._ui(a,c[0]))},n=l?function(b,a){a.animate(l,l.duration||"normal",function(){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");d(a,l);e.element.dequeue("tabs")})}:function(b,a){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");e.element.dequeue("tabs")}; +this.anchors.bind(f.event+".tabs",function(){var a=this,c=b(a).closest("li"),d=e.panels.filter(":not(.ui-tabs-hide)"),i=e.element.find(e._sanitizeSelector(a.hash));if(c.hasClass("ui-tabs-selected")&&!f.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||e.panels.filter(":animated").length||e._trigger("select",null,e._ui(this,i[0]))===false){this.blur();return false}f.selected=e.anchors.index(this);e.abort();if(f.collapsible){if(c.hasClass("ui-tabs-selected")){f.selected= +-1;f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){n(a,d)}).dequeue("tabs");this.blur();return false}if(!d.length){f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this));this.blur();return false}}f.cookie&&e._cookie(f.selected,f.cookie);if(i.length){d.length&&e.element.queue("tabs",function(){n(a,d)});e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +b.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){"string"==typeof b&&(b=this.anchors.index(this.anchors.filter("[href$="+b+"]")));return b},destroy:function(){var a=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var a= +b.data(this,"href.tabs");a&&(this.href=a);var c=b(this).unbind(".tabs");b.each(["href","load","cache"],function(b,a){c.removeData(a+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){b.data(this,"destroy.tabs")?b(this).remove():b(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});a.cookie&&this._cookie(null,a.cookie);return this},add:function(c, +d,e){e===a&&(e=this.anchors.length);var f=this,i=this.options,d=b(i.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),c=!c.indexOf("#")?c.replace("#",""):this._tabId(b("a",d)[0]);d.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+c);j.length||(j=b(i.panelTemplate).attr("id",c).data("destroy.tabs",!0));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");e>=this.lis.length?(d.appendTo(this.list),j.appendTo(this.list[0].parentNode)): +(d.insertBefore(this.lis[e]),j.insertBefore(this.panels[e]));i.disabled=b.map(i.disabled,function(b){return b>=e?++b:b});this._tabify();1==this.anchors.length&&(i.selected=0,d.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0));this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(a){var a=this._getIndex(a),c=this.options,d=this.lis.eq(a).remove(), +f=this.panels.eq(a).remove();d.hasClass("ui-tabs-selected")&&1=a?--b:b});this._tabify();this._trigger("remove",null,this._ui(d.find("a")[0],f[0]));return this},enable:function(a){var a=this._getIndex(a),c=this.options;if(-1!=b.inArray(a,c.disabled))return this.lis.eq(a).removeClass("ui-state-disabled"),c.disabled=b.grep(c.disabled,function(b){return b!= +a}),this._trigger("enable",null,this._ui(this.anchors[a],this.panels[a])),this},disable:function(b){var b=this._getIndex(b),a=this.options;b!=a.selected&&(this.lis.eq(b).addClass("ui-state-disabled"),a.disabled.push(b),a.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b])));return this},select:function(b){b=this._getIndex(b);if(-1==b)if(this.options.collapsible&&-1!=this.options.selected)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+ +".tabs");return this},load:function(a){var a=this._getIndex(a),c=this,d=this.options,f=this.anchors.eq(a)[0],i=b.data(f,"load.tabs");this.abort();if(!i||0!==this.element.queue("tabs").length&&b.data(f,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(a).addClass("ui-state-processing");if(d.spinner){var j=b("span",f);j.data("label.tabs",j.html()).html(d.spinner)}this.xhr=b.ajax(b.extend({},d.ajaxOptions,{url:i,success:function(i,j){c.element.find(c._sanitizeSelector(f.hash)).html(i);c._cleanup(); +d.cache&&b.data(f,"cache.tabs",!0);c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.success(i,j)}catch(m){}},error:function(b,i){c._cleanup();c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.error(b,i,a,f)}catch(m){}}}));c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(!1,!0);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));this.xhr&&(this.xhr.abort(),delete this.xhr);this._cleanup(); +return this},url:function(b,a){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",a);return this},length:function(){return this.anchors.length}});b.extend(b.ui.tabs,{version:"1.8.14"});b.extend(b.ui.tabs.prototype,{rotation:null,rotate:function(b,a){var c=this,f=this.options,d=c._rotate||(c._rotate=function(a){clearTimeout(c.rotation);c.rotation=setTimeout(function(){var b=f.selected;c.select(++b'))}function d(a){return a.bind("mouseout",function(a){a=b(a.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"); +a.length&&a.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){c=b(c.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!b.datepicker._isDisabledDatepicker(e.inline?a.parent()[0]:e.input[0])&&c.length)c.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),c.addClass("ui-state-hover"),c.hasClass("ui-datepicker-prev")&&c.addClass("ui-datepicker-prev-hover"),c.hasClass("ui-datepicker-next")&& +c.addClass("ui-datepicker-next-hover")})}function g(c,d){b.extend(c,d);for(var e in d)if(null==d[e]||d[e]==a)c[e]=d[e];return c}b.extend(b.ui,{datepicker:{version:"1.8.14"}});var h=(new Date).getTime(),e;b.extend(c.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(b){g(this._defaults,b||{});return this},_attachDatepicker:function(a,c){var d=null,e;for(e in this._defaults){var g= +a.getAttribute("date:"+e);if(g){d=d||{};try{d[e]=eval(g)}catch(m){d[e]=g}}}e=a.nodeName.toLowerCase();g="div"==e||"span"==e;a.id||(this.uuid+=1,a.id="dp"+this.uuid);var h=this._newInst(b(a),g);h.settings=b.extend({},c||{},d||{});"input"==e?this._connectDatepicker(a,h):g&&this._inlineDatepicker(a,h)},_newInst:function(a,c){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:c,dpDiv:!c?this.dpDiv:d(b('
                '))}},_connectDatepicker:function(a,c){var d=b(a);c.append=b([]);c.trigger=b([]);d.hasClass(this.markerClassName)||(this._attachments(d,c),d.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b,a){return this._get(c,a)}),this._autoSize(c),b.data(a,"datepicker", +c))},_attachments:function(a,c){var d=this._get(c,"appendText"),e=this._get(c,"isRTL");c.append&&c.append.remove();d&&(c.append=b(''+d+""),a[e?"before":"after"](c.append));a.unbind("focus",this._showDatepicker);c.trigger&&c.trigger.remove();d=this._get(c,"showOn");("focus"==d||"both"==d)&&a.focus(this._showDatepicker);if("button"==d||"both"==d){var d=this._get(c,"buttonText"),g=this._get(c,"buttonImage");c.trigger=b(this._get(c,"buttonImageOnly")?b("").addClass(this._triggerClass).attr({src:g, +alt:d,title:d}):b('').addClass(this._triggerClass).html(""==g?d:b("").attr({src:g,alt:d,title:d})));a[e?"before":"after"](c.trigger);c.trigger.click(function(){b.datepicker._datepickerShowing&&b.datepicker._lastInput==a[0]?b.datepicker._hideDatepicker():b.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(b){if(this._get(b,"autoSize")&&!b.inline){var a=new Date(2009,11,20),c=this._get(b,"dateFormat");if(c.match(/[DM]/)){var d=function(b){for(var a= +0,c=0,f=0;fa&&(a=b[f].length,c=f);return c};a.setMonth(d(this._get(b,c.match(/MM/)?"monthNames":"monthNamesShort")));a.setDate(d(this._get(b,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())}b.input.attr("size",this._formatDate(b,a).length)}},_inlineDatepicker:function(a,c){var d=b(a);d.hasClass(this.markerClassName)||(d.addClass(this.markerClassName).append(c.dpDiv).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b, +a){return this._get(c,a)}),b.data(a,"datepicker",c),this._setDate(c,this._getDefaultDate(c),!0),this._updateDatepicker(c),this._updateAlternate(c),c.dpDiv.show())},_dialogDatepicker:function(a,c,d,e,h){a=this._dialogInst;a||(this.uuid+=1,this._dialogInput=b(''),this._dialogInput.keydown(this._doKeyDown),b("body").append(this._dialogInput),a=this._dialogInst=this._newInst(this._dialogInput,!1), +a.settings={},b.data(this._dialogInput[0],"datepicker",a));g(a.settings,e||{});c=c&&c.constructor==Date?this._formatDate(a,c):c;this._dialogInput.val(c);this._pos=h?h.length?h:[h.pageX,h.pageY]:null;this._pos||(this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)]);this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+ +"px");a.settings.onSelect=d;this._inDialog=!0;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);b.blockUI&&b.blockUI(this.dpDiv);b.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();b.removeData(a,"datepicker");"input"==e?(d.append.remove(),d.trigger.remove(),c.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown", +this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"==e||"span"==e)&&c.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!1,d.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass),c.children().removeClass("ui-state-disabled"), +c.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!0,d.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass), +c.children().addClass("ui-state-disabled"),c.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(b){if(!b)return!1;for(var a=0;ae||!d||-1n&&n>e?Math.abs(c.left+e-n):0);c.top-=Math.min(c.top,c.top+g>q&&q>g?Math.abs(g+p):0);return c},_findPos:function(a){for(var c= +this._get(this._getInst(a),"isRTL");a&&("hidden"==a.type||1!=a.nodeType||b.expr.filters.hidden(a));)a=a[c?"previousSibling":"nextSibling"];a=b(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");b&&b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var c=this._curInst;if(c&&!(a&&c!=b.data(a,"datepicker"))&&this._datepickerShowing){var a=this._get(c,"showAnim"),d=this._get(c,"duration"),e=function(){b.datepicker._tidyDialog(c); +this._curInst=null};if(b.effects&&b.effects[a])c.dpDiv.hide(a,b.datepicker._get(c,"showOptions"),d,e);else c.dpDiv["slideDown"==a?"slideUp":"fadeIn"==a?"fadeOut":"hide"](a?d:null,e);a||e();b.datepicker._triggerOnClose(c);this._datepickerShowing=!1;this._lastInput=null;this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),b.blockUI&&(b.unblockUI(),b("body").append(this.dpDiv)));this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, +_checkExternalClick:function(a){b.datepicker._curInst&&(a=b(a.target),a[0].id!=b.datepicker._mainDivId&&(0==a.parents("#"+b.datepicker._mainDivId).length&&!a.hasClass(b.datepicker.markerClassName)&&!a.hasClass(b.datepicker._triggerClass)&&b.datepicker._datepickerShowing&&(!b.datepicker._inDialog||!b.blockUI))&&b.datepicker._hideDatepicker())},_adjustDate:function(a,c,d){var a=b(a),e=this._getInst(a[0]);this._isDisabledDatepicker(a[0])||(this._adjustInstDate(e,c+("M"==d?this._get(e,"showCurrentAtPos"): +0),d),this._updateDatepicker(e))},_gotoToday:function(a){var a=b(a),c=this._getInst(a[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate();c.drawMonth=c.selectedMonth=d.getMonth();c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c);this._adjustDate(a)},_selectMonthYear:function(a,c,d){var a=b(a),e=this._getInst(a[0]);e._selectingMonthYear= +!1;e["selected"+("M"==d?"Month":"Year")]=e["draw"+("M"==d?"Month":"Year")]=parseInt(c.options[c.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var c=this._getInst(b(a)[0]);c.input&&c._selectingMonthYear&&setTimeout(function(){c.input.focus()},0);c._selectingMonthYear=!c._selectingMonthYear},_selectDay:function(a,c,d,e){var g=b(a);!b(e).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(g[0])&&(g=this._getInst(g[0]),g.selectedDay=g.currentDay= +b("a",e).html(),g.selectedMonth=g.currentMonth=c,g.selectedYear=g.currentYear=d,this._selectDate(a,this._formatDate(g,g.currentDay,g.currentMonth,g.currentYear)))},_clearDate:function(a){a=b(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,c){var d=this._getInst(b(a)[0]),c=null!=c?c:this._formatDate(d);d.input&&d.input.val(c);this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[c,d]):d.input&&d.input.trigger("change");d.inline?this._updateDatepicker(d): +(this._hideDatepicker(),this._lastInput=d.input[0],"object"!=typeof d.input[0]&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var c=this._get(a,"altField");if(c){var d=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),g=this.formatDate(d,e,this._getFormatConfig(a));b(c).each(function(){b(this).val(g)})}},noWeekends:function(a){a=a.getDay();return[0a,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b= +a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,c,d){if(null==a||null==c)throw"Invalid arguments";c="object"==typeof c?c.toString():c+"";if(""==c)return null;for(var e=(d?d.shortYearCutoff:null)||this._defaults.shortYearCutoff,e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),g=(d?d.dayNamesShort:null)||this._defaults.dayNamesShort,h=(d?d.dayNames:null)||this._defaults.dayNames,p=(d?d.monthNamesShort:null)||this._defaults.monthNamesShort, +n=(d?d.monthNames:null)||this._defaults.monthNames,q=d=-1,o=-1,w=-1,r=!1,u=function(b){(b=E+1d&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=e?0:-100));if(-1b.getYear()%100?"0":"")+b.getYear()%100;break;case "@":o+=b.getTime();break;case "!":o+=1E4*b.getTime()+this._ticksTo1970;break;case "'":h("'")?o+="'":w=!0;break;default:o+=a.charAt(r)}return o},_possibleChars:function(a){for(var b= +"",c=!1,d=function(b){(b=e+1n&&(n+=12,s--);if(u)for(var v=this._daylightSavingAdjust(new Date(u.getFullYear(),u.getMonth()-p[0]*p[1]+1,u.getDate())),v=r&&vv;)n--,0>n&&(n=11,s--);a.drawMonth=n;a.drawYear=s;var v=this._get(a,"prevText"),v=!m?v:this.formatDate(v,this._daylightSavingAdjust(new Date(s,n-q,1)),this._getFormatConfig(a)), +v=this._canAdjustMonth(a,-1,s,n)?''+v+"":g?"":''+v+"",z=this._get(a,"nextText"),z=!m?z:this.formatDate(z,this._daylightSavingAdjust(new Date(s, +n+q,1)),this._getFormatConfig(a)),g=this._canAdjustMonth(a,1,s,n)?''+z+"":g?"":''+z+"",q=this._get(a,"currentText"),z=this._get(a,"gotoCurrent")&& +a.currentDay?w:c,q=!m?q:this.formatDate(q,z,this._getFormatConfig(a)),m=!a.inline?'":"",e=e?'
                '+(d?m:"")+(this._isInRange(a,z)?'":"")+(d?"":m)+"
                ":"",m=parseInt(this._get(a,"firstDay"),10),m=isNaN(m)?0:m,q=this._get(a,"showWeek"),z=this._get(a,"dayNames");this._get(a,"dayNamesShort");var B=this._get(a,"dayNamesMin"),E=this._get(a,"monthNames"),C=this._get(a,"monthNamesShort"),O=this._get(a,"beforeShowDay"),K=this._get(a,"showOtherMonths"),S=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var P=this._getDefaultDate(a),G="",H=0;H'+(/all|left/.test(A)&& +0==H?d?g:v:"")+(/all|right/.test(A)&&0==H?d?v:g:"")+this._generateMonthYearHeader(a,n,s,r,u,0
                '),D=q?'":"",A=0;7>A;A++)var x=(A+m)%7,D=D+("'+B[x]+"");y+=D+"";D=this._getDaysInMonth(s,n);s==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay, +D));A=(this._getFirstDayOfMonth(s,n)-m+7)%7;D=Math.ceil((A+D)/7);this.maxRows=D=o?this.maxRows>D?this.maxRows:D:D;for(var x=this._daylightSavingAdjust(new Date(s,n,1-A)),R=0;R",M=!q?"":'",A=0;7>A;A++){var J=O?O.apply(a.input?a.input[0]:null,[x]):[!0,""],F=x.getMonth()!=n,N=F&&!S||!J[0]||r&&xu,M=M+('");x.setDate(x.getDate()+1);x=this._daylightSavingAdjust(x)}y+=M+""}n++;11
                '+this._get(a,"weekHeader")+"
                '+this._get(a,"calculateWeek")(x)+""+(F&&!K? +" ":N?''+x.getDate()+"":''+x.getDate()+"")+"
                "+(o?"
            "+(0':""):"");L+=y}G+=L}G+=e+(b.browser.msie&& +7>parseInt(b.browser.version,10)&&!a.inline?'':"");a._keyEvent=!1;return G},_generateMonthYearHeader:function(a,b,c,d,e,g,p,n){var q=this._get(a,"changeMonth"),o=this._get(a,"changeYear"),w=this._get(a,"showMonthAfterYear"),r='
            ',u="";if(g||!q)u+=''+p[b]+"";else{for(var p=d&&d.getFullYear()==c,s=e&&e.getFullYear()==c,u=u+('"}w||(r+=u+(g||!q||!o?" ":""));if(!a.yearshtml)if(a.yearshtml="",g||!o)r+=''+c+"";else{var n=this._get(a,"yearRange").split(":"),z=(new Date).getFullYear(),p=function(a){a= +a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?z+parseInt(a,10):parseInt(a,10);return isNaN(a)?z:a},b=p(n[0]),n=Math.max(b,p(n[1]||"")),b=d?Math.max(b,d.getFullYear()):b,n=e?Math.min(n,e.getFullYear()):n;for(a.yearshtml+='";r+=a.yearshtml;a.yearshtml=null}r+=this._get(a,"yearSuffix");w&&(r+=(g||!q||!o?" ":"")+u);return r+"
            "},_adjustInstDate:function(a,b,c){var d=a.drawYear+("Y"==c?b:0),e=a.drawMonth+("M"==c?b:0),b=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+("D"==c?b:0),d=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,b)));a.selectedDay=d.getDate();a.drawMonth=a.selectedMonth=d.getMonth();a.drawYear=a.selectedYear=d.getFullYear();("M"==c|| +"Y"==c)&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),c=c&&bd?d:c},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return null==a?[1,1]:"number"==typeof a?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a, +b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),c=this._daylightSavingAdjust(new Date(c,d+(0>b?b:e[0]*e[1]),1));0>b&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<= +d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff"),b="string"!=typeof b?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);b=b?"object"==typeof b?b:this._daylightSavingAdjust(new Date(d, +c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});b.fn.datepicker=function(a){if(!this.length)return this;b.datepicker.initialized||(b(document).mousedown(b.datepicker._checkExternalClick).find("body").append(b.datepicker.dpDiv),b.datepicker.initialized=!0);var c=Array.prototype.slice.call(arguments,1);return"string"==typeof a&&("isDisabled"==a||"getDate"==a||"widget"==a)||"option"== +a&&2==arguments.length&&"string"==typeof arguments[1]?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this[0]].concat(c)):this.each(function(){typeof a=="string"?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this].concat(c)):b.datepicker._attachDatepicker(this,a)})};b.datepicker=new c;b.datepicker.initialized=!1;b.datepicker.uuid=(new Date).getTime();b.datepicker.version="1.8.14";window["DP_jQuery_"+h]=b})(jQuery); +(function(b,a){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
            ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===a)return this._value();this._setOption("value",b);return this},_setOption:function(a,d){"value"===a&&(this.options.value=d,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete"));b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;"number"!==typeof a&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change"));this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.14"})})(jQuery); +jQuery.effects||function(b,a){function c(a){var c;return a&&a.constructor==Array&&3==a.length?a:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(a))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(a))?[2.55*parseFloat(c[1]),2.55*parseFloat(c[2]),2.55*parseFloat(c[3])]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))?[parseInt(c[1],16),parseInt(c[2], +16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(a))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:/rgba\(0, 0, 0, 0\)/.exec(a)?i.transparent:i[b.trim(a).toLowerCase()]}function d(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]])for(var e=a.length;e--;)c=a[e],"string"==typeof a[c]&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c]);else for(c in a)"string"=== +typeof a[c]&&(b[c]=a[c]);return b}function g(a){var c,d;for(c in a)d=a[c],(null==d||b.isFunction(d)||c in k||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete a[c];return a}function h(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function e(a,c,d,e){"object"==typeof a&&(e=c,d=null,c=a,a=c.effect);b.isFunction(c)&&(e=c,d=null,c={});if("number"==typeof c||b.fx.speeds[c])e=d,d=c,c={};b.isFunction(d)&&(e=d,d=null);c=c||{};d=d||c.duration;d=b.fx.off?0:"number"==typeof d? +d:d in b.fx.speeds?b.fx.speeds[d]:b.fx.speeds._default;e=e||c.complete;return[a,c,d,e]}function f(a){return!a||("number"===typeof a||b.fx.speeds[a])||"string"===typeof a&&!b.effects[a]?!0:!1}b.effects={};b.each("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor borderColor color outlineColor".split(" "),function(a,d){b.fx.step[d]=function(a){if(!a.colorInit){var e;e=a.elem;var f=d,g;do{g=b.curCSS(e,f);if(g!=""&&g!="transparent"||b.nodeName(e,"body"))break;f="backgroundColor"}while(e= +e.parentNode);e=c(g);a.start=e;a.end=c(a.end);a.colorInit=true}a.elem.style[d]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var i={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139], +darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255], +maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},j=["add","remove","toggle"],k={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};b.effects.animateClass=function(a,c,e,f){b.isFunction(e)&&(f=e,e=null);return this.queue(function(){var i=b(this),o=i.attr("style")|| +" ",k=g(d.call(this)),r,u=i.attr("class");b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});r=g(d.call(this));i.attr("class",u);i.animate(h(k,r),{queue:false,duration:c,easing:e,complete:function(){b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});if(typeof i.attr("style")=="object"){i.attr("style").cssText="";i.attr("style").cssText=o}else i.attr("style",o);f&&f.apply(this,arguments);b.dequeue(this)}})})};b.fn.extend({_addClass:b.fn.addClass,addClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this, +[{add:a},c,d,e]):this._addClass(a)},_removeClass:b.fn.removeClass,removeClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this,[{remove:a},c,d,e]):this._removeClass(a)},_toggleClass:b.fn.toggleClass,toggleClass:function(c,d,e,f,g){return"boolean"==typeof d||d===a?e?b.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):b.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(a,c,d,e,f){return b.effects.animateClass.apply(this,[{add:c, +remove:a},d,e,f])}});b.extend(b.effects,{version:"1.8.14",save:function(a,b){for(var c=0;c").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});a.wrap(d);d=a.parent();"static"==a.css("position")?(d.css({position:"relative"}),a.css({position:"relative"})): +(b.extend(c,{position:a.css("position"),zIndex:a.css("z-index")}),b.each(["top","left","bottom","right"],function(b,d){c[d]=a.css(d);isNaN(parseInt(c[d],10))&&(c[d]="auto")}),a.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(a){return a.parent().is(".ui-effects-wrapper")?a.parent().replaceWith(a):a},setTransition:function(a,c,d,e){e=e||{};b.each(c,function(b,c){unit=a.cssUnit(c);0(b/=e/2)?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c}, +easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/ +e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:1>(b/=e/2)?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)* +b)+c},easeInOutCirc:function(a,b,c,d,e){return 1>(b/=e/2)?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var a=1.70158,f=0,g=d;if(0==b)return c;if(1==(b/=e))return c+d;f||(f=0.3*e);gb?-0.5*g*Math.pow(2,10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+c:0.5*g*Math.pow(2,-10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+d+c},easeInBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(b,c,d,e, +f,g){g==a&&(g=1.70158);return e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return 1>(c/=f/2)?e/2*c*c*(((g*=1.525)+1)*c-g)+d:e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(a,c,d,e,f){return e-b.easing.easeOutBounce(a,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+0.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+0.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+0.984375)+c},easeInOutBounce:function(a, +c,d,e,f){return c").css({position:"absolute",visibility:"visible",left:-j*(e/d),top:-i*(f/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:e/d,height:f/c,left:h.left+j*(e/d)+("show"==a.options.mode?(j-Math.floor(d/2))*(e/d):0),top:h.top+i*(f/c)+("show"==a.options.mode?(i-Math.floor(c/2))*(f/c):0),opacity:"show"==a.options.mode?0:1}).animate({left:h.left+j*(e/d)+("show"==a.options.mode?0:(j-Math.floor(d/2))*(e/d)),top:h.top+ +i*(f/c)+("show"==a.options.mode?0:(i-Math.floor(c/2))*(f/c)),opacity:"show"==a.options.mode?1:0},a.duration||500);setTimeout(function(){"show"==a.options.mode?g.css({visibility:"visible"}):g.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(g[0]);g.dequeue();b("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(b){b.effects.fold=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.size||15,e=!!a.options.horizFirst,f=a.duration?a.duration/2:b.fx.speeds._default/2;b.effects.save(c,d);c.show();var i=b.effects.createWrapper(c).css({overflow:"hidden"}),j="show"==g!=e,k=j?["width","height"]:["height","width"],j=j?[i.width(),i.height()]:[i.height(),i.width()],l=/([0-9]+)%/.exec(h);l&&(h=parseInt(l[1], +10)/100*j["hide"==g?0:1]);"show"==g&&i.css(e?{height:0,width:h}:{height:h,width:0});e={};l={};e[k[0]]="show"==g?j[0]:h;l[k[1]]="show"==g?j[1]:0;i.animate(e,f,a.options.easing).animate(l,f,a.options.easing,function(){"hide"==g&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +(function(b){b.effects.highlight=function(a){return this.queue(function(){var c=b(this),d=["backgroundImage","backgroundColor","opacity"],g=b.effects.setMode(c,a.options.mode||"show"),h={backgroundColor:c.css("backgroundColor")};"hide"==g&&(h.opacity=0);b.effects.save(c,d);c.show().css({backgroundImage:"none",backgroundColor:a.options.color||"#ffff99"}).animate(h,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){g=="hide"&&c.hide();b.effects.restore(c,d);g=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(b){b.effects.pulsate=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"show");times=2*(a.options.times||5)-1;duration=a.duration?a.duration/2:b.fx.speeds._default/2;isVisible=c.is(":visible");animateTo=0;isVisible||(c.css("opacity",0).show(),animateTo=1);("hide"==d&&isVisible||"show"==d&&!isVisible)&×--;for(d=0;d').appendTo(document.body).addClass(a.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(d,a.duration,a.options.easing,function(){h.remove();a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +/* + * jQuery Highlight plugin + * Based on highlight v3 by Johann Burkard + * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html + * Copyright (c) 2009 Bartek Szopka http://bartaz.github.com/sandbox.js/jquery.highlight.html + * Licensed under MIT license. + */ +jQuery.extend({highlight:function(a,c,b,e){if(a.nodeType===3){if(c=a.data.match(c)){b=document.createElement(b||"span");b.className=e||"highlight";a=a.splitText(c.index);a.splitText(c[0].length);e=a.cloneNode(true);b.appendChild(e);a.parentNode.replaceChild(b,a);return 1}}else if(a.nodeType===1&&a.childNodes&&!/(script|style)/i.test(a.tagName)&&!(a.tagName===b.toUpperCase()&&a.className===e))for(var d=0;d').appendTo("body"); + var d = { width: $c.width() - $c[0].clientWidth, height: $c.height() - $c[0].clientHeight }; + $c.remove(); + window.scrollbarWidth = d.width; + window.scrollbarHeight = d.height; + return dim.match(/^(width|height)$/) ? d[dim] : d; + } + + + /** + * Returns hash container 'display' and 'visibility' + * + * @see $.swap() - swaps CSS, runs callback, resets CSS + */ +, showInvisibly: function ($E, force) { + if (!$E) return {}; + if (!$E.jquery) $E = $($E); + var CSS = { + display: $E.css('display') + , visibility: $E.css('visibility') + }; + if (force || CSS.display === "none") { // only if not *already hidden* + $E.css({ display: "block", visibility: "hidden" }); // show element 'invisibly' so can be measured + return CSS; + } + else return {}; + } + + /** + * Returns data for setting size of an element (container or a pane). + * + * @see _create(), onWindowResize() for container, plus others for pane + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, outerWidth, innerHeight, etc + */ +, getElementDimensions: function ($E) { + var + d = {} // dimensions hash + , x = d.css = {} // CSS hash + , i = {} // TEMP insets + , b, p // TEMP border, padding + , N = $.layout.cssNum + , off = $E.offset() + ; + d.offsetLeft = off.left; + d.offsetTop = off.top; + + $.each("Left,Right,Top,Bottom".split(","), function (idx, e) { // e = edge + b = x["border" + e] = $.layout.borderWidth($E, e); + p = x["padding"+ e] = $.layout.cssNum($E, "padding"+e); + i[e] = b + p; // total offset of content from outer side + d["inset"+ e] = p; + }); + + d.offsetWidth = $E.innerWidth(); // offsetWidth is used in calc when doing manual resize + d.offsetHeight = $E.innerHeight(); // ditto + d.outerWidth = $E.outerWidth(); + d.outerHeight = $E.outerHeight(); + d.innerWidth = max(0, d.outerWidth - i.Left - i.Right); + d.innerHeight = max(0, d.outerHeight - i.Top - i.Bottom); + + x.width = $E.width(); + x.height = $E.height(); + x.top = N($E,"top",true); + x.bottom = N($E,"bottom",true); + x.left = N($E,"left",true); + x.right = N($E,"right",true); + + //d.visible = $E.is(":visible");// && x.width > 0 && x.height > 0; + + return d; + } + +, getElementCSS: function ($E, list) { + var + CSS = {} + , style = $E[0].style + , props = list.split(",") + , sides = "Top,Bottom,Left,Right".split(",") + , attrs = "Color,Style,Width".split(",") + , p, s, a, i, j, k + ; + for (i=0; i < props.length; i++) { + p = props[i]; + if (p.match(/(border|padding|margin)$/)) + for (j=0; j < 4; j++) { + s = sides[j]; + if (p === "border") + for (k=0; k < 3; k++) { + a = attrs[k]; + CSS[p+s+a] = style[p+s+a]; + } + else + CSS[p+s] = style[p+s]; + } + else + CSS[p] = style[p]; + }; + return CSS + } + + /** + * Return the innerWidth for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerWidth (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerWidth of the elem by subtracting padding and borders + */ +, cssWidth: function ($E, outerWidth) { + var + b = $.layout.borderWidth + , n = $.layout.cssNum + ; + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerWidth <= 0) return 0; + + if (!$.support.boxModel) return outerWidth; + + // strip border and padding from outerWidth to get CSS Width + var W = outerWidth + - b($E, "Left") + - b($E, "Right") + - n($E, "paddingLeft") + - n($E, "paddingRight") + ; + + return max(0,W); + } + + /** + * Return the innerHeight for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerHeight (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerHeight of the elem by subtracting padding and borders + */ +, cssHeight: function ($E, outerHeight) { + var + b = $.layout.borderWidth + , n = $.layout.cssNum + ; + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerHeight <= 0) return 0; + + if (!$.support.boxModel) return outerHeight; + + // strip border and padding from outerHeight to get CSS Height + var H = outerHeight + - b($E, "Top") + - b($E, "Bottom") + - n($E, "paddingTop") + - n($E, "paddingBottom") + ; + + return max(0,H); + } + + /** + * Returns the 'current CSS numeric value' for a CSS property - 0 if property does not exist + * + * @see Called by many methods + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {string} prop The name of the CSS property, eg: top, width, etc. + * @param {boolean=} [allowAuto=false] true = return 'auto' if that is value; false = return 0 + * @return {(string|number)} Usually used to get an integer value for position (top, left) or size (height, width) + */ +, cssNum: function ($E, prop, allowAuto) { + if (!$E.jquery) $E = $($E); + var CSS = $.layout.showInvisibly($E) + , p = $.curCSS($E[0], prop, true) + , v = allowAuto && p=="auto" ? p : (parseInt(p, 10) || 0); + $E.css( CSS ); // RESET + return v; + } + +, borderWidth: function (el, side) { + if (el.jquery) el = el[0]; + var b = "border"+ side.substr(0,1).toUpperCase() + side.substr(1); // left => Left + return $.curCSS(el, b+"Style", true) === "none" ? 0 : (parseInt($.curCSS(el, b+"Width", true), 10) || 0); + } + + /** + * Mouse-tracking utility - FUTURE REFERENCE + * + * init: if (!window.mouse) { + * window.mouse = { x: 0, y: 0 }; + * $(document).mousemove( $.layout.trackMouse ); + * } + * + * @param {Object} evt + * +, trackMouse: function (evt) { + window.mouse = { x: evt.clientX, y: evt.clientY }; + } + */ + + /** + * SUBROUTINE for preventPrematureSlideClose option + * + * @param {Object} evt + * @param {Object=} el + */ +, isMouseOverElem: function (evt, el) { + var + $E = $(el || this) + , d = $E.offset() + , T = d.top + , L = d.left + , R = L + $E.outerWidth() + , B = T + $E.outerHeight() + , x = evt.pageX // evt.clientX ? + , y = evt.pageY // evt.clientY ? + ; + // if X & Y are < 0, probably means is over an open SELECT + return ($.layout.browser.msie && x < 0 && y < 0) || ((x >= L && x <= R) && (y >= T && y <= B)); + } + + /** + * Message/Logging Utility + * + * @example $.layout.msg("My message"); // log text + * @example $.layout.msg("My message", true); // alert text + * @example $.layout.msg({ foo: "bar" }, "Title"); // log hash-data, with custom title + * @example $.layout.msg({ foo: "bar" }, true, "Title", { sort: false }); -OR- + * @example $.layout.msg({ foo: "bar" }, "Title", { sort: false, display: true }); // alert hash-data + * + * @param {(Object|string)} info String message OR Hash/Array + * @param {(Boolean|string|Object)=} [popup=false] True means alert-box - can be skipped + * @param {(Object|string)=} [debugTitle=""] Title for Hash data - can be skipped + * @param {Object=} [debutOpts={}] Extra options for debug output + */ +, msg: function (info, popup, debugTitle, debugOpts) { + if ($.isPlainObject(info) && window.debugData) { + if (typeof popup === "string") { + debugOpts = debugTitle; + debugTitle = popup; + } + else if (typeof debugTitle === "object") { + debugOpts = debugTitle; + debugTitle = null; + } + var t = debugTitle || "log( )" + , o = $.extend({ sort: false, returnHTML: false, display: false }, debugOpts); + if (popup === true || o.display) + debugData( info, t, o ); + else if (window.console) + console.log(debugData( info, t, o )); + } + else if (popup) + alert(info); + else if (window.console) + console.log(info); + else { + var id = "#layoutLogger" + , $l = $(id); + if (!$l.length) + $l = createLog(); + $l.children("ul").append('
          • '+ info.replace(/\/g,">") +'
          • '); + } + + function createLog () { + var pos = $.support.fixedPosition ? 'fixed' : 'absolute' + , $e = $('
            ' + + '
            ' + + 'XLayout console.log
            ' + + '
              ' + + '
              ' + ).appendTo("body"); + $e.css('left', $(window).width() - $e.outerWidth() - 5) + if ($.ui.draggable) $e.draggable({ handle: ':first-child' }); + return $e; + }; + } + +}; + +var lang = $.layout.language; // alias used in defaults... + +// DEFAULT OPTIONS - CHANGE IF DESIRED +$.layout.defaults = { +/* + * LAYOUT & LAYOUT-CONTAINER OPTIONS + * - none of these options are applicable to individual panes + */ + name: "" // Not required, but useful for buttons and used for the state-cookie +, containerSelector: "" // ONLY used when specifying a childOptions - to find container-element that is NOT directly-nested +, containerClass: "ui-layout-container" // layout-container element +, scrollToBookmarkOnLoad: true // after creating a layout, scroll to bookmark in URL (.../page.htm#myBookmark) +, resizeWithWindow: true // bind thisLayout.resizeAll() to the window.resize event +, resizeWithWindowDelay: 200 // delay calling resizeAll because makes window resizing very jerky +, resizeWithWindowMaxDelay: 0 // 0 = none - force resize every XX ms while window is being resized +, onresizeall_start: null // CALLBACK when resizeAll() STARTS - NOT pane-specific +, onresizeall_end: null // CALLBACK when resizeAll() ENDS - NOT pane-specific +, onload_start: null // CALLBACK when Layout inits - after options initialized, but before elements +, onload_end: null // CALLBACK when Layout inits - after EVERYTHING has been initialized +, onunload_start: null // CALLBACK when Layout is destroyed OR onWindowUnload +, onunload_end: null // CALLBACK when Layout is destroyed OR onWindowUnload +, autoBindCustomButtons: false // search for buttons with ui-layout-button class and auto-bind them +, initPanes: true // false = DO NOT initialize the panes onLoad - will init later +, showErrorMessages: true // enables fatal error messages to warn developers of common errors +, showDebugMessages: false // display console-and-alert debug msgs - IF this Layout version _has_ debugging code! +// Changing this zIndex value will cause other zIndex values to automatically change +, zIndex: null // the PANE zIndex - resizers and masks will be +1 +// DO NOT CHANGE the zIndex values below unless you clearly understand their relationships +, zIndexes: { // set _default_ z-index values here... + pane_normal: 0 // normal z-index for panes + , content_mask: 1 // applied to overlays used to mask content INSIDE panes during resizing + , resizer_normal: 2 // normal z-index for resizer-bars + , pane_sliding: 100 // applied to *BOTH* the pane and its resizer when a pane is 'slid open' + , pane_animate: 1000 // applied to the pane when being animated - not applied to the resizer + , resizer_drag: 10000 // applied to the CLONED resizer-bar when being 'dragged' + } +/* + * PANE DEFAULT SETTINGS + * - settings under the 'panes' key become the default settings for *all panes* + * - ALL pane-options can also be set specifically for each panes, which will override these 'default values' + */ +, panes: { // default options for 'all panes' - will be overridden by 'per-pane settings' + applyDemoStyles: false // NOTE: renamed from applyDefaultStyles for clarity + , closable: true // pane can open & close + , resizable: true // when open, pane can be resized + , slidable: true // when closed, pane can 'slide open' over other panes - closes on mouse-out + , initClosed: false // true = init pane as 'closed' + , initHidden: false // true = init pane as 'hidden' - no resizer-bar/spacing + // SELECTORS + //, paneSelector: "" // MUST be pane-specific - jQuery selector for pane + , contentSelector: ".ui-layout-content" // INNER div/element to auto-size so only it scrolls, not the entire pane! + , contentIgnoreSelector: ".ui-layout-ignore" // element(s) to 'ignore' when measuring 'content' + , findNestedContent: false // true = $P.find(contentSelector), false = $P.children(contentSelector) + // GENERIC ROOT-CLASSES - for auto-generated classNames + , paneClass: "ui-layout-pane" // Layout Pane + , resizerClass: "ui-layout-resizer" // Resizer Bar + , togglerClass: "ui-layout-toggler" // Toggler Button + , buttonClass: "ui-layout-button" // CUSTOM Buttons - eg: '[ui-layout-button]-toggle/-open/-close/-pin' + // ELEMENT SIZE & SPACING + //, size: 100 // MUST be pane-specific -initial size of pane + , minSize: 0 // when manually resizing a pane + , maxSize: 0 // ditto, 0 = no limit + , spacing_open: 6 // space between pane and adjacent panes - when pane is 'open' + , spacing_closed: 6 // ditto - when pane is 'closed' + , togglerLength_open: 50 // Length = WIDTH of toggler button on north/south sides - HEIGHT on east/west sides + , togglerLength_closed: 50 // 100% OR -1 means 'full height/width of resizer bar' - 0 means 'hidden' + , togglerAlign_open: "center" // top/left, bottom/right, center, OR... + , togglerAlign_closed: "center" // 1 => nn = offset from top/left, -1 => -nn == offset from bottom/right + , togglerTip_open: lang.Close // Toggler tool-tip (title) + , togglerTip_closed: lang.Open // ditto + , togglerContent_open: "" // text or HTML to put INSIDE the toggler + , togglerContent_closed: "" // ditto + // RESIZING OPTIONS + , resizerDblClickToggle: true // + , autoResize: true // IF size is 'auto' or a percentage, then recalc 'pixel size' whenever the layout resizes + , autoReopen: true // IF a pane was auto-closed due to noRoom, reopen it when there is room? False = leave it closed + , resizerDragOpacity: 1 // option for ui.draggable + //, resizerCursor: "" // MUST be pane-specific - cursor when over resizer-bar + , maskContents: false // true = add DIV-mask over-or-inside this pane so can 'drag' over IFRAMES + , maskObjects: false // true = add IFRAME-mask over-or-inside this pane to cover objects/applets - content-mask will overlay this mask + , maskZindex: null // will override zIndexes.content_mask if specified - not applicable to iframe-panes + , resizingGrid: false // grid size that the resizers will snap-to during resizing, eg: [20,20] + , livePaneResizing: false // true = LIVE Resizing as resizer is dragged + , liveContentResizing: false // true = re-measure header/footer heights as resizer is dragged + , liveResizingTolerance: 1 // how many px change before pane resizes, to control performance + // TIPS & MESSAGES - also see lang object + , noRoomToOpenTip: lang.noRoomToOpenTip + , resizerTip: lang.Resize // Resizer tool-tip (title) + , sliderTip: lang.Slide // resizer-bar triggers 'sliding' when pane is closed + , sliderCursor: "pointer" // cursor when resizer-bar will trigger 'sliding' + , slideTrigger_open: "click" // click, dblclick, mouseenter + , slideTrigger_close: "mouseleave"// click, mouseleave + , slideDelay_open: 300 // applies only for mouseenter event - 0 = instant open + , slideDelay_close: 300 // applies only for mouseleave event (300ms is the minimum!) + , hideTogglerOnSlide: false // when pane is slid-open, should the toggler show? + , preventQuickSlideClose: $.layout.browser.webkit // Chrome triggers slideClosed as it is opening + , preventPrematureSlideClose: false // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + // HOT-KEYS & MISC + , showOverflowOnHover: false // will bind allowOverflow() utility to pane.onMouseOver + , enableCursorHotkey: true // enabled 'cursor' hotkeys + //, customHotkey: "" // MUST be pane-specific - EITHER a charCode OR a character + , customHotkeyModifier: "SHIFT" // either 'SHIFT', 'CTRL' or 'CTRL+SHIFT' - NOT 'ALT' + // PANE ANIMATION + // NOTE: fxSss_open, fxSss_close & fxSss_size options (eg: fxName_open) are auto-generated if not passed + , fxName: "slide" // ('none' or blank), slide, drop, scale -- only relevant to 'open' & 'close', NOT 'size' + , fxSpeed: null // slow, normal, fast, 200, nnn - if passed, will OVERRIDE fxSettings.duration + , fxSettings: {} // can be passed, eg: { easing: "easeOutBounce", duration: 1500 } + , fxOpacityFix: true // tries to fix opacity in IE to restore anti-aliasing after animation + , animatePaneSizing: false // true = animate resizing after dragging resizer-bar OR sizePane() is called + /* NOTE: Action-specific FX options are auto-generated from the options above if not specifically set: + fxName_open: "slide" // 'Open' pane animation + fnName_close: "slide" // 'Close' pane animation + fxName_size: "slide" // 'Size' pane animation - when animatePaneSizing = true + fxSpeed_open: null + fxSpeed_close: null + fxSpeed_size: null + fxSettings_open: {} + fxSettings_close: {} + fxSettings_size: {} + */ + // CHILD/NESTED LAYOUTS + , childOptions: null // Layout-options for nested/child layout - even {} is valid as options + , initChildLayout: true // true = child layout will be created as soon as _this_ layout completes initialization + , destroyChildLayout: true // true = destroy child-layout if this pane is destroyed + , resizeChildLayout: true // true = trigger child-layout.resizeAll() when this pane is resized + // PANE CALLBACKS + , triggerEventsOnLoad: false // true = trigger onopen OR onclose callbacks when layout initializes + , triggerEventsDuringLiveResize: true // true = trigger onresize callback REPEATEDLY if livePaneResizing==true + , onshow_start: null // CALLBACK when pane STARTS to Show - BEFORE onopen/onhide_start + , onshow_end: null // CALLBACK when pane ENDS being Shown - AFTER onopen/onhide_end + , onhide_start: null // CALLBACK when pane STARTS to Close - BEFORE onclose_start + , onhide_end: null // CALLBACK when pane ENDS being Closed - AFTER onclose_end + , onopen_start: null // CALLBACK when pane STARTS to Open + , onopen_end: null // CALLBACK when pane ENDS being Opened + , onclose_start: null // CALLBACK when pane STARTS to Close + , onclose_end: null // CALLBACK when pane ENDS being Closed + , onresize_start: null // CALLBACK when pane STARTS being Resized ***FOR ANY REASON*** + , onresize_end: null // CALLBACK when pane ENDS being Resized ***FOR ANY REASON*** + , onsizecontent_start: null // CALLBACK when sizing of content-element STARTS + , onsizecontent_end: null // CALLBACK when sizing of content-element ENDS + , onswap_start: null // CALLBACK when pane STARTS to Swap + , onswap_end: null // CALLBACK when pane ENDS being Swapped + , ondrag_start: null // CALLBACK when pane STARTS being ***MANUALLY*** Resized + , ondrag_end: null // CALLBACK when pane ENDS being ***MANUALLY*** Resized + } +/* + * PANE-SPECIFIC SETTINGS + * - options listed below MUST be specified per-pane - they CANNOT be set under 'panes' + * - all options under the 'panes' key can also be set specifically for any pane + * - most options under the 'panes' key apply only to 'border-panes' - NOT the the center-pane + */ +, north: { + paneSelector: ".ui-layout-north" + , size: "auto" // eg: "auto", "30%", .30, 200 + , resizerCursor: "n-resize" // custom = url(myCursor.cur) + , customHotkey: "" // EITHER a charCode (43) OR a character ("o") + } +, south: { + paneSelector: ".ui-layout-south" + , size: "auto" + , resizerCursor: "s-resize" + , customHotkey: "" + } +, east: { + paneSelector: ".ui-layout-east" + , size: 200 + , resizerCursor: "e-resize" + , customHotkey: "" + } +, west: { + paneSelector: ".ui-layout-west" + , size: 200 + , resizerCursor: "w-resize" + , customHotkey: "" + } +, center: { + paneSelector: ".ui-layout-center" + , minWidth: 0 + , minHeight: 0 + } +}; + +$.layout.optionsMap = { + // layout/global options - NOT pane-options + layout: ("stateManagement,effects,zIndexes," + + "name,zIndex,scrollToBookmarkOnLoad,showErrorMessages," + + "resizeWithWindow,resizeWithWindowDelay,resizeWithWindowMaxDelay," + + "onresizeall,onresizeall_start,onresizeall_end,onload,onunload,autoBindCustomButtons").split(",") +// borderPanes: [ ALL options that are NOT specified as 'layout' ] + // default.panes options that apply to the center-pane (most options apply _only_ to border-panes) +, center: ("paneClass,contentSelector,contentIgnoreSelector,findNestedContent,applyDemoStyles,triggerEventsOnLoad," + + "showOverflowOnHover,maskContents,maskObjects,liveContentResizing," + + "childOptions,initChildLayout,resizeChildLayout,destroyChildLayout," + + "onresize,onresize_start,onresize_end,onsizecontent,onsizecontent_start,onsizecontent_end").split(",") + // options that MUST be specifically set 'per-pane' - CANNOT set in the panes (defaults) key +, noDefault: ("paneSelector,resizerCursor,customHotkey").split(",") +}; + +/** + * Processes options passed in converts flat-format data into subkey (JSON) format + * In flat-format, subkeys are _currently_ separated with 2 underscores, like north__optName + * Plugins may also call this method so they can transform their own data + * + * @param {!Object} hash Data/options passed by user - may be a single level or nested levels + * @return {Object} Returns hash of minWidth & minHeight + */ +$.layout.transformData = function (hash) { + var json = { panes: {}, center: {} } // init return object + , data, branch, optKey, keys, key, val, i, c; + + if (typeof hash !== "object") return json; // no options passed + + // convert all 'flat-keys' to 'sub-key' format + for (optKey in hash) { + branch = json; + data = $.layout.optionsMap.layout; + val = hash[ optKey ]; + keys = optKey.split("__"); // eg: west__size or north__fxSettings__duration + c = keys.length - 1; + // convert underscore-delimited to subkeys + for (i=0; i <= c; i++) { + key = keys[i]; + if (i === c) + branch[key] = val; + else if (!branch[key]) + branch[key] = {}; // create the subkey + // recurse to sub-key for next loop - if not done + branch = branch[key]; + } + } + + return json; +} + +// INTERNAL CONFIG DATA - DO NOT CHANGE THIS! +$.layout.backwardCompatibility = { + // data used by renameOldOptions() + map: { + // OLD Option Name: NEW Option Name + applyDefaultStyles: "applyDemoStyles" + , resizeNestedLayout: "resizeChildLayout" + , resizeWhileDragging: "livePaneResizing" + , resizeContentWhileDragging: "liveContentResizing" + , triggerEventsWhileDragging: "triggerEventsDuringLiveResize" + , maskIframesOnResize: "maskContents" + , useStateCookie: "stateManagement.enabled" + , "cookie.autoLoad": "stateManagement.autoLoad" + , "cookie.autoSave": "stateManagement.autoSave" + , "cookie.keys": "stateManagement.stateKeys" + , "cookie.name": "stateManagement.cookie.name" + , "cookie.domain": "stateManagement.cookie.domain" + , "cookie.path": "stateManagement.cookie.path" + , "cookie.expires": "stateManagement.cookie.expires" + , "cookie.secure": "stateManagement.cookie.secure" + } + /** + * @param {Object} opts + */ +, renameOptions: function (opts) { + var map = $.layout.backwardCompatibility.map + , oldData, newData, value + ; + for (var itemPath in map) { + oldData = getBranch( itemPath ); + value = oldData.branch[ oldData.key ] + if (value !== undefined) { + newData = getBranch( map[itemPath], true ) + newData.branch[ newData.key ] = value; + delete oldData.branch[ oldData.key ]; + } + } + + /** + * @param {string} path + * @param {boolean=} [create=false] Create path if does not exist + */ + function getBranch (path, create) { + var a = path.split(".") // split keys into array + , c = a.length - 1 + , D = { branch: opts, key: a[c] } // init branch at top & set key (last item) + , i = 0, k, undef; + for (; i 0) { + if (autoHide && $E.data('autoHidden') && $E.innerHeight() > 0) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + // make hidden, then visible to 'refresh' display after animation + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerHeight + * @param {boolean=} [autoHide=false] + */ +, setOuterHeight = function (el, outerHeight, autoHide) { + var $E = el, h; + if (isStr(el)) $E = $Ps[el]; // west + else if (!el.jquery) $E = $(el); + h = cssH($E, outerHeight); + $E.css({ height: h, visibility: "visible" }); // may have been 'hidden' by sizeContent + if (h > 0 && $E.innerWidth() > 0) { + if (autoHide && $E.data('autoHidden')) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerSize + * @param {boolean=} [autoHide=false] + */ +, setOuterSize = function (el, outerSize, autoHide) { + if (_c[pane].dir=="horz") // pane = north or south + setOuterHeight(el, outerSize, autoHide); + else // pane = east or west + setOuterWidth(el, outerSize, autoHide); + } + + + /** + * Converts any 'size' params to a pixel/integer size, if not already + * If 'auto' or a decimal/percentage is passed as 'size', a pixel-size is calculated + * + /** + * @param {string} pane + * @param {(string|number)=} size + * @param {string=} [dir] + * @return {number} + */ +, _parseSize = function (pane, size, dir) { + if (!dir) dir = _c[pane].dir; + + if (isStr(size) && size.match(/%/)) + size = (size === '100%') ? -1 : parseInt(size, 10) / 100; // convert % to decimal + + if (size === 0) + return 0; + else if (size >= 1) + return parseInt(size, 10); + + var o = options, avail = 0; + if (dir=="horz") // north or south or center.minHeight + avail = sC.innerHeight - ($Ps.north ? o.north.spacing_open : 0) - ($Ps.south ? o.south.spacing_open : 0); + else if (dir=="vert") // east or west or center.minWidth + avail = sC.innerWidth - ($Ps.west ? o.west.spacing_open : 0) - ($Ps.east ? o.east.spacing_open : 0); + + if (size === -1) // -1 == 100% + return avail; + else if (size > 0) // percentage, eg: .25 + return round(avail * size); + else if (pane=="center") + return 0; + else { // size < 0 || size=='auto' || size==Missing || size==Invalid + // auto-size the pane + var dim = (dir === "horz" ? "height" : "width") + , $P = $Ps[pane] + , $C = dim === 'height' ? $Cs[pane] : false + , vis = $.layout.showInvisibly($P) // show pane invisibly if hidden + , szP = $P.css(dim) // SAVE current pane size + , szC = $C ? $C.css(dim) : 0 // SAVE current content size + ; + $P.css(dim, "auto"); + if ($C) $C.css(dim, "auto"); + size = (dim === "height") ? $P.outerHeight() : $P.outerWidth(); // MEASURE + $P.css(dim, szP).css(vis); // RESET size & visibility + if ($C) $C.css(dim, szC); + return size; + } + } + + /** + * Calculates current 'size' (outer-width or outer-height) of a border-pane - optionally with 'pane-spacing' added + * + * @param {(string|!Object)} pane + * @param {boolean=} [inclSpace=false] + * @return {number} Returns EITHER Width for east/west panes OR Height for north/south panes - adjusted for boxModel & browser + */ +, getPaneSize = function (pane, inclSpace) { + var + $P = $Ps[pane] + , o = options[pane] + , s = state[pane] + , oSp = (inclSpace ? o.spacing_open : 0) + , cSp = (inclSpace ? o.spacing_closed : 0) + ; + if (!$P || s.isHidden) + return 0; + else if (s.isClosed || (s.isSliding && inclSpace)) + return cSp; + else if (_c[pane].dir === "horz") + return $P.outerHeight() + oSp; + else // dir === "vert" + return $P.outerWidth() + oSp; + } + + /** + * Calculate min/max pane dimensions and limits for resizing + * + * @param {string} pane + * @param {boolean=} [slide=false] + */ +, setSizeLimits = function (pane, slide) { + if (!isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , dir = c.dir + , side = c.side.toLowerCase() + , type = c.sizeType.toLowerCase() + , isSliding = (slide != undefined ? slide : s.isSliding) // only open() passes 'slide' param + , $P = $Ps[pane] + , paneSpacing = o.spacing_open + // measure the pane on the *opposite side* from this pane + , altPane = _c.oppositeEdge[pane] + , altS = state[altPane] + , $altP = $Ps[altPane] + , altPaneSize = (!$altP || altS.isVisible===false || altS.isSliding ? 0 : (dir=="horz" ? $altP.outerHeight() : $altP.outerWidth())) + , altPaneSpacing = ((!$altP || altS.isHidden ? 0 : options[altPane][ altS.isClosed !== false ? "spacing_closed" : "spacing_open" ]) || 0) + // limitSize prevents this pane from 'overlapping' opposite pane + , containerSize = (dir=="horz" ? sC.innerHeight : sC.innerWidth) + , minCenterDims = cssMinDims("center") + , minCenterSize = dir=="horz" ? max(options.center.minHeight, minCenterDims.minHeight) : max(options.center.minWidth, minCenterDims.minWidth) + // if pane is 'sliding', then ignore center and alt-pane sizes - because 'overlays' them + , limitSize = (containerSize - paneSpacing - (isSliding ? 0 : (_parseSize("center", minCenterSize, dir) + altPaneSize + altPaneSpacing))) + , minSize = s.minSize = max( _parseSize(pane, o.minSize), cssMinDims(pane).minSize ) + , maxSize = s.maxSize = min( (o.maxSize ? _parseSize(pane, o.maxSize) : 100000), limitSize ) + , r = s.resizerPosition = {} // used to set resizing limits + , top = sC.insetTop + , left = sC.insetLeft + , W = sC.innerWidth + , H = sC.innerHeight + , rW = o.spacing_open // subtract resizer-width to get top/left position for south/east + ; + switch (pane) { + case "north": r.min = top + minSize; + r.max = top + maxSize; + break; + case "west": r.min = left + minSize; + r.max = left + maxSize; + break; + case "south": r.min = top + H - maxSize - rW; + r.max = top + H - minSize - rW; + break; + case "east": r.min = left + W - maxSize - rW; + r.max = left + W - minSize - rW; + break; + }; + } + + /** + * Returns data for setting the size/position of center pane. Also used to set Height for east/west panes + * + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, (outer) width and (outer) height + */ +, calcNewCenterPaneDims = function () { + var d = { + top: getPaneSize("north", true) // true = include 'spacing' value for pane + , bottom: getPaneSize("south", true) + , left: getPaneSize("west", true) + , right: getPaneSize("east", true) + , width: 0 + , height: 0 + }; + + // NOTE: sC = state.container + // calc center-pane outer dimensions + d.width = sC.innerWidth - d.left - d.right; // outerWidth + d.height = sC.innerHeight - d.bottom - d.top; // outerHeight + // add the 'container border/padding' to get final positions relative to the container + d.top += sC.insetTop; + d.bottom += sC.insetBottom; + d.left += sC.insetLeft; + d.right += sC.insetRight; + + return d; + } + + + /** + * @param {!Object} el + * @param {boolean=} [allStates=false] + */ +, getHoverClasses = function (el, allStates) { + var + $El = $(el) + , type = $El.data("layoutRole") + , pane = $El.data("layoutEdge") + , o = options[pane] + , root = o[type +"Class"] + , _pane = "-"+ pane // eg: "-west" + , _open = "-open" + , _closed = "-closed" + , _slide = "-sliding" + , _hover = "-hover " // NOTE the trailing space + , _state = $El.hasClass(root+_closed) ? _closed : _open + , _alt = _state === _closed ? _open : _closed + , classes = (root+_hover) + (root+_pane+_hover) + (root+_state+_hover) + (root+_pane+_state+_hover) + ; + if (allStates) // when 'removing' classes, also remove alternate-state classes + classes += (root+_alt+_hover) + (root+_pane+_alt+_hover); + + if (type=="resizer" && $El.hasClass(root+_slide)) + classes += (root+_slide+_hover) + (root+_pane+_slide+_hover); + + return $.trim(classes); + } +, addHover = function (evt, el) { + var $E = $(el || this); + if (evt && $E.data("layoutRole") === "toggler") + evt.stopPropagation(); // prevent triggering 'slide' on Resizer-bar + $E.addClass( getHoverClasses($E) ); + } +, removeHover = function (evt, el) { + var $E = $(el || this); + $E.removeClass( getHoverClasses($E, true) ); + } + +, onResizerEnter = function (evt) { // ALSO called by toggler.mouseenter + if ($.fn.disableSelection) + $("body").disableSelection(); + } +, onResizerLeave = function (evt, el) { + var + e = el || this // el is only passed when called by the timer + , pane = $(e).data("layoutEdge") + , name = pane +"ResizerLeave" + ; + timer.clear(pane+"_openSlider"); // cancel slideOpen timer, if set + timer.clear(name); // cancel enableSelection timer - may re/set below + // this method calls itself on a timer because it needs to allow + // enough time for dragging to kick-in and set the isResizing flag + // dragging has a 100ms delay set, so this delay must be >100 + if (!el) // 1st call - mouseleave event + timer.set(name, function(){ onResizerLeave(evt, e); }, 200); + // if user is resizing, then dragStop will enableSelection(), so can skip it here + else if (!state[pane].isResizing && $.fn.enableSelection) // 2nd call - by timer + $("body").enableSelection(); + } + +/* + * ########################### + * INITIALIZATION METHODS + * ########################### + */ + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see none - triggered onInit + * @return mixed true = fully initialized | false = panes not initialized (yet) | 'cancel' = abort + */ +, _create = function () { + // initialize config/options + initOptions(); + var o = options; + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // init plugins for this layout, if there are any (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onCreate ); + + // options & state have been initialized, so now run beforeLoad callback + // onload will CANCEL layout creation if it returns false + if (false === _runCallbacks("onload_start")) + return 'cancel'; + + // initialize the container element + _initContainer(); + + // bind hotkey function - keyDown - if required + initHotkeys(); + + // bind window.onunload + $(window).bind("unload."+ sID, unload); + + // init plugins for this layout, if there are any (eg: customButtons) + runPluginCallbacks( Instance, $.layout.onLoad ); + + // if layout elements are hidden, then layout WILL NOT complete initialization! + // initLayoutElements will set initialized=true and run the onload callback IF successful + if (o.initPanes) _initLayoutElements(); + + delete state.creatingLayout; + + return state.initialized; + } + + /** + * Initialize the layout IF not already + * + * @see All methods in Instance run this test + * @return boolean true = layoutElements have been initialized | false = panes are not initialized (yet) + */ +, isInitialized = function () { + if (state.initialized || state.creatingLayout) return true; // already initialized + else return _initLayoutElements(); // try to init panes NOW + } + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see _create() & isInitialized + * @return An object pointer to the instance created + */ +, _initLayoutElements = function (retry) { + // initialize config/options + var o = options; + + // CANNOT init panes inside a hidden container! + if (!$N.is(":visible")) { + // handle Chrome bug where popup window 'has no height' + // if layout is BODY element, try again in 50ms + // SEE: http://layout.jquery-dev.net/samples/test_popup_window.html + if ( !retry && browser.webkit && $N[0].tagName === "BODY" ) + setTimeout(function(){ _initLayoutElements(true); }, 50); + return false; + } + + // a center pane is required, so make sure it exists + if (!getPane("center").length) { + if (options.showErrorMessages) + _log( lang.errCenterPaneMissing, true ); + return false; + } + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // update Container dims + $.extend(sC, elDims( $N )); + + // initialize all layout elements + initPanes(); // size & position panes - calls initHandles() - which calls initResizable() + + if (o.scrollToBookmarkOnLoad) { + var l = self.location; + if (l.hash) l.replace( l.hash ); // scrollTo Bookmark + } + + // check to see if this layout 'nested' inside a pane + if (Instance.hasParentLayout) + o.resizeWithWindow = false; + // bind resizeAll() for 'this layout instance' to window.resize event + else if (o.resizeWithWindow) + $(window).bind("resize."+ sID, windowResize); + + delete state.creatingLayout; + state.initialized = true; + + // init plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onReady ); + + // now run the onload callback, if exists + _runCallbacks("onload_end"); + + return true; // elements initialized successfully + } + + /** + * Initialize nested layouts - called when _initLayoutElements completes + * + * NOT CURRENTLY USED + * + * @see _initLayoutElements + * @return An object pointer to the instance created + */ +, _initChildLayouts = function () { + $.each(_c.allPanes, function (idx, pane) { + if (options[pane].initChildLayout) + createChildLayout( pane ); + }); + } + + /** + * Initialize nested layouts for a specific pane - can optionally pass layout-options + * + * @see _initChildLayouts + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {Object=} [opts] Layout-options - if passed, will OVERRRIDE options[pane].childOptions + * @return An object pointer to the layout instance created - or null + */ +, createChildLayout = function (evt_or_pane, opts) { + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , C = children + ; + if ($P) { + var $C = $Cs[pane] + , o = opts || options[pane].childOptions + , d = "layout" + // determine which element is supposed to be the 'child container' + // if pane has a 'containerSelector' OR a 'content-div', use those instead of the pane + , $Cont = o.containerSelector ? $P.find( o.containerSelector ) : ($C || $P) + , containerFound = $Cont.length + // see if a child-layout ALREADY exists on this element + , child = containerFound ? (C[pane] = $Cont.data(d) || null) : null + ; + // if no layout exists, but childOptions are set, try to create the layout now + if (!child && containerFound && o) + child = C[pane] = $Cont.eq(0).layout(o) || null; + if (child) + child.hasParentLayout = true; // set parent-flag in child + } + Instance[pane].child = C[pane]; // ALWAYS set pane-object pointer, even if null + } + +, windowResize = function () { + var delay = Number(options.resizeWithWindowDelay); + if (delay < 10) delay = 100; // MUST have a delay! + // resizing uses a delay-loop because the resize event fires repeatly - except in FF, but delay anyway + timer.clear("winResize"); // if already running + timer.set("winResize", function(){ + timer.clear("winResize"); + timer.clear("winResizeRepeater"); + var dims = elDims( $N ); + // only trigger resizeAll() if container has changed size + if (dims.innerWidth !== sC.innerWidth || dims.innerHeight !== sC.innerHeight) + resizeAll(); + }, delay); + // ALSO set fixed-delay timer, if not already running + if (!timer.data["winResizeRepeater"]) setWindowResizeRepeater(); + } + +, setWindowResizeRepeater = function () { + var delay = Number(options.resizeWithWindowMaxDelay); + if (delay > 0) + timer.set("winResizeRepeater", function(){ setWindowResizeRepeater(); resizeAll(); }, delay); + } + +, unload = function () { + var o = options; + + _runCallbacks("onunload_start"); + + // trigger plugin callabacks for this layout (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onUnload ); + + _runCallbacks("onunload_end"); + } + + /** + * Validate and initialize container CSS and events + * + * @see _create() + */ +, _initContainer = function () { + var + N = $N[0] + , tag = sC.tagName = N.tagName + , id = sC.id = N.id + , cls = sC.className = N.className + , o = options + , name = o.name + , fullPage= (tag === "BODY") + , props = "overflow,position,margin,padding,border" + , css = "layoutCSS" + , CSS = {} + , hid = "hidden" // used A LOT! + // see if this container is a 'pane' inside an outer-layout + , parent = $N.data("parentLayout") // parent-layout Instance + , pane = $N.data("layoutEdge") // pane-name in parent-layout + , isChild = parent && pane + ; + // sC -> state.container + sC.selector = $N.selector.split(".slice")[0]; + sC.ref = (o.name ? o.name +' layout / ' : '') + tag + (id ? "#"+id : cls ? '.['+cls+']' : ''); // used in messages + + $N .data({ + layout: Instance + , layoutContainer: sID // FLAG to indicate this is a layout-container - contains unique internal ID + }) + .addClass(o.containerClass) + ; + var layoutMethods = { + destroy: '' + , initPanes: '' + , resizeAll: 'resizeAll' + , resize: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in layoutMethods) { + $N.bind("layout"+ name.toLowerCase() +"."+ sID, Instance[ layoutMethods[name] || name ]); + } + + // if this container is another layout's 'pane', then set child/parent pointers + if (isChild) { + // update parent flag + Instance.hasParentLayout = true; + // set pointers to THIS child-layout (Instance) in parent-layout + // NOTE: parent.PANE.child is an ALIAS to parent.children.PANE + parent[pane].child = parent.children[pane] = $N.data("layout"); + } + + // SAVE original container CSS for use in destroy() + if (!$N.data(css)) { + // handle props like overflow different for BODY & HTML - has 'system default' values + if (fullPage) { + CSS = $.extend( elCSS($N, props), { + height: $N.css("height") + , overflow: $N.css("overflow") + , overflowX: $N.css("overflowX") + , overflowY: $N.css("overflowY") + }); + // ALSO SAVE CSS + var $H = $("html"); + $H.data(css, { + height: "auto" // FF would return a fixed px-size! + , overflow: $H.css("overflow") + , overflowX: $H.css("overflowX") + , overflowY: $H.css("overflowY") + }); + } + else // handle props normally for non-body elements + CSS = elCSS($N, props+",top,bottom,left,right,width,height,overflow,overflowX,overflowY"); + + $N.data(css, CSS); + } + + try { // format html/body if this is a full page layout + if (fullPage) { + $("html").css({ + height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + }); + $("body").css({ + position: "relative" + , height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + , margin: 0 + , padding: 0 // TODO: test whether body-padding could be handled? + , border: "none" // a body-border creates problems because it cannot be measured! + }); + + // set current layout-container dimensions + $.extend(sC, elDims( $N )); + } + else { // set required CSS for overflow and position + // ENSURE container will not 'scroll' + CSS = { overflow: hid, overflowX: hid, overflowY: hid } + var + p = $N.css("position") + , h = $N.css("height") + ; + // if this is a NESTED layout, then container/outer-pane ALREADY has position and height + if (!isChild) { + if (!p || !p.match(/fixed|absolute|relative/)) + CSS.position = "relative"; // container MUST have a 'position' + /* + if (!h || h=="auto") + CSS.height = "100%"; // container MUST have a 'height' + */ + } + $N.css( CSS ); + + // set current layout-container dimensions + if ( $N.is(":visible") ) { + $.extend(sC, elDims( $N )); + if (o.showErrorMessages && sC.innerHeight < 1) + _log( lang.errContainerHeight.replace(/CONTAINER/, sC.ref), true ); + } + } + } catch (ex) {} + } + + /** + * Bind layout hotkeys - if options enabled + * + * @see _create() and addPane() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHotkeys = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + // bind keyDown to capture hotkeys, if option enabled for ANY pane + $.each(panes, function (i, pane) { + var o = options[pane]; + if (o.enableCursorHotkey || o.customHotkey) { + $(document).bind("keydown."+ sID, keyDown); // only need to bind this ONCE + return false; // BREAK - binding was done + } + }); + } + + /** + * Build final OPTIONS data + * + * @see _create() + */ +, initOptions = function () { + var data, d, pane, key, val, i, c, o; + + // reprocess user's layout-options to have correct options sub-key structure + opts = $.layout.transformData( opts ); // panes = default subkey + + // auto-rename old options for backward compatibility + opts = $.layout.backwardCompatibility.renameAllOptions( opts ); + + // if user-options has 'panes' key (pane-defaults), process it... + if (!$.isEmptyObject(opts.panes)) { + // REMOVE any pane-defaults that MUST be set per-pane + data = $.layout.optionsMap.noDefault; + for (i=0, c=data.length; i 0) { + z.pane_normal = zo; + z.content_mask = max(zo+1, z.content_mask); // MIN = +1 + z.resizer_normal = max(zo+2, z.resizer_normal); // MIN = +2 + } + + function createFxOptions ( pane ) { + var o = options[pane] + , d = options.panes; + // ensure fxSettings key to avoid errors + if (!o.fxSettings) o.fxSettings = {}; + if (!d.fxSettings) d.fxSettings = {}; + + $.each(["_open","_close","_size"], function (i,n) { + var + sName = "fxName"+ n + , sSpeed = "fxSpeed"+ n + , sSettings = "fxSettings"+ n + // recalculate fxName according to specificity rules + , fxName = o[sName] = + o[sName] // options.west.fxName_open + || d[sName] // options.panes.fxName_open + || o.fxName // options.west.fxName + || d.fxName // options.panes.fxName + || "none" // MEANS $.layout.defaults.panes.fxName == "" || false || null || 0 + ; + // validate fxName to ensure is valid effect - MUST have effect-config data in options.effects + if (fxName === "none" || !$.effects || !$.effects[fxName] || !options.effects[fxName]) + fxName = o[sName] = "none"; // effect not loaded OR unrecognized fxName + + // set vars for effects subkeys to simplify logic + var fx = options.effects[fxName] || {} // effects.slide + , fx_all = fx.all || null // effects.slide.all + , fx_pane = fx[pane] || null // effects.slide.west + ; + // create fxSpeed[_open|_close|_size] + o[sSpeed] = + o[sSpeed] // options.west.fxSpeed_open + || d[sSpeed] // options.west.fxSpeed_open + || o.fxSpeed // options.west.fxSpeed + || d.fxSpeed // options.panes.fxSpeed + || null // DEFAULT - let fxSetting.duration control speed + ; + // create fxSettings[_open|_close|_size] + o[sSettings] = $.extend( + {} + , fx_all // effects.slide.all + , fx_pane // effects.slide.west + , d.fxSettings // options.panes.fxSettings + , o.fxSettings // options.west.fxSettings + , d[sSettings] // options.panes.fxSettings_open + , o[sSettings] // options.west.fxSettings_open + ); + }); + + // DONE creating action-specific-settings for this pane, + // so DELETE generic options - are no longer meaningful + delete o.fxName; + delete o.fxSpeed; + delete o.fxSettings; + } + + // DELETE 'panes' key now that we are done - values were copied to EACH pane + delete options.panes; + } + + /** + * Initialize module objects, styling, size and position for all panes + * + * @see _initElements() + * @param {string} pane The pane to process + */ +, getPane = function (pane) { + var sel = options[pane].paneSelector + if (sel.substr(0,1)==="#") // ID selector + // NOTE: elements selected 'by ID' DO NOT have to be 'children' + return $N.find(sel).eq(0); + else { // class or other selector + var $P = $N.children(sel).eq(0); + // look for the pane nested inside a 'form' element + return $P.length ? $P : $N.children("form:first").children(sel).eq(0); + } + } + +, initPanes = function () { + // NOTE: do north & south FIRST so we can measure their height - do center LAST + $.each(_c.allPanes, function (idx, pane) { + addPane( pane, true ); + }); + + // init the pane-handles NOW in case we have to hide or close the pane below + initHandles(); + + // now that all panes have been initialized and initially-sized, + // make sure there is really enough space available for each pane + $.each(_c.borderPanes, function (i, pane) { + if ($Ps[pane] && state[pane].isVisible) { // pane is OPEN + setSizeLimits(pane); + makePaneFit(pane); // pane may be Closed, Hidden or Resized by makePaneFit() + } + }); + // size center-pane AGAIN in case we 'closed' a border-pane in loop above + sizeMidPanes("center"); + + // Chrome/Webkit sometimes fires callbacks BEFORE it completes resizing! + // Before RC30.3, there was a 10ms delay here, but that caused layout + // to load asynchrously, which is BAD, so try skipping delay for now + + // process pane contents and callbacks, and init/resize child-layout if exists + $.each(_c.allPanes, function (i, pane) { + var o = options[pane]; + if ($Ps[pane]) { + if (state[pane].isVisible) { // pane is OPEN + sizeContent(pane); + // trigger pane.onResize if triggerEventsOnLoad = true + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); + } + // init childLayout - even if pane is not visible + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + }); + } + + /** + * Add a pane to the layout - subroutine of initPanes() + * + * @see initPanes() + * @param {string} pane The pane to process + * @param {boolean=} [force=false] Size content after init + */ +, addPane = function (pane, force) { + if (!force && !isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , fx = s.fx + , dir = c.dir + , spacing = o.spacing_open || 0 + , isCenter = (pane === "center") + , CSS = {} + , $P = $Ps[pane] + , size, minSize, maxSize + ; + // if pane-pointer already exists, remove the old one first + if ($P) + removePane( pane, false, true, false ); + else + $Cs[pane] = false; // init + + $P = $Ps[pane] = getPane(pane); + if (!$P.length) { + $Ps[pane] = false; // logic + return; + } + + // SAVE original Pane CSS + if (!$P.data("layoutCSS")) { + var props = "position,top,left,bottom,right,width,height,overflow,zIndex,display,backgroundColor,padding,margin,border"; + $P.data("layoutCSS", elCSS($P, props)); + } + + // create alias for pane data in Instance - initHandles will add more + Instance[pane] = { name: pane, pane: $Ps[pane], content: $Cs[pane], options: options[pane], state: state[pane], child: children[pane] }; + + // add classes, attributes & events + $P .data({ + parentLayout: Instance // pointer to Layout Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "pane" + }) + .css(c.cssReq).css("zIndex", options.zIndexes.pane_normal) + .css(o.applyDemoStyles ? c.cssDemo : {}) // demo styles + .addClass( o.paneClass +" "+ o.paneClass+"-"+pane ) // default = "ui-layout-pane ui-layout-pane-west" - may be a dupe of 'paneSelector' + .bind("mouseenter."+ sID, addHover ) + .bind("mouseleave."+ sID, removeHover ) + ; + var paneMethods = { + hide: '' + , show: '' + , toggle: '' + , close: '' + , open: '' + , slideOpen: '' + , slideClose: '' + , slideToggle: '' + , size: 'manualSizePane' + , sizePane: 'manualSizePane' + , sizeContent: '' + , sizeHandles: '' + , enableClosable: '' + , disableClosable: '' + , enableSlideable: '' + , disableSlideable: '' + , enableResizable: '' + , disableResizable: '' + , swapPanes: 'swapPanes' + , swap: 'swapPanes' + , move: 'swapPanes' + , removePane: 'removePane' + , remove: 'removePane' + , createChildLayout: '' + , resizeChildLayout: '' + , resizeAll: 'resizeAll' + , resizeLayout: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in paneMethods) { + $P.bind("layoutpane"+ name.toLowerCase() +"."+ sID, Instance[ paneMethods[name] || name ]); + } + + // see if this pane has a 'scrolling-content element' + initContent(pane, false); // false = do NOT sizeContent() - called later + + if (!isCenter) { + // call _parseSize AFTER applying pane classes & styles - but before making visible (if hidden) + // if o.size is auto or not valid, then MEASURE the pane and use that as its 'size' + size = s.size = _parseSize(pane, o.size); + minSize = _parseSize(pane,o.minSize) || 1; + maxSize = _parseSize(pane,o.maxSize) || 100000; + if (size > 0) size = max(min(size, maxSize), minSize); + + // state for border-panes + s.isClosed = false; // true = pane is closed + s.isSliding = false; // true = pane is currently open by 'sliding' over adjacent panes + s.isResizing= false; // true = pane is in process of being resized + s.isHidden = false; // true = pane is hidden - no spacing, resizer or toggler is visible! + + // array for 'pin buttons' whose classNames are auto-updated on pane-open/-close + if (!s.pins) s.pins = []; + } + // states common to ALL panes + s.tagName = $P[0].tagName; + s.edge = pane; // useful if pane is (or about to be) 'swapped' - easy find out where it is (or is going) + s.noRoom = false; // true = pane 'automatically' hidden due to insufficient room - will unhide automatically + s.isVisible = true; // false = pane is invisible - closed OR hidden - simplify logic + + // set css-position to account for container borders & padding + switch (pane) { + case "north": CSS.top = sC.insetTop; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "south": CSS.bottom = sC.insetBottom; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "west": CSS.left = sC.insetLeft; // top, bottom & height set by sizeMidPanes() + break; + case "east": CSS.right = sC.insetRight; // ditto + break; + case "center": // top, left, width & height set by sizeMidPanes() + } + + if (dir === "horz") // north or south pane + CSS.height = cssH($P, size); + else if (dir === "vert") // east or west pane + CSS.width = cssW($P, size); + //else if (isCenter) {} + + $P.css(CSS); // apply size -- top, bottom & height will be set by sizeMidPanes + if (dir != "horz") sizeMidPanes(pane, true); // true = skipCallback + + // close or hide the pane if specified in settings + if (o.initClosed && o.closable && !o.initHidden) + close(pane, true, true); // true, true = force, noAnimation + else if (o.initHidden || o.initClosed) + hide(pane); // will be completely invisible - no resizer or spacing + else if (!s.noRoom) + // make the pane visible - in case was initially hidden + $P.css("display","block"); + // ELSE setAsOpen() - called later by initHandles() + + // RESET visibility now - pane will appear IF display:block + $P.css("visibility","visible"); + + // check option for auto-handling of pop-ups & drop-downs + if (o.showOverflowOnHover) + $P.hover( allowOverflow, resetOverflow ); + + // if manually adding a pane AFTER layout initialization, then... + if (state.initialized) { + initHandles( pane ); + initHotkeys( pane ); + resizeAll(); // will sizeContent if pane is visible + if (s.isVisible) { // pane is OPEN + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); // a previously existing childLayout + } + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + } + + /** + * Initialize module objects, styling, size and position for all resize bars and toggler buttons + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHandles = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + + // create toggler DIVs for each pane, and set object pointers for them, eg: $R.north = north toggler DIV + $.each(panes, function (i, pane) { + var $P = $Ps[pane]; + $Rs[pane] = false; // INIT + $Ts[pane] = false; + if (!$P) return; // pane does not exist - skip + + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , rClass = o.resizerClass + , tClass = o.togglerClass + , side = c.side.toLowerCase() + , spacing = (s.isVisible ? o.spacing_open : o.spacing_closed) + , _pane = "-"+ pane // used for classNames + , _state = (s.isVisible ? "-open" : "-closed") // used for classNames + , I = Instance[pane] + // INIT RESIZER BAR + , $R = I.resizer = $Rs[pane] = $("
              ") + // INIT TOGGLER BUTTON + , $T = I.toggler = (o.closable ? $Ts[pane] = $("
              ") : false) + ; + + //if (s.isVisible && o.resizable) ... handled by initResizable + if (!s.isVisible && o.slidable) + $R.attr("title", o.sliderTip).css("cursor", o.sliderCursor); + + $R // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "paneLeft-resizer" + .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-resizer" : "")) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "resizer" + }) + .css(_c.resizers.cssReq).css("zIndex", options.zIndexes.resizer_normal) + .css(o.applyDemoStyles ? _c.resizers.cssDemo : {}) // add demo styles + .addClass(rClass +" "+ rClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if resizing is not enabled - handle with CSS instead + .hover(onResizerEnter, onResizerLeave) // ALWAYS NEED resizer.mouseleave to balance toggler.mouseenter + .appendTo($N) // append DIV to container + ; + + if ($T) { + $T // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "#paneLeft-toggler" + .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-toggler" : "")) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "toggler" + }) + .css(_c.togglers.cssReq) // add base/required styles + .css(o.applyDemoStyles ? _c.togglers.cssDemo : {}) // add demo styles + .addClass(tClass +" "+ tClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if toggling is not enabled - handle with CSS instead + .bind("mouseenter", onResizerEnter) // NEED toggler.mouseenter because mouseenter MAY NOT fire on resizer + .appendTo($R) // append SPAN to resizer DIV + ; + // ADD INNER-SPANS TO TOGGLER + if (o.togglerContent_open) // ui-layout-open + $(""+ o.togglerContent_open +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .data("layoutRole", "togglerContent") + .data("layoutEdge", pane) + .addClass("content content-open") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-open instead! + ; + if (o.togglerContent_closed) // ui-layout-closed + $(""+ o.togglerContent_closed +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .addClass("content content-closed") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-closed instead! + ; + // ADD TOGGLER.click/.hover + enableClosable(pane); + } + + // add Draggable events + initResizable(pane); + + // ADD CLASSNAMES & SLIDE-BINDINGS - eg: class="resizer resizer-west resizer-open" + if (s.isVisible) + setAsOpen(pane); // onOpen will be called, but NOT onResize + else { + setAsClosed(pane); // onClose will be called + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + }); + + // SET ALL HANDLE DIMENSIONS + sizeHandles(); + } + + + /** + * Initialize scrolling ui-layout-content div - if exists + * + * @see initPane() - or externally after an Ajax injection + * @param {string} [pane] The pane to process + * @param {boolean=} [resize=true] Size content after init + */ +, initContent = function (pane, resize) { + if (!isInitialized()) return; + var + o = options[pane] + , sel = o.contentSelector + , I = Instance[pane] + , $P = $Ps[pane] + , $C + ; + if (sel) $C = I.content = $Cs[pane] = (o.findNestedContent) + ? $P.find(sel).eq(0) // match 1-element only + : $P.children(sel).eq(0) + ; + if ($C && $C.length) { + $C.data("layoutRole", "content"); + // SAVE original Pane CSS + if (!$C.data("layoutCSS")) + $C.data("layoutCSS", elCSS($C, "height")); + $C.css( _c.content.cssReq ); + if (o.applyDemoStyles) { + $C.css( _c.content.cssDemo ); // add padding & overflow: auto to content-div + $P.css( _c.content.cssDemoPane ); // REMOVE padding/scrolling from pane + } + state[pane].content = {}; // init content state + if (resize !== false) sizeContent(pane); + // sizeContent() is called AFTER init of all elements + } + else + I.content = $Cs[pane] = false; + } + + + /** + * Add resize-bars to all panes that specify it in options + * -dependancy: $.fn.resizable - will skip if not found + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initResizable = function (panes) { + var draggingAvailable = $.layout.plugins.draggable + , side // set in start() + ; + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (idx, pane) { + var o = options[pane]; + if (!draggingAvailable || !$Ps[pane] || !o.resizable) { + o.resizable = false; + return true; // skip to next + } + + var s = state[pane] + , z = options.zIndexes + , c = _c[pane] + , side = c.dir=="horz" ? "top" : "left" + , opEdge = _c.oppositeEdge[pane] + , masks = pane +",center,"+ opEdge + (c.dir=="horz" ? ",west,east" : "") + , $P = $Ps[pane] + , $R = $Rs[pane] + , base = o.resizerClass + , lastPos = 0 // used when live-resizing + , r, live // set in start because may change + // 'drag' classes are applied to the ORIGINAL resizer-bar while dragging is in process + , resizerClass = base+"-drag" // resizer-drag + , resizerPaneClass = base+"-"+pane+"-drag" // resizer-north-drag + // 'helper' class is applied to the CLONED resizer-bar while it is being dragged + , helperClass = base+"-dragging" // resizer-dragging + , helperPaneClass = base+"-"+pane+"-dragging" // resizer-north-dragging + , helperLimitClass = base+"-dragging-limit" // resizer-drag + , helperPaneLimitClass = base+"-"+pane+"-dragging-limit" // resizer-north-drag + , helperClassesSet = false // logic var + ; + + if (!s.isClosed) + $R.attr("title", o.resizerTip) + .css("cursor", o.resizerCursor); // n-resize, s-resize, etc + + $R.draggable({ + containment: $N[0] // limit resizing to layout container + , axis: (c.dir=="horz" ? "y" : "x") // limit resizing to horz or vert axis + , delay: 0 + , distance: 1 + , grid: o.resizingGrid + // basic format for helper - style it using class: .ui-draggable-dragging + , helper: "clone" + , opacity: o.resizerDragOpacity + , addClasses: false // avoid ui-state-disabled class when disabled + //, iframeFix: o.draggableIframeFix // TODO: consider using when bug is fixed + , zIndex: z.resizer_drag + + , start: function (e, ui) { + // REFRESH options & state pointers in case we used swapPanes + o = options[pane]; + s = state[pane]; + // re-read options + live = o.livePaneResizing; + + // ondrag_start callback - will CANCEL hide if returns false + // TODO: dragging CANNOT be cancelled like this, so see if there is a way? + if (false === _runCallbacks("ondrag_start", pane)) return false; + + s.isResizing = true; // prevent pane from closing while resizing + timer.clear(pane+"_closeSlider"); // just in case already triggered + + // SET RESIZER LIMITS - used in drag() + setSizeLimits(pane); // update pane/resizer state + r = s.resizerPosition; + lastPos = ui.position[ side ] + + $R.addClass( resizerClass +" "+ resizerPaneClass ); // add drag classes + helperClassesSet = false; // reset logic var - see drag() + + // DISABLE TEXT SELECTION (probably already done by resizer.mouseOver) + $('body').disableSelection(); + + // MASK PANES CONTAINING IFRAMES, APPLETS OR OTHER TROUBLESOME ELEMENTS + showMasks( masks ); + } + + , drag: function (e, ui) { + if (!helperClassesSet) { // can only add classes after clone has been added to the DOM + //$(".ui-draggable-dragging") + ui.helper + .addClass( helperClass +" "+ helperPaneClass ) // add helper classes + .css({ right: "auto", bottom: "auto" }) // fix dir="rtl" issue + .children().css("visibility","hidden") // hide toggler inside dragged resizer-bar + ; + helperClassesSet = true; + // draggable bug!? RE-SET zIndex to prevent E/W resize-bar showing through N/S pane! + if (s.isSliding) $Ps[pane].css("zIndex", z.pane_sliding); + } + // CONTAIN RESIZER-BAR TO RESIZING LIMITS + var limit = 0; + if (ui.position[side] < r.min) { + ui.position[side] = r.min; + limit = -1; + } + else if (ui.position[side] > r.max) { + ui.position[side] = r.max; + limit = 1; + } + // ADD/REMOVE dragging-limit CLASS + if (limit) { + ui.helper.addClass( helperLimitClass +" "+ helperPaneLimitClass ); // at dragging-limit + window.defaultStatus = (limit>0 && pane.match(/north|west/)) || (limit<0 && pane.match(/south|east/)) ? lang.maxSizeWarning : lang.minSizeWarning; + } + else { + ui.helper.removeClass( helperLimitClass +" "+ helperPaneLimitClass ); // not at dragging-limit + window.defaultStatus = ""; + } + // DYNAMICALLY RESIZE PANES IF OPTION ENABLED + // won't trigger unless resizer has actually moved! + if (live && Math.abs(ui.position[side] - lastPos) >= o.liveResizingTolerance) { + lastPos = ui.position[side]; + resizePanes(e, ui, pane) + } + } + + , stop: function (e, ui) { + $('body').enableSelection(); // RE-ENABLE TEXT SELECTION + window.defaultStatus = ""; // clear 'resizing limit' message from statusbar + $R.removeClass( resizerClass +" "+ resizerPaneClass ); // remove drag classes from Resizer + s.isResizing = false; + resizePanes(e, ui, pane, true, masks); // true = resizingDone + } + + }); + }); + + /** + * resizePanes + * + * Sub-routine called from stop() - and drag() if livePaneResizing + * + * @param {!Object} evt + * @param {!Object} ui + * @param {string} pane + * @param {boolean=} [resizingDone=false] + */ + var resizePanes = function (evt, ui, pane, resizingDone, masks) { + var dragPos = ui.position + , c = _c[pane] + , o = options[pane] + , s = state[pane] + , resizerPos + ; + switch (pane) { + case "north": resizerPos = dragPos.top; break; + case "west": resizerPos = dragPos.left; break; + case "south": resizerPos = sC.offsetHeight - dragPos.top - o.spacing_open; break; + case "east": resizerPos = sC.offsetWidth - dragPos.left - o.spacing_open; break; + }; + // remove container margin from resizer position to get the pane size + var newSize = resizerPos - sC["inset"+ c.side]; + + // Disable OR Resize Mask(s) created in drag.start + if (!resizingDone) { + // ensure we meet liveResizingTolerance criteria + if (Math.abs(newSize - s.size) < o.liveResizingTolerance) + return; // SKIP resize this time + // resize the pane + manualSizePane(pane, newSize, false, true); // true = noAnimation + sizeMasks(); // resize all visible masks + } + else { // resizingDone + // ondrag_end callback + if (false !== _runCallbacks("ondrag_end", pane)) + manualSizePane(pane, newSize, false, true); // true = noAnimation + hideMasks(); // hide all masks, which include panes with 'content/iframe-masks' + if (s.isSliding && masks) // RE-SHOW only 'object-masks' so objects won't show through sliding pane + showMasks( masks, true ); // true = onlyForObjects + } + }; + } + + /** + * sizeMask + * + * Needed to overlay a DIV over an IFRAME-pane because mask CANNOT be *inside* the pane + * Called when mask created, and during livePaneResizing + */ +, sizeMask = function () { + var $M = $(this) + , pane = $M.data("layoutMask") // eg: "west" + , s = state[pane] + ; + // only masks over an IFRAME-pane need manual resizing + if (s.tagName == "IFRAME" && s.isVisible) // no need to mask closed/hidden panes + $M.css({ + top: s.offsetTop + , left: s.offsetLeft + , width: s.outerWidth + , height: s.outerHeight + }); + /* ALT Method... + var $P = $Ps[pane]; + $M.css( $P.position() ).css({ width: $P[0].offsetWidth, height: $P[0].offsetHeight }); + */ + } +, sizeMasks = function () { + $Ms.each( sizeMask ); // resize all 'visible' masks + } + +, showMasks = function (panes, onlyForObjects) { + var a = panes ? panes.split(",") : $.layout.config.allPanes + , z = options.zIndexes + , o, s; + $.each(a, function(i,p){ + s = state[p]; + o = options[p]; + if (s.isVisible && ( (!onlyForObjects && o.maskContents) || o.maskObjects )) { + getMasks(p).each(function(){ + sizeMask.call(this); + this.style.zIndex = s.isSliding ? z.pane_sliding+1 : z.pane_normal+1 + this.style.display = "block"; + }); + } + }); + } + +, hideMasks = function () { + // ensure no pane is resizing - could be a timing issue + var skip; + $.each( $.layout.config.borderPanes, function(i,p){ + if (state[p].isResizing) { + skip = true; + return false; // BREAK + } + }); + if (!skip) + $Ms.hide(); // hide ALL masks + } + +, getMasks = function (pane) { + var $Masks = $([]) + , $M, i = 0, c = $Ms.length + ; + for (; i CSS + if (sC.tagName === "BODY" && ($N = $("html")).data(css)) // RESET CSS + $N.css( $N.data(css) ).removeData(css); + + // trigger plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onDestroy ); + + // trigger state-management and onunload callback + unload(); + + // clear the Instance of everything except for container & options (so could recreate) + // RE-CREATE: myLayout = myLayout.container.layout( myLayout.options ); + for (n in Instance) + if (!n.match(/^(container|options)$/)) delete Instance[ n ]; + // add a 'destroyed' flag to make it easy to check + Instance.destroyed = true; + + // if this is a child layout, CLEAR the child-pointer in the parent + /* for now the pointer REMAINS, but with only container, options and destroyed keys + if (parentPane) { + var layout = parentPane.pane.data("parentLayout"); + parentPane.child = layout.children[ parentPane.name ] = null; + } + */ + + return Instance; // for coding convenience + } + + /** + * Remove a pane from the layout - subroutine of destroy() + * + * @see destroy() + * @param {string} pane The pane to process + * @param {boolean=} [remove=false] Remove the DOM element? + * @param {boolean=} [skipResize=false] Skip calling resizeAll()? + */ +, removePane = function (evt_or_pane, remove, skipResize, destroyChild) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $C = $Cs[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + ; + //alert( '$P.length = '+ $P.length ); + // NOTE: elements can still exist even after remove() + // so check for missing data(), which is cleared by removed() + if ($P && $.isEmptyObject( $P.data() )) $P = false; + if ($C && $.isEmptyObject( $C.data() )) $C = false; + if ($R && $.isEmptyObject( $R.data() )) $R = false; + if ($T && $.isEmptyObject( $T.data() )) $T = false; + + if ($P) $P.stop(true, true); + + // check for a child layout + var o = options[pane] + , s = state[pane] + , d = "layout" + , css = "layoutCSS" + , child = children[pane] || ($P ? $P.data(d) : 0) || ($C ? $C.data(d) : 0) || null + , destroy = destroyChild !== undefined ? destroyChild : o.destroyChildLayout + ; + + // FIRST destroy the child-layout(s) + if (destroy && child && !child.destroyed) { + child.destroy(true); // tell child-layout to destroy ALL its child-layouts too + if (child.destroyed) // destroy was successful + child = null; // clear pointer for logic below + } + + if ($P && remove && !child) + $P.remove(); + else if ($P && $P[0]) { + // create list of ALL pane-classes that need to be removed + var root = o.paneClass // default="ui-layout-pane" + , pRoot = root +"-"+ pane // eg: "ui-layout-pane-west" + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + , classes = [ root, root+_open, root+_closed, root+_sliding, // generic classes + pRoot, pRoot+_open, pRoot+_closed, pRoot+_sliding ] // pane-specific classes + ; + $.merge(classes, getHoverClasses($P, true)); // ADD hover-classes + // remove all Layout classes from pane-element + $P .removeClass( classes.join(" ") ) // remove ALL pane-classes + .removeData("parentLayout") + .removeData("layoutPane") + .removeData("layoutRole") + .removeData("layoutEdge") + .removeData("autoHidden") // in case set + .unbind("."+ sID) // remove ALL Layout events + // TODO: remove these extra unbind commands when jQuery is fixed + //.unbind("mouseenter"+ sID) + //.unbind("mouseleave"+ sID) + ; + // do NOT reset CSS if this pane/content is STILL the container of a nested layout! + // the nested layout will reset its 'container' CSS when/if it is destroyed + if ($C && $C.data(d)) { + // a content-div may not have a specific width, so give it one to contain the Layout + $C.width( $C.width() ); + child.resizeAll(); // now resize the Layout + } + else if ($C) + $C.css( $C.data(css) ).removeData(css).removeData("layoutRole"); + // remove pane AFTER content in case there was a nested layout + if (!$P.data(d)) + $P.css( $P.data(css) ).removeData(css); + } + + // REMOVE pane resizer and toggler elements + if ($T) $T.remove(); + if ($R) $R.remove(); + + // CLEAR all pointers and state data + Instance[pane] = $Ps[pane] = $Cs[pane] = $Rs[pane] = $Ts[pane] = children[pane] = false; + s = { removed: true }; + + if (!skipResize) + resizeAll(); + } + + +/* + * ########################### + * ACTION METHODS + * ########################### + */ + +, _hidePane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , s = $P[0].style + ; + if (o.useOffscreenClose) { + if (!$P.data(_c.offscreenReset)) + $P.data(_c.offscreenReset, { left: s.left, right: s.right }); + $P.css( _c.offscreenCSS ); + } + else + $P.hide().removeData(_c.offscreenReset); + } + +, _showPane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , off = _c.offscreenCSS + , old = $P.data(_c.offscreenReset) + , s = $P[0].style + ; + $P .show() // ALWAYS show, just in case + .removeData(_c.offscreenReset); + if (o.useOffscreenClose && old) { + if (s.left == off.left) + s.left = old.left; + if (s.right == off.right) + s.right = old.right; + } + } + + + /** + * Completely 'hides' a pane, including its spacing - as if it does not exist + * The pane is not actually 'removed' from the source, so can use 'show' to un-hide it + * + * @param {string} pane The pane being hidden, ie: north, south, east, or west + * @param {boolean=} [noAnimation=false] + */ +, hide = function (evt_or_pane, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || s.isHidden) return; // pane does not exist OR is already hidden + + // onhide_start callback - will CANCEL hide if returns false + if (state.initialized && false === _runCallbacks("onhide_start", pane)) return; + + s.isSliding = false; // just in case + + // now hide the elements + if ($R) $R.hide(); // hide resizer-bar + if (!state.initialized || s.isClosed) { + s.isClosed = true; // to trigger open-animation on show() + s.isHidden = true; + s.isVisible = false; + if (!state.initialized) + _hidePane(pane); // no animation when loading page + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center"); + if (state.initialized || o.triggerEventsOnLoad) + _runCallbacks("onhide_end", pane); + } + else { + s.isHiding = true; // used by onclose + close(pane, false, noAnimation); // adjust all panes to fit + } + } + + /** + * Show a hidden pane - show as 'closed' by default unless openPane = true + * + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [openPane=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, show = function (evt_or_pane, openPane, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || !s.isHidden) return; // pane does not exist OR is not hidden + + // onshow_start callback - will CANCEL show if returns false + if (false === _runCallbacks("onshow_start", pane)) return; + + s.isSliding = false; // just in case + s.isShowing = true; // used by onopen/onclose + //s.isHidden = false; - will be set by open/close - if not cancelled + + // now show the elements + //if ($R) $R.show(); - will be shown by open/close + if (openPane === false) + close(pane, true); // true = force + else + open(pane, false, noAnimation, noAlert); // adjust all panes to fit + } + + + /** + * Toggles a pane open/closed by calling either open or close + * + * @param {string} pane The pane being toggled, ie: north, south, east, or west + * @param {boolean=} [slide=false] + */ +, toggle = function (evt_or_pane, slide) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + ; + if (evt) // called from to $R.dblclick OR triggerPaneEvent + evt.stopImmediatePropagation(); + if (s.isHidden) + show(pane); // will call 'open' after unhiding it + else if (s.isClosed) + open(pane, !!slide); + else + close(pane); + } + + + /** + * Utility method used during init or other auto-processes + * + * @param {string} pane The pane being closed + * @param {boolean=} [setHandles=false] + */ +, _closePane = function (pane, setHandles) { + var + $P = $Ps[pane] + , s = state[pane] + ; + _hidePane(pane); + s.isClosed = true; + s.isVisible = false; + // UNUSED: if (setHandles) setAsClosed(pane, true); // true = force + } + + /** + * Close the specified pane (animation optional), and resize all other panes as needed + * + * @param {string} pane The pane being closed, ie: north, south, east, or west + * @param {boolean=} [force=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [skipCallback=false] + */ +, close = function (evt_or_pane, force, noAnimation, skipCallback) { + var pane = evtPane.call(this, evt_or_pane); + // if pane has been initialized, but NOT the complete layout, close pane instantly + if (!state.initialized && $Ps[pane]) { + _closePane(pane); // INIT pane as closed + return; + } + if (!isInitialized()) return; + + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing, isHiding, wasSliding; + + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.closable && !s.isShowing && !s.isHiding) // invalid request // (!o.resizable && !o.closable) ??? + || (!force && s.isClosed && !s.isShowing) // already closed + ) return queueNext(); + + // onclose_start callback - will CANCEL hide if returns false + // SKIP if just 'showing' a hidden pane as 'closed' + var abort = !s.isShowing && false === _runCallbacks("onclose_start", pane); + + // transfer logic vars to temp vars + isShowing = s.isShowing; + isHiding = s.isHiding; + wasSliding = s.isSliding; + // now clear the logic vars (REQUIRED before aborting) + delete s.isShowing; + delete s.isHiding; + + if (abort) return queueNext(); + + doFX = !noAnimation && !s.isClosed && (o.fxName_close != "none"); + s.isMoving = true; + s.isClosed = true; + s.isVisible = false; + // update isHidden BEFORE sizing panes + if (isHiding) s.isHidden = true; + else if (isShowing) s.isHidden = false; + + if (s.isSliding) // pane is being closed, so UNBIND trigger events + bindStopSlidingEvents(pane, false); // will set isSliding=false + else // resize panes adjacent to this one + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center", false); // false = NOT skipCallback + + // if this pane has a resizer bar, move it NOW - before animation + setAsClosed(pane); + + // CLOSE THE PANE + if (doFX) { // animate the close + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.hide( o.fxName_close, o.fxSettings_close, o.fxSpeed_close, function () { + lockPaneForFX(pane, false); // undo + if (s.isClosed) close_2(); + queueNext(); + }); + } + else { // hide the pane without animation + _hidePane(pane); + close_2(); + queueNext(); + }; + }); + + // SUBROUTINE + function close_2 () { + s.isMoving = false; + bindStartSlidingEvent(pane, true); // will enable if o.slidable = true + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane ); + } + + // hide any masks shown while closing + hideMasks(); + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad)) { + // onclose callback - UNLESS just 'showing' a hidden pane as 'closed' + if (!isShowing) _runCallbacks("onclose_end", pane); + // onhide OR onshow callback + if (isShowing) _runCallbacks("onshow_end", pane); + if (isHiding) _runCallbacks("onhide_end", pane); + } + } + } + + /** + * @param {string} pane The pane just closed, ie: north, south, east, or west + */ +, setAsClosed = function (pane) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + ; + $R + .css(side, sC[inset]) // move the resizer + .removeClass( rClass+_open +" "+ rClass+_pane+_open ) + .removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + .addClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .unbind("dblclick."+ sID) + ; + // DISABLE 'resizing' when closed - do this BEFORE bindStartSlidingEvent? + if (o.resizable && $.layout.plugins.draggable) + $R + .draggable("disable") + .removeClass("ui-state-disabled") // do NOT apply disabled styling - not suitable here + .css("cursor", "default") + .attr("title","") + ; + + // if pane has a toggler button, adjust that too + if ($T) { + $T + .removeClass( tClass+_open +" "+ tClass+_pane+_open ) + .addClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .attr("title", o.togglerTip_closed) // may be blank + ; + // toggler-content - if exists + $T.children(".content-open").hide(); + $T.children(".content-closed").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, false); + + if (state.initialized) { + // resize 'length' and position togglers for adjacent panes + sizeHandles(); + } + } + + /** + * Open the specified pane (animation optional), and resize all other panes as needed + * + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [slide=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, open = function (evt_or_pane, slide, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.resizable && !o.closable && !s.isShowing) // invalid request + || (s.isVisible && !s.isSliding) // already open + ) return queueNext(); + + // pane can ALSO be unhidden by just calling show(), so handle this scenario + if (s.isHidden && !s.isShowing) { + queueNext(); // call before show() because it needs the queue free + show(pane, true); + return; + } + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else + // make sure there is enough space available to open the pane + setSizeLimits(pane, slide); + + // onopen_start callback - will CANCEL open if returns false + var cbReturn = _runCallbacks("onopen_start", pane); + + if (cbReturn === "abort") + return queueNext(); + + // update pane-state again in case options were changed in onopen_start + if (cbReturn !== "NC") // NC = "No Callback" + setSizeLimits(pane, slide); + + if (s.minSize > s.maxSize) { // INSUFFICIENT ROOM FOR PANE TO OPEN! + syncPinBtns(pane, false); // make sure pin-buttons are reset + if (!noAlert && o.noRoomToOpenTip) + alert(o.noRoomToOpenTip); + return queueNext(); // ABORT + } + + if (slide) // START Sliding - will set isSliding=true + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (s.isSliding) // PIN PANE (stop sliding) - open pane 'normally' instead + bindStopSlidingEvents(pane, false); // UNBIND trigger events - will set isSliding=false + else if (o.slidable) + bindStartSlidingEvent(pane, false); // UNBIND trigger events + + s.noRoom = false; // will be reset by makePaneFit if 'noRoom' + makePaneFit(pane); + + // transfer logic var to temp var + isShowing = s.isShowing; + // now clear the logic var + delete s.isShowing; + + doFX = !noAnimation && s.isClosed && (o.fxName_open != "none"); + s.isMoving = true; + s.isVisible = true; + s.isClosed = false; + // update isHidden BEFORE sizing panes - WHY??? Old? + if (isShowing) s.isHidden = false; + + if (doFX) { // ANIMATE + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + if (s.isSliding) masks += ","+ _c.oppositeEdge[pane]; + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.show( o.fxName_open, o.fxSettings_open, o.fxSpeed_open, function() { + lockPaneForFX(pane, false); // undo + if (s.isVisible) open_2(); // continue + queueNext(); + }); + } + else { // no animation + _showPane(pane);// just show pane and... + open_2(); // continue + queueNext(); + }; + }); + + // SUBROUTINE + function open_2 () { + s.isMoving = false; + + // cure iframe display issues + _fixIframe(pane); + + // NOTE: if isSliding, then other panes are NOT 'resized' + if (!s.isSliding) { // resize all panes adjacent to this one + hideMasks(); // remove any masks shown while opening + sizeMidPanes(_c[pane].dir=="vert" ? "center" : "", false); // false = NOT skipCallback + } + + // set classes, position handles and execute callbacks... + setAsOpen(pane); + }; + + } + + /** + * @param {string} pane The pane just opened, ie: north, south, east, or west + * @param {boolean=} [skipCallback=false] + */ +, setAsOpen = function (pane, skipCallback) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _closed = "-closed" + , _sliding= "-sliding" + ; + $R + .css(side, sC[inset] + getPaneSize(pane)) // move the resizer + .removeClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .addClass( rClass+_open +" "+ rClass+_pane+_open ) + ; + if (s.isSliding) + $R.addClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + else // in case 'was sliding' + $R.removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + + if (o.resizerDblClickToggle) + $R.bind("dblclick", toggle ); + removeHover( 0, $R ); // remove hover classes + if (o.resizable && $.layout.plugins.draggable) + $R .draggable("enable") + .css("cursor", o.resizerCursor) + .attr("title", o.resizerTip); + else if (!s.isSliding) + $R.css("cursor", "default"); // n-resize, s-resize, etc + + // if pane also has a toggler button, adjust that too + if ($T) { + $T .removeClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .addClass( tClass+_open +" "+ tClass+_pane+_open ) + .attr("title", o.togglerTip_open); // may be blank + removeHover( 0, $T ); // remove hover classes + // toggler-content - if exists + $T.children(".content-closed").hide(); + $T.children(".content-open").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, !s.isSliding); + + // update pane-state dimensions - BEFORE resizing content + $.extend(s, elDims($P)); + + if (state.initialized) { + // resize resizer & toggler sizes for all panes + sizeHandles(); + // resize content every time pane opens - to be sure + sizeContent(pane, true); // true = remeasure headers/footers, even if 'pane.isMoving' + } + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad) && $P.is(":visible")) { + // onopen callback + _runCallbacks("onopen_end", pane); + // onshow callback - TODO: should this be here? + if (s.isShowing) _runCallbacks("onshow_end", pane); + + // ALSO call onresize because layout-size *may* have changed while pane was closed + if (state.initialized) + _runCallbacks("onresize_end", pane); + } + + // TODO: Somehow sizePane("north") is being called after this point??? + } + + + /** + * slideOpen / slideClose / slideToggle + * + * Pass-though methods for sliding + */ +, slideOpen = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + , delay = options[pane].slideDelay_open + ; + // prevent event from triggering on NEW resizer binding created below + if (evt) evt.stopImmediatePropagation(); + + if (s.isClosed && evt && evt.type === "mouseenter" && delay > 0) + // trigger = mouseenter - use a delay + timer.set(pane+"_openSlider", open_NOW, delay); + else + open_NOW(); // will unbind events if is already open + + /** + * SUBROUTINE for timed open + */ + function open_NOW () { + if (!s.isClosed) // skip if no longer closed! + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (!s.isMoving) + open(pane, true); // true = slide - open() will handle binding + }; + } + +, slideClose = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , delay = s.isMoving ? 1000 : 300 // MINIMUM delay - option may override + ; + if (s.isClosed || s.isResizing) + return; // skip if already closed OR in process of resizing + else if (o.slideTrigger_close === "click") + close_NOW(); // close immediately onClick + else if (o.preventQuickSlideClose && s.isMoving) + return; // handle Chrome quick-close on slide-open + else if (o.preventPrematureSlideClose && evt && $.layout.isMouseOverElem(evt, $Ps[pane])) + return; // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + else if (evt) // trigger = mouseleave - use a delay + // 1 sec delay if 'opening', else .3 sec + timer.set(pane+"_closeSlider", close_NOW, max(o.slideDelay_close, delay)); + else // called programically + close_NOW(); + + /** + * SUBROUTINE for timed close + */ + function close_NOW () { + if (s.isClosed) // skip 'close' if already closed! + bindStopSlidingEvents(pane, false); // UNBIND trigger events - TODO: is this needed here? + else if (!s.isMoving) + close(pane); // close will handle unbinding + }; + } + + /** + * @param {string} pane The pane being opened, ie: north, south, east, or west + */ +, slideToggle = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + toggle(pane, true); + } + + + /** + * Must set left/top on East/South panes so animation will work properly + * + * @param {string} pane The pane to lock, 'east' or 'south' - any other is ignored! + * @param {boolean} doLock true = set left/top, false = remove + */ +, lockPaneForFX = function (pane, doLock) { + var $P = $Ps[pane] + , s = state[pane] + , o = options[pane] + , z = options.zIndexes + ; + if (doLock) { + $P.css({ zIndex: z.pane_animate }); // overlay all elements during animation + if (pane=="south") + $P.css({ top: sC.insetTop + sC.innerHeight - $P.outerHeight() }); + else if (pane=="east") + $P.css({ left: sC.insetLeft + sC.innerWidth - $P.outerWidth() }); + } + else { // animation DONE - RESET CSS + // TODO: see if this can be deleted. It causes a quick-close when sliding in Chrome + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + if (pane=="south") + $P.css({ top: "auto" }); + // if pane is positioned 'off-screen', then DO NOT screw with it! + else if (pane=="east" && !$P.css("left").match(/\-99999/)) + $P.css({ left: "auto" }); + // fix anti-aliasing in IE - only needed for animations that change opacity + if (browser.msie && o.fxOpacityFix && o.fxName_open != "slide" && $P.css("filter") && $P.css("opacity") == 1) + $P[0].style.removeAttribute('filter'); + } + } + + + /** + * Toggle sliding functionality of a specific pane on/off by adding removing 'slide open' trigger + * + * @see open(), close() + * @param {string} pane The pane to enable/disable, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable sliding? + */ +, bindStartSlidingEvent = function (pane, enable) { + var o = options[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , evtName = o.slideTrigger_open.toLowerCase() + ; + if (!$R || (enable && !o.slidable)) return; + + // make sure we have a valid event + if (evtName.match(/mouseover/)) + evtName = o.slideTrigger_open = "mouseenter"; + else if (!evtName.match(/click|dblclick|mouseenter/)) + evtName = o.slideTrigger_open = "click"; + + $R + // add or remove event + [enable ? "bind" : "unbind"](evtName +'.'+ sID, slideOpen) + // set the appropriate cursor & title/tip + .css("cursor", enable ? o.sliderCursor : "default") + .attr("title", enable ? o.sliderTip : "") + ; + } + + /** + * Add or remove 'mouseleave' events to 'slide close' when pane is 'sliding' open or closed + * Also increases zIndex when pane is sliding open + * See bindStartSlidingEvent for code to control 'slide open' + * + * @see slideOpen(), slideClose() + * @param {string} pane The pane to process, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable events? + */ +, bindStopSlidingEvents = function (pane, enable) { + var o = options[pane] + , s = state[pane] + , c = _c[pane] + , z = options.zIndexes + , evtName = o.slideTrigger_close.toLowerCase() + , action = (enable ? "bind" : "unbind") + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + s.isSliding = enable; // logic + timer.clear(pane+"_closeSlider"); // just in case + + // remove 'slideOpen' event from resizer + // ALSO will raise the zIndex of the pane & resizer + if (enable) bindStartSlidingEvent(pane, false); + + // RE/SET zIndex - increases when pane is sliding-open, resets to normal when not + $P.css("zIndex", enable ? z.pane_sliding : z.pane_normal); + $R.css("zIndex", enable ? z.pane_sliding+2 : z.resizer_normal); // NOTE: mask = pane_sliding+1 + + // make sure we have a valid event + if (!evtName.match(/click|mouseleave/)) + evtName = o.slideTrigger_close = "mouseleave"; // also catches 'mouseout' + + // add/remove slide triggers + $R[action](evtName, slideClose); // base event on resize + // need extra events for mouseleave + if (evtName === "mouseleave") { + // also close on pane.mouseleave + $P[action]("mouseleave."+ sID, slideClose); + // cancel timer when mouse moves between 'pane' and 'resizer' + $R[action]("mouseenter."+ sID, cancelMouseOut); + $P[action]("mouseenter."+ sID, cancelMouseOut); + } + + if (!enable) + timer.clear(pane+"_closeSlider"); + else if (evtName === "click" && !o.resizable) { + // IF pane is not resizable (which already has a cursor and tip) + // then set the a cursor & title/tip on resizer when sliding + $R.css("cursor", enable ? o.sliderCursor : "default"); + $R.attr("title", enable ? o.togglerTip_open : ""); // use Toggler-tip, eg: "Close Pane" + } + + // SUBROUTINE for mouseleave timer clearing + function cancelMouseOut (evt) { + timer.clear(pane+"_closeSlider"); + evt.stopPropagation(); + } + } + + + /** + * Hides/closes a pane if there is insufficient room - reverses this when there is room again + * MUST have already called setSizeLimits() before calling this method + * + * @param {string} pane The pane being resized + * @param {boolean=} [isOpening=false] Called from onOpen? + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, makePaneFit = function (pane, isOpening, skipCallback, force) { + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isSidePane = c.dir==="vert" + , hasRoom = false + ; + // special handling for center & east/west panes + if (pane === "center" || (isSidePane && s.noVerticalRoom)) { + // see if there is enough room to display the pane + // ERROR: hasRoom = s.minHeight <= s.maxHeight && (isSidePane || s.minWidth <= s.maxWidth); + hasRoom = (s.maxHeight >= 0); + if (hasRoom && s.noRoom) { // previously hidden due to noRoom, so show now + _showPane(pane); + if ($R) $R.show(); + s.isVisible = true; + s.noRoom = false; + if (isSidePane) s.noVerticalRoom = false; + _fixIframe(pane); + } + else if (!hasRoom && !s.noRoom) { // not currently hidden, so hide now + _hidePane(pane); + if ($R) $R.hide(); + s.isVisible = false; + s.noRoom = true; + } + } + + // see if there is enough room to fit the border-pane + if (pane === "center") { + // ignore center in this block + } + else if (s.minSize <= s.maxSize) { // pane CAN fit + hasRoom = true; + if (s.size > s.maxSize) // pane is too big - shrink it + sizePane(pane, s.maxSize, skipCallback, force, true); // true = noAnimation + else if (s.size < s.minSize) // pane is too small - enlarge it + sizePane(pane, s.minSize, skipCallback, force, true); + // need s.isVisible because new pseudoClose method keeps pane visible, but off-screen + else if ($R && s.isVisible && $P.is(":visible")) { + // make sure resizer-bar is positioned correctly + // handles situation where nested layout was 'hidden' when initialized + var side = c.side.toLowerCase() + , pos = s.size + sC["inset"+ c.side] + ; + if ($.layout.cssNum($R, side) != pos) $R.css( side, pos ); + } + + // if was previously hidden due to noRoom, then RESET because NOW there is room + if (s.noRoom) { + // s.noRoom state will be set by open or show + if (s.wasOpen && o.closable) { + if (o.autoReopen) + open(pane, false, true, true); // true = noAnimation, true = noAlert + else // leave the pane closed, so just update state + s.noRoom = false; + } + else + show(pane, s.wasOpen, true, true); // true = noAnimation, true = noAlert + } + } + else { // !hasRoom - pane CANNOT fit + if (!s.noRoom) { // pane not set as noRoom yet, so hide or close it now... + s.noRoom = true; // update state + s.wasOpen = !s.isClosed && !s.isSliding; + if (s.isClosed){} // SKIP + else if (o.closable) // 'close' if possible + close(pane, true, true); // true = force, true = noAnimation + else // 'hide' pane if cannot just be closed + hide(pane, true); // true = noAnimation + } + } + } + + + /** + * sizePane / manualSizePane + * sizePane is called only by internal methods whenever a pane needs to be resized + * manualSizePane is an exposed flow-through method allowing extra code when pane is 'manually resized' + * + * @param {string} pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [noAnimation=false] + */ +, manualSizePane = function (evt_or_pane, size, skipCallback, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + // if resizing callbacks have been delayed and resizing is now DONE, force resizing to complete... + , forceResize = o.livePaneResizing && !s.isResizing + ; + // ANY call to manualSizePane disables autoResize - ie, percentage sizing + o.autoResize = false; + // flow-through... + sizePane(pane, size, skipCallback, forceResize, noAnimation); // will animate resize if option enabled + } + + /** + * @param {string} pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] Force resizing even if does not seem necessary + * @param {boolean=} [noAnimation=false] + */ +, sizePane = function (evt_or_pane, size, skipCallback, force, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) // probably NEVER called from event? + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , side = _c[pane].side.toLowerCase() + , dimName = _c[pane].sizeType.toLowerCase() + , inset = "inset"+ _c[pane].side + , skipResizeWhileDragging = s.isResizing && !o.triggerEventsDuringLiveResize + , doFX = noAnimation !== true && o.animatePaneSizing + , oldSize, newSize + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + // calculate 'current' min/max sizes + setSizeLimits(pane); // update pane-state + oldSize = s.size; + size = _parseSize(pane, size); // handle percentages & auto + size = max(size, _parseSize(pane, o.minSize)); + size = min(size, s.maxSize); + if (size < s.minSize) { // not enough room for pane! + queueNext(); // call before makePaneFit() because it needs the queue free + makePaneFit(pane, false, skipCallback); // will hide or close pane + return; + } + + // IF newSize is same as oldSize, then nothing to do - abort + if (!force && size === oldSize) + return queueNext(); + + // onresize_start callback CANNOT cancel resizing because this would break the layout! + if (!skipCallback && state.initialized && s.isVisible) + _runCallbacks("onresize_start", pane); + + // resize the pane, and make sure its visible + newSize = cssSize(pane, size); + + if (doFX && $P.is(":visible")) { // ANIMATE + var fx = $.layout.effects.size[pane] || $.layout.effects.size.all + , easing = o.fxSettings_size.easing || fx.easing + , z = options.zIndexes + , props = {}; + props[ dimName ] = newSize +'px'; + s.isMoving = true; + // overlay all elements during animation + $P.css({ zIndex: z.pane_animate }) + .show().animate( props, o.fxSpeed_size, easing, function(){ + // reset zIndex after animation + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + s.isMoving = false; + sizePane_2(); // continue + queueNext(); + }); + } + else { // no animation + $P.css( dimName, newSize ); // resize pane + // if pane is visible, then + if ($P.is(":visible")) + sizePane_2(); // continue + else { + // pane is NOT VISIBLE, so just update state data... + // when pane is *next opened*, it will have the new size + s.size = size; // update state.size + $.extend(s, elDims($P)); // update state dimensions + } + queueNext(); + }; + + }); + + // SUBROUTINE + function sizePane_2 () { + /* Panes are sometimes not sized precisely in some browsers!? + * This code will resize the pane up to 3 times to nudge the pane to the correct size + */ + var actual = dimName==='width' ? $P.outerWidth() : $P.outerHeight() + , tries = [{ + pane: pane + , count: 1 + , target: size + , actual: actual + , correct: (size === actual) + , attempt: size + , cssSize: newSize + }] + , lastTry = tries[0] + , msg = 'Inaccurate size after resizing the '+ pane +'-pane.' + ; + while ( !lastTry.correct ) { + thisTry = { pane: pane, count: lastTry.count+1, target: size }; + + if (lastTry.actual > size) + thisTry.attempt = max(0, lastTry.attempt - (lastTry.actual - size)); + else // lastTry.actual < size + thisTry.attempt = max(0, lastTry.attempt + (size - lastTry.actual)); + + thisTry.cssSize = cssSize(pane, thisTry.attempt); + $P.css( dimName, thisTry.cssSize ); + + thisTry.actual = dimName=='width' ? $P.outerWidth() : $P.outerHeight(); + thisTry.correct = (size === thisTry.actual); + + // if showDebugMessages, log attempts and alert the user of this *non-fatal error* + if (options.showDebugMessages) { + if ( tries.length === 1) { + _log(msg, false); + _log(lastTry, false); + } + _log(thisTry, false); + } + + // after 4 tries, is as close as its gonna get! + if (tries.length > 3) break; + + tries.push( thisTry ); + lastTry = tries[ tries.length - 1 ]; + } + // END TESTING CODE + + // update pane-state dimensions + s.size = size; + $.extend(s, elDims($P)); + + if (s.isVisible && $P.is(":visible")) { + // reposition the resizer-bar + if ($R) $R.css( side, size + sC[inset] ); + // resize the content-div + sizeContent(pane); + } + + if (!skipCallback && !skipResizeWhileDragging && state.initialized && s.isVisible) + _runCallbacks("onresize_end", pane); + + // resize all the adjacent panes, and adjust their toggler buttons + // when skipCallback passed, it means the controlling method will handle 'other panes' + if (!skipCallback) { + // also no callback if live-resize is in progress and NOT triggerEventsDuringLiveResize + if (!s.isSliding) sizeMidPanes(_c[pane].dir=="horz" ? "" : "center", skipResizeWhileDragging, force); + sizeHandles(); + } + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (size < oldSize && state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane, false, skipCallback ); + } + + // DEBUG - ALERT user/developer so they know there was a sizing problem + if (options.showDebugMessages && tries.length > 1) + _log(msg +'\nSee the Error Console for details.', true); + } + } + + /** + * @see initPanes(), sizePane(), resizeAll(), open(), close(), hide() + * @param {string} panes The pane(s) being resized, comma-delmited string + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, sizeMidPanes = function (panes, skipCallback, force) { + panes = (panes ? panes : "east,west,center").split(","); + + $.each(panes, function (i, pane) { + if (!$Ps[pane]) return; // NO PANE - skip + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isCenter= (pane=="center") + , hasRoom = true + , CSS = {} + , newCenter = calcNewCenterPaneDims() + ; + // update pane-state dimensions + $.extend(s, elDims($P)); + + if (pane === "center") { + if (!force && s.isVisible && newCenter.width === s.outerWidth && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // set state for makePaneFit() logic + $.extend(s, cssMinDims(pane), { + maxWidth: newCenter.width + , maxHeight: newCenter.height + }); + CSS = newCenter; + // convert OUTER width/height to CSS width/height + CSS.width = cssW($P, CSS.width); + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, CSS.height); + hasRoom = CSS.width >= 0 && CSS.height >= 0; // height >= 0 = ALWAYS TRUE NOW + // during layout init, try to shrink east/west panes to make room for center + if (!state.initialized && o.minWidth > s.outerWidth) { + var + reqPx = o.minWidth - s.outerWidth + , minE = options.east.minSize || 0 + , minW = options.west.minSize || 0 + , sizeE = state.east.size + , sizeW = state.west.size + , newE = sizeE + , newW = sizeW + ; + if (reqPx > 0 && state.east.isVisible && sizeE > minE) { + newE = max( sizeE-minE, sizeE-reqPx ); + reqPx -= sizeE-newE; + } + if (reqPx > 0 && state.west.isVisible && sizeW > minW) { + newW = max( sizeW-minW, sizeW-reqPx ); + reqPx -= sizeW-newW; + } + // IF we found enough extra space, then resize the border panes as calculated + if (reqPx === 0) { + if (sizeE != minE) + sizePane('east', newE, true, force, true); // true = skipCallback/noAnimation - initPanes will handle when done + if (sizeW != minW) + sizePane('west', newW, true, force, true); + // now start over! + sizeMidPanes('center', skipCallback, force); + return; // abort this loop + } + } + } + else { // for east and west, set only the height, which is same as center height + // set state.min/maxWidth/Height for makePaneFit() logic + if (s.isVisible && !s.noVerticalRoom) + $.extend(s, elDims($P), cssMinDims(pane)) + if (!force && !s.noVerticalRoom && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // east/west have same top, bottom & height as center + CSS.top = newCenter.top; + CSS.bottom = newCenter.bottom; + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, newCenter.height); + s.maxHeight = CSS.height; + hasRoom = (s.maxHeight >= 0); // ALWAYS TRUE NOW + if (!hasRoom) s.noVerticalRoom = true; // makePaneFit() logic + } + + if (hasRoom) { + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_start", pane); + + $P.css(CSS); // apply the CSS to pane + sizeHandles(pane); // also update resizer length + if (s.noRoom && !s.isClosed && !s.isHidden) + makePaneFit(pane); // will re-open/show auto-closed/hidden pane + if (s.isVisible) { + $.extend(s, elDims($P)); // update pane dimensions + if (state.initialized) sizeContent(pane); // also resize the contents, if exists + } + } + else if (!s.noRoom && s.isVisible) // no room for pane + makePaneFit(pane); // will hide or close pane + + if (!s.isVisible) + return true; // DONE - next pane + + /* + * Extra CSS for IE6 or IE7 in Quirks-mode - add 'width' to NORTH/SOUTH panes + * Normally these panes have only 'left' & 'right' positions so pane auto-sizes + * ALSO required when pane is an IFRAME because will NOT default to 'full width' + */ + if (pane === "center") { // finished processing midPanes + var b = $.layout.browser; + var fix = b.isIE6 || (b.msie && !$.support.boxModel); + if ($Ps.north && (fix || state.north.tagName=="IFRAME")) + $Ps.north.css("width", cssW($Ps.north, sC.innerWidth)); + if ($Ps.south && (fix || state.south.tagName=="IFRAME")) + $Ps.south.css("width", cssW($Ps.south, sC.innerWidth)); + } + + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_end", pane); + }); + } + + + /** + * @see window.onresize(), callbacks or custom code + */ +, resizeAll = function () { + if (!state.initialized) { + _initLayoutElements(); + return; // no need to resize since we just initialized! + } + var oldW = sC.innerWidth + , oldH = sC.innerHeight + ; + // cannot size layout when 'container' is hidden or collapsed + if (!$N.is(":visible:") ) return; + $.extend( state.container, elDims( $N ) ); // UPDATE container dimensions + if (!sC.outerHeight) return; + + // onresizeall_start will CANCEL resizing if returns false + // state.container has already been set, so user can access this info for calcuations + if (false === _runCallbacks("onresizeall_start")) return false; + + var // see if container is now 'smaller' than before + shrunkH = (sC.innerHeight < oldH) + , shrunkW = (sC.innerWidth < oldW) + , $P, o, s, dir + ; + // NOTE special order for sizing: S-N-E-W + $.each(["south","north","east","west"], function (i, pane) { + if (!$Ps[pane]) return; // no pane - SKIP + s = state[pane]; + o = options[pane]; + dir = _c[pane].dir; + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else { + setSizeLimits(pane); + makePaneFit(pane, false, true, true); // true=skipCallback/forceResize + } + }); + + sizeMidPanes("", true, true); // true=skipCallback, true=forceResize + sizeHandles(); // reposition the toggler elements + + // trigger all individual pane callbacks AFTER layout has finished resizing + o = options; // reuse alias + $.each(_c.allPanes, function (i, pane) { + $P = $Ps[pane]; + if (!$P) return; // SKIP + if (state[pane].isVisible) // undefined for non-existent panes + _runCallbacks("onresize_end", pane); // callback - if exists + }); + + _runCallbacks("onresizeall_end"); + //_triggerLayoutEvent(pane, 'resizeall'); + } + + /** + * Whenever a pane resizes or opens that has a nested layout, trigger resizeAll + * + * @param {string} pane The pane just resized or opened + */ +, resizeChildLayout = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + if (!options[pane].resizeChildLayout) return; + var $P = $Ps[pane] + , $C = $Cs[pane] + , d = "layout" + , P = Instance[pane] + , L = children[pane] + ; + // user may have manually set EITHER instance pointer, so handle that + if (P.child && !L) { + // have to reverse the pointers! + var el = P.child.container; + L = children[pane] = (el ? el.data(d) : 0) || null; // set pointer _directly_ to layout instance + } + + // if a layout-pointer exists, see if child has been destroyed + if (L && L.destroyed) + L = children[pane] = null; // clear child pointers + // no child layout pointer is set - see if there is a child layout NOW + if (!L) L = children[pane] = $P.data(d) || ($C ? $C.data(d) : 0) || null; // set/update child pointers + + // ALWAYS refresh the pane.child alias + P.child = children[pane]; + + if (L) L.resizeAll(); + } + + + /** + * IF pane has a content-div, then resize all elements inside pane to fit pane-height + * + * @param {string=} [panes=""] The pane(s) being resized + * @param {boolean=} [remeasure=false] Should the content (header/footer) be remeasured? + */ +, sizeContent = function (evt_or_panes, remeasure) { + if (!isInitialized()) return; + + var panes = evtPane.call(this, evt_or_panes); + panes = panes ? panes.split(",") : _c.allPanes; + + $.each(panes, function (idx, pane) { + var + $P = $Ps[pane] + , $C = $Cs[pane] + , o = options[pane] + , s = state[pane] + , m = s.content // m = measurements + ; + if (!$P || !$C || !$P.is(":visible")) return true; // NOT VISIBLE - skip + + // if content-element was REMOVED, update OR remove the pointer + if (!$C.length) { + initContent(pane, false); // false = do NOT sizeContent() - already there! + if (!$C) return; // no replacement element found - pointer have been removed + } + + // onsizecontent_start will CANCEL resizing if returns false + if (false === _runCallbacks("onsizecontent_start", pane)) return; + + // skip re-measuring offsets if live-resizing + if ((!s.isMoving && !s.isResizing) || o.liveContentResizing || remeasure || m.top == undefined) { + _measure(); + // if any footers are below pane-bottom, they may not measure correctly, + // so allow pane overflow and re-measure + if (m.hiddenFooters > 0 && $P.css("overflow") === "hidden") { + $P.css("overflow", "visible"); + _measure(); // remeasure while overflowing + $P.css("overflow", "hidden"); + } + } + // NOTE: spaceAbove/Below *includes* the pane paddingTop/Bottom, but not pane.borders + var newH = s.innerHeight - (m.spaceAbove - s.css.paddingTop) - (m.spaceBelow - s.css.paddingBottom); + + if (!$C.is(":visible") || m.height != newH) { + // size the Content element to fit new pane-size - will autoHide if not enough room + setOuterHeight($C, newH, true); // true=autoHide + m.height = newH; // save new height + }; + + if (state.initialized) + _runCallbacks("onsizecontent_end", pane); + + function _below ($E) { + return max(s.css.paddingBottom, (parseInt($E.css("marginBottom"), 10) || 0)); + }; + + function _measure () { + var + ignore = options[pane].contentIgnoreSelector + , $Fs = $C.nextAll().not(ignore || ':lt(0)') // not :lt(0) = ALL + , $Fs_vis = $Fs.filter(':visible') + , $F = $Fs_vis.filter(':last') + ; + m = { + top: $C[0].offsetTop + , height: $C.outerHeight() + , numFooters: $Fs.length + , hiddenFooters: $Fs.length - $Fs_vis.length + , spaceBelow: 0 // correct if no content footer ($E) + } + m.spaceAbove = m.top; // just for state - not used in calc + m.bottom = m.top + m.height; + if ($F.length) + //spaceBelow = (LastFooter.top + LastFooter.height) [footerBottom] - Content.bottom + max(LastFooter.marginBottom, pane.paddingBotom) + m.spaceBelow = ($F[0].offsetTop + $F.outerHeight()) - m.bottom + _below($F); + else // no footer - check marginBottom on Content element itself + m.spaceBelow = _below($C); + }; + }); + } + + + /** + * Called every time a pane is opened, closed, or resized to slide the togglers to 'center' and adjust their length if necessary + * + * @see initHandles(), open(), close(), resizeAll() + * @param {string=} [panes=""] The pane(s) being resized + */ +, sizeHandles = function (evt_or_panes) { + var panes = evtPane.call(this, evt_or_panes) + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (i, pane) { + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , $TC + ; + if (!$P || !$R) return; + + var + dir = _c[pane].dir + , _state = (s.isClosed ? "_closed" : "_open") + , spacing = o["spacing"+ _state] + , togAlign = o["togglerAlign"+ _state] + , togLen = o["togglerLength"+ _state] + , paneLen + , left + , offset + , CSS = {} + ; + + if (spacing === 0) { + $R.hide(); + return; + } + else if (!s.noRoom && !s.isHidden) // skip if resizer was hidden for any reason + $R.show(); // in case was previously hidden + + // Resizer Bar is ALWAYS same width/height of pane it is attached to + if (dir === "horz") { // north/south + //paneLen = $P.outerWidth(); // s.outerWidth || + paneLen = sC.innerWidth; // handle offscreen-panes + s.resizerLength = paneLen; + left = $.layout.cssNum($P, "left") + $R.css({ + width: cssW($R, paneLen) // account for borders & padding + , height: cssH($R, spacing) // ditto + , left: left > -9999 ? left : sC.insetLeft // handle offscreen-panes + }); + } + else { // east/west + paneLen = $P.outerHeight(); // s.outerHeight || + s.resizerLength = paneLen; + $R.css({ + height: cssH($R, paneLen) // account for borders & padding + , width: cssW($R, spacing) // ditto + , top: sC.insetTop + getPaneSize("north", true) // TODO: what if no North pane? + //, top: $.layout.cssNum($Ps["center"], "top") + }); + } + + // remove hover classes + removeHover( o, $R ); + + if ($T) { + if (togLen === 0 || (s.isSliding && o.hideTogglerOnSlide)) { + $T.hide(); // always HIDE the toggler when 'sliding' + return; + } + else + $T.show(); // in case was previously hidden + + if (!(togLen > 0) || togLen === "100%" || togLen > paneLen) { + togLen = paneLen; + offset = 0; + } + else { // calculate 'offset' based on options.PANE.togglerAlign_open/closed + if (isStr(togAlign)) { + switch (togAlign) { + case "top": + case "left": offset = 0; + break; + case "bottom": + case "right": offset = paneLen - togLen; + break; + case "middle": + case "center": + default: offset = round((paneLen - togLen) / 2); // 'default' catches typos + } + } + else { // togAlign = number + var x = parseInt(togAlign, 10); // + if (togAlign >= 0) offset = x; + else offset = paneLen - togLen + x; // NOTE: x is negative! + } + } + + if (dir === "horz") { // north/south + var width = cssW($T, togLen); + $T.css({ + width: width // account for borders & padding + , height: cssH($T, spacing) // ditto + , left: offset // TODO: VERIFY that toggler positions correctly for ALL values + , top: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginLeft", round((width-$TC.outerWidth())/2)); // could be negative + }); + } + else { // east/west + var height = cssH($T, togLen); + $T.css({ + height: height // account for borders & padding + , width: cssW($T, spacing) // ditto + , top: offset // POSITION the toggler + , left: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginTop", round((height-$TC.outerHeight())/2)); // could be negative + }); + } + + // remove ALL hover classes + removeHover( 0, $T ); + } + + // DONE measuring and sizing this resizer/toggler, so can be 'hidden' now + if (!state.initialized && (o.initHidden || s.noRoom)) { + $R.hide(); + if ($T) $T.hide(); + } + }); + } + + + /** + * @param {string} pane + */ +, enableClosable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + , o = options[pane] + ; + if (!$T) return; + o.closable = true; + $T .bind("click."+ sID, function(evt){ evt.stopPropagation(); toggle(pane); }) + .css("visibility", "visible") + .css("cursor", "pointer") + .attr("title", state[pane].isClosed ? o.togglerTip_closed : o.togglerTip_open) // may be blank + .show(); + } + /** + * @param {string} pane + * @param {boolean=} [hide=false] + */ +, disableClosable = function (evt_or_pane, hide) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + ; + if (!$T) return; + options[pane].closable = false; + // is closable is disable, then pane MUST be open! + if (state[pane].isClosed) open(pane, false, true); + $T .unbind("."+ sID) + .css("visibility", hide ? "hidden" : "visible") // instead of hide(), which creates logic issues + .css("cursor", "default") + .attr("title", ""); + } + + + /** + * @param {string} pane + */ +, enableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].slidable = true; + if (s.isClosed) + bindStartSlidingEvent(pane, true); + } + /** + * @param {string} pane + */ +, disableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R) return; + options[pane].slidable = false; + if (state[pane].isSliding) + close(pane, false, true); + else { + bindStartSlidingEvent(pane, false); + $R .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + } + + + /** + * @param {string} pane + */ +, enableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + , o = options[pane] + ; + if (!$R || !$R.data('draggable')) return; + o.resizable = true; + $R.draggable("enable"); + if (!state[pane].isClosed) + $R .css("cursor", o.resizerCursor) + .attr("title", o.resizerTip); + } + /** + * @param {string} pane + */ +, disableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].resizable = false; + $R .draggable("disable") + .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + + + /** + * Move a pane from source-side (eg, west) to target-side (eg, east) + * If pane exists on target-side, move that to source-side, ie, 'swap' the panes + * + * @param {string} pane1 The pane/edge being swapped + * @param {string} pane2 ditto + */ +, swapPanes = function (evt_or_pane1, pane2) { + if (!isInitialized()) return; + var pane1 = evtPane.call(this, evt_or_pane1); + // change state.edge NOW so callbacks can know where pane is headed... + state[pane1].edge = pane2; + state[pane2].edge = pane1; + // run these even if NOT state.initialized + if (false === _runCallbacks("onswap_start", pane1) + || false === _runCallbacks("onswap_start", pane2) + ) { + state[pane1].edge = pane1; // reset + state[pane2].edge = pane2; + return; + } + + var + oPane1 = copy( pane1 ) + , oPane2 = copy( pane2 ) + , sizes = {} + ; + sizes[pane1] = oPane1 ? oPane1.state.size : 0; + sizes[pane2] = oPane2 ? oPane2.state.size : 0; + + // clear pointers & state + $Ps[pane1] = false; + $Ps[pane2] = false; + state[pane1] = {}; + state[pane2] = {}; + + // ALWAYS remove the resizer & toggler elements + if ($Ts[pane1]) $Ts[pane1].remove(); + if ($Ts[pane2]) $Ts[pane2].remove(); + if ($Rs[pane1]) $Rs[pane1].remove(); + if ($Rs[pane2]) $Rs[pane2].remove(); + $Rs[pane1] = $Rs[pane2] = $Ts[pane1] = $Ts[pane2] = false; + + // transfer element pointers and data to NEW Layout keys + move( oPane1, pane2 ); + move( oPane2, pane1 ); + + // cleanup objects + oPane1 = oPane2 = sizes = null; + + // make panes 'visible' again + if ($Ps[pane1]) $Ps[pane1].css(_c.visible); + if ($Ps[pane2]) $Ps[pane2].css(_c.visible); + + // fix any size discrepancies caused by swap + resizeAll(); + + // run these even if NOT state.initialized + _runCallbacks("onswap_end", pane1); + _runCallbacks("onswap_end", pane2); + + return; + + function copy (n) { // n = pane + var + $P = $Ps[n] + , $C = $Cs[n] + ; + return !$P ? false : { + pane: n + , P: $P ? $P[0] : false + , C: $C ? $C[0] : false + , state: $.extend(true, {}, state[n]) + , options: $.extend(true, {}, options[n]) + } + }; + + function move (oPane, pane) { + if (!oPane) return; + var + P = oPane.P + , C = oPane.C + , oldPane = oPane.pane + , c = _c[pane] + , side = c.side.toLowerCase() + , inset = "inset"+ c.side + // save pane-options that should be retained + , s = $.extend({}, state[pane]) + , o = options[pane] + // RETAIN side-specific FX Settings - more below + , fx = { resizerCursor: o.resizerCursor } + , re, size, pos + ; + $.each("fxName,fxSpeed,fxSettings".split(","), function (i, k) { + fx[k +"_open"] = o[k +"_open"]; + fx[k +"_close"] = o[k +"_close"]; + fx[k +"_size"] = o[k +"_size"]; + }); + + // update object pointers and attributes + $Ps[pane] = $(P) + .data({ + layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + }) + .css(_c.hidden) + .css(c.cssReq) + ; + $Cs[pane] = C ? $(C) : false; + + // set options and state + options[pane] = $.extend({}, oPane.options, fx); + state[pane] = $.extend({}, oPane.state); + + // change classNames on the pane, eg: ui-layout-pane-east ==> ui-layout-pane-west + re = new RegExp(o.paneClass +"-"+ oldPane, "g"); + P.className = P.className.replace(re, o.paneClass +"-"+ pane); + + // ALWAYS regenerate the resizer & toggler elements + initHandles(pane); // create the required resizer & toggler + + // if moving to different orientation, then keep 'target' pane size + if (c.dir != _c[oldPane].dir) { + size = sizes[pane] || 0; + setSizeLimits(pane); // update pane-state + size = max(size, state[pane].minSize); + // use manualSizePane to disable autoResize - not useful after panes are swapped + manualSizePane(pane, size, true, true); // true/true = skipCallback/noAnimation + } + else // move the resizer here + $Rs[pane].css(side, sC[inset] + (state[pane].isVisible ? getPaneSize(pane) : 0)); + + + // ADD CLASSNAMES & SLIDE-BINDINGS + if (oPane.state.isVisible && !s.isVisible) + setAsOpen(pane, true); // true = skipCallback + else { + setAsClosed(pane); + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + // DESTROY the object + oPane = null; + }; + } + + + /** + * INTERNAL method to sync pin-buttons when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), setAsOpen(), setAsClosed() + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns = function (pane, doPin) { + if ($.layout.plugins.buttons) + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(Instance, $(selector), pane, doPin); + }); + } + +; // END var DECLARATIONS + + /** + * Capture keys when enableCursorHotkey - toggle pane if hotkey pressed + * + * @see document.keydown() + */ + function keyDown (evt) { + if (!evt) return true; + var code = evt.keyCode; + if (code < 33) return true; // ignore special keys: ENTER, TAB, etc + + var + PANE = { + 38: "north" // Up Cursor - $.ui.keyCode.UP + , 40: "south" // Down Cursor - $.ui.keyCode.DOWN + , 37: "west" // Left Cursor - $.ui.keyCode.LEFT + , 39: "east" // Right Cursor - $.ui.keyCode.RIGHT + } + , ALT = evt.altKey // no worky! + , SHIFT = evt.shiftKey + , CTRL = evt.ctrlKey + , CURSOR = (CTRL && code >= 37 && code <= 40) + , o, k, m, pane + ; + + if (CURSOR && options[PANE[code]].enableCursorHotkey) // valid cursor-hotkey + pane = PANE[code]; + else if (CTRL || SHIFT) // check to see if this matches a custom-hotkey + $.each(_c.borderPanes, function (i, p) { // loop each pane to check its hotkey + o = options[p]; + k = o.customHotkey; + m = o.customHotkeyModifier; // if missing or invalid, treated as "CTRL+SHIFT" + if ((SHIFT && m=="SHIFT") || (CTRL && m=="CTRL") || (CTRL && SHIFT)) { // Modifier matches + if (k && code === (isNaN(k) || k <= 9 ? k.toUpperCase().charCodeAt(0) : k)) { // Key matches + pane = p; + return false; // BREAK + } + } + }); + + // validate pane + if (!pane || !$Ps[pane] || !options[pane].closable || state[pane].isHidden) + return true; + + toggle(pane); + + evt.stopPropagation(); + evt.returnValue = false; // CANCEL key + return false; + }; + + +/* + * ###################################### + * UTILITY METHODS + * called externally or by initButtons + * ###################################### + */ + + /** + * Change/reset a pane overflow setting & zIndex to allow popups/drop-downs to work + * + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function allowOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + ; + + // if pane is already raised, then reset it before doing it again! + // this would happen if allowOverflow is attached to BOTH the pane and an element + if (s.cssSaved) + resetOverflow(pane); // reset previous CSS before continuing + + // if pane is raised by sliding or resizing, or its closed, then abort + if (s.isSliding || s.isResizing || s.isClosed) { + s.cssSaved = false; + return; + } + + var + newCSS = { zIndex: (options.zIndexes.resizer_normal + 1) } + , curCSS = {} + , of = $P.css("overflow") + , ofX = $P.css("overflowX") + , ofY = $P.css("overflowY") + ; + // determine which, if any, overflow settings need to be changed + if (of != "visible") { + curCSS.overflow = of; + newCSS.overflow = "visible"; + } + if (ofX && !ofX.match(/visible|auto/)) { + curCSS.overflowX = ofX; + newCSS.overflowX = "visible"; + } + if (ofY && !ofY.match(/visible|auto/)) { + curCSS.overflowY = ofX; + newCSS.overflowY = "visible"; + } + + // save the current overflow settings - even if blank! + s.cssSaved = curCSS; + + // apply new CSS to raise zIndex and, if necessary, make overflow 'visible' + $P.css( newCSS ); + + // make sure the zIndex of all other panes is normal + $.each(_c.allPanes, function(i, p) { + if (p != pane) resetOverflow(p); + }); + + }; + /** + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function resetOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + , CSS = s.cssSaved || {} + ; + // reset the zIndex + if (!s.isSliding && !s.isResizing) + $P.css("zIndex", options.zIndexes.pane_normal); + + // reset Overflow - if necessary + $P.css( CSS ); + + // clear var + s.cssSaved = false; + }; + +/* + * ##################### + * CREATE/RETURN LAYOUT + * ##################### + */ + + // validate that container exists + var $N = $(this).eq(0); // FIRST matching Container element + if (!$N.length) { + if (options.showErrorMessages) + _log( lang.errContainerMissing, true ); + return null; + }; + + // Users retrieve Instance of a layout with: $N.layout() OR $N.data("layout") + // return the Instance-pointer if layout has already been initialized + if ($N.data("layoutContainer") && $N.data("layout")) + return $N.data("layout"); // cached pointer + + // init global vars + var + $Ps = {} // Panes x5 - set in initPanes() + , $Cs = {} // Content x5 - set in initPanes() + , $Rs = {} // Resizers x4 - set in initHandles() + , $Ts = {} // Togglers x4 - set in initHandles() + , $Ms = $([]) // Masks - up to 2 masks per pane (IFRAME + DIV) + // aliases for code brevity + , sC = state.container // alias for easy access to 'container dimensions' + , sID = state.id // alias for unique layout ID/namespace - eg: "layout435" + ; + + // create Instance object to expose data & option Properties, and primary action Methods + var Instance = { + // layout data + options: options // property - options hash + , state: state // property - dimensions hash + // object pointers + , container: $N // property - object pointers for layout container + , panes: $Ps // property - object pointers for ALL Panes: panes.north, panes.center + , contents: $Cs // property - object pointers for ALL Content: contents.north, contents.center + , resizers: $Rs // property - object pointers for ALL Resizers, eg: resizers.north + , togglers: $Ts // property - object pointers for ALL Togglers, eg: togglers.north + // border-pane open/close + , hide: hide // method - ditto + , show: show // method - ditto + , toggle: toggle // method - pass a 'pane' ("north", "west", etc) + , open: open // method - ditto + , close: close // method - ditto + , slideOpen: slideOpen // method - ditto + , slideClose: slideClose // method - ditto + , slideToggle: slideToggle // method - ditto + // pane actions + , setSizeLimits: setSizeLimits // method - pass a 'pane' - update state min/max data + , _sizePane: sizePane // method -intended for user by plugins only! + , sizePane: manualSizePane // method - pass a 'pane' AND an 'outer-size' in pixels or percent, or 'auto' + , sizeContent: sizeContent // method - pass a 'pane' + , swapPanes: swapPanes // method - pass TWO 'panes' - will swap them + // pane element methods + , initContent: initContent // method - ditto + , addPane: addPane // method - pass a 'pane' + , removePane: removePane // method - pass a 'pane' to remove from layout, add 'true' to delete the pane-elem + , createChildLayout: createChildLayout// method - pass a 'pane' and (optional) layout-options (OVERRIDES options[pane].childOptions + // special pane option setting + , enableClosable: enableClosable // method - pass a 'pane' + , disableClosable: disableClosable // method - ditto + , enableSlidable: enableSlidable // method - ditto + , disableSlidable: disableSlidable // method - ditto + , enableResizable: enableResizable // method - ditto + , disableResizable: disableResizable// method - ditto + // utility methods for panes + , allowOverflow: allowOverflow // utility - pass calling element (this) + , resetOverflow: resetOverflow // utility - ditto + // layout control + , destroy: destroy // method - no parameters + , initPanes: isInitialized // method - no parameters + , resizeAll: resizeAll // method - no parameters + // callback triggering + , runCallbacks: _runCallbacks // method - pass evtName & pane (if a pane-event), eg: trigger("onopen", "west") + // alias collections of options, state and children - created in addPane and extended elsewhere + , hasParentLayout: false // set by initContainer() + , children: children // pointers to child-layouts, eg: Instance.children["west"] + , north: false // alias group: { name: pane, pane: $Ps[pane], options: options[pane], state: state[pane], child: children[pane] } + , south: false // ditto + , west: false // ditto + , east: false // ditto + , center: false // ditto + }; + + // create the border layout NOW + if (_create() === 'cancel') // onload_start callback returned false to CANCEL layout creation + return null; + else // true OR false -- if layout-elements did NOT init (hidden or do not exist), can auto-init later + return Instance; // return the Instance object + +} + + + + +/** + * jquery.layout.state 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * @dependancies: $.ui.cookie (above) + * + * @support: http://groups.google.com/group/jquery-ui-layout + */ +/* + * State-management options stored in options.stateManagement, which includes a .cookie hash + * Default options saves ALL KEYS for ALL PANES, ie: pane.size, pane.isClosed, pane.isHidden + * + * // STATE/COOKIE OPTIONS + * @example $(el).layout({ + stateManagement: { + enabled: true + , stateKeys: "east.size,west.size,east.isClosed,west.isClosed" + , cookie: { name: "appLayout", path: "/" } + } + }) + * @example $(el).layout({ stateManagement__enabled: true }) // enable auto-state-management using cookies + * @example $(el).layout({ stateManagement__cookie: { name: "appLayout", path: "/" } }) + * @example $(el).layout({ stateManagement__cookie__name: "appLayout", stateManagement__cookie__path: "/" }) + * + * // STATE/COOKIE METHODS + * @example myLayout.saveCookie( "west.isClosed,north.size,south.isHidden", {expires: 7} ); + * @example myLayout.loadCookie(); + * @example myLayout.deleteCookie(); + * @example var JSON = myLayout.readState(); // CURRENT Layout State + * @example var JSON = myLayout.readCookie(); // SAVED Layout State (from cookie) + * @example var JSON = myLayout.state.stateData; // LAST LOADED Layout State (cookie saved in layout.state hash) + * + * CUSTOM STATE-MANAGEMENT (eg, saved in a database) + * @example var JSON = myLayout.readState( "west.isClosed,north.size,south.isHidden" ); + * @example myLayout.loadState( JSON ); + */ + +/** + * UI COOKIE UTILITY + * + * A $.cookie OR $.ui.cookie namespace *should be standard*, but until then... + * This creates $.ui.cookie so Layout does not need the cookie.jquery.js plugin + * NOTE: This utility is REQUIRED by the layout.state plugin + * + * Cookie methods in Layout are created as part of State Management + */ +if (!$.ui) $.ui = {}; +$.ui.cookie = { + + // cookieEnabled is not in DOM specs, but DOES works in all browsers,including IE6 + acceptsCookies: !!navigator.cookieEnabled + +, read: function (name) { + var + c = document.cookie + , cs = c ? c.split(';') : [] + , pair // loop var + ; + for (var i=0, n=cs.length; i < n; i++) { + pair = $.trim(cs[i]).split('='); // name=value pair + if (pair[0] == name) // found the layout cookie + return decodeURIComponent(pair[1]); + + } + return null; + } + +, write: function (name, val, cookieOpts) { + var + params = '' + , date = '' + , clear = false + , o = cookieOpts || {} + , x = o.expires + ; + if (x && x.toUTCString) + date = x; + else if (x === null || typeof x === 'number') { + date = new Date(); + if (x > 0) + date.setDate(date.getDate() + x); + else { + date.setFullYear(1970); + clear = true; + } + } + if (date) params += ';expires='+ date.toUTCString(); + if (o.path) params += ';path='+ o.path; + if (o.domain) params += ';domain='+ o.domain; + if (o.secure) params += ';secure'; + document.cookie = name +'='+ (clear ? "" : encodeURIComponent( val )) + params; // write or clear cookie + } + +, clear: function (name) { + $.ui.cookie.write(name, '', {expires: -1}); + } + +}; +// if cookie.jquery.js is not loaded, create an alias to replicate it +// this may be useful to other plugins or code dependent on that plugin +if (!$.cookie) $.cookie = function (k, v, o) { + var C = $.ui.cookie; + if (v === null) + C.clear(k); + else if (v === undefined) + return C.read(k); + else + C.write(k, v, o); +}; + + +// tell Layout that the state plugin is available +$.layout.plugins.stateManagement = true; + +// Add State-Management options to layout.defaults +$.layout.config.optionRootKeys.push("stateManagement"); +$.layout.defaults.stateManagement = { + enabled: false // true = enable state-management, even if not using cookies +, autoSave: true // Save a state-cookie when page exits? +, autoLoad: true // Load the state-cookie when Layout inits? + // List state-data to save - must be pane-specific +, stateKeys: "north.size,south.size,east.size,west.size,"+ + "north.isClosed,south.isClosed,east.isClosed,west.isClosed,"+ + "north.isHidden,south.isHidden,east.isHidden,west.isHidden" +, cookie: { + name: "" // If not specified, will use Layout.name, else just "Layout" + , domain: "" // blank = current domain + , path: "" // blank = current page, '/' = entire website + , expires: "" // 'days' to keep cookie - leave blank for 'session cookie' + , secure: false + } +}; +// Set stateManagement as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("stateManagement"); + +/* + * State Management methods + */ +$.layout.state = { + + /** + * Get the current layout state and save it to a cookie + * + * myLayout.saveCookie( keys, cookieOpts ) + * + * @param {Object} inst + * @param {(string|Array)=} keys + * @param {Object=} opts + */ + saveCookie: function (inst, keys, cookieOpts) { + var o = inst.options + , oS = o.stateManagement + , oC = $.extend(true, {}, oS.cookie, cookieOpts || null) + , data = inst.state.stateData = inst.readState( keys || oS.stateKeys ) // read current panes-state + ; + $.ui.cookie.write( oC.name || o.name || "Layout", $.layout.state.encodeJSON(data), oC ); + return $.extend(true, {}, data); // return COPY of state.stateData data + } + + /** + * Remove the state cookie + * + * @param {Object} inst + */ +, deleteCookie: function (inst) { + var o = inst.options; + $.ui.cookie.clear( o.stateManagement.cookie.name || o.name || "Layout" ); + } + + /** + * Read & return data from the cookie - as JSON + * + * @param {Object} inst + */ +, readCookie: function (inst) { + var o = inst.options; + var c = $.ui.cookie.read( o.stateManagement.cookie.name || o.name || "Layout" ); + // convert cookie string back to a hash and return it + return c ? $.layout.state.decodeJSON(c) : {}; + } + + /** + * Get data from the cookie and USE IT to loadState + * + * @param {Object} inst + */ +, loadCookie: function (inst) { + var c = $.layout.state.readCookie(inst); // READ the cookie + if (c) { + inst.state.stateData = $.extend(true, {}, c); // SET state.stateData + inst.loadState(c); // LOAD the retrieved state + } + return c; + } + + /** + * Update layout options from the cookie, if one exists + * + * @param {Object} inst + * @param {Object=} stateData + * @param {boolean=} animate + */ +, loadState: function (inst, stateData, animate) { + stateData = $.layout.transformData( stateData ); // panes = default subkey + if ($.isEmptyObject( stateData )) return; + $.extend(true, inst.options, stateData); // update layout options + // if layout has already been initialized, then UPDATE layout state + if (inst.state.initialized) { + var pane, vis, o, s, h, c + , noAnimate = (animate===false) + ; + $.each($.layout.config.borderPanes, function (idx, pane) { + state = inst.state[pane]; + o = stateData[ pane ]; + if (typeof o != 'object') return; // no key, continue + s = o.size; + c = o.initClosed; + h = o.initHidden; + vis = state.isVisible; + // resize BEFORE opening + if (!vis) + inst.sizePane(pane, s, false, false); + if (h === true) inst.hide(pane, noAnimate); + else if (c === false) inst.open (pane, false, noAnimate); + else if (c === true) inst.close(pane, false, noAnimate); + else if (h === false) inst.show (pane, false, noAnimate); + // resize AFTER any other actions + if (vis) + inst.sizePane(pane, s, false, noAnimate); // animate resize if option passed + }); + }; + } + + /** + * Get the *current layout state* and return it as a hash + * + * @param {Object=} inst + * @param {(string|Array)=} keys + */ +, readState: function (inst, keys) { + var + data = {} + , alt = { isClosed: 'initClosed', isHidden: 'initHidden' } + , state = inst.state + , panes = $.layout.config.allPanes + , pair, pane, key, val + ; + if (!keys) keys = inst.options.stateManagement.stateKeys; // if called by user + if ($.isArray(keys)) keys = keys.join(","); + // convert keys to an array and change delimiters from '__' to '.' + keys = keys.replace(/__/g, ".").split(','); + // loop keys and create a data hash + for (var i=0, n=keys.length; i < n; i++) { + pair = keys[i].split("."); + pane = pair[0]; + key = pair[1]; + if ($.inArray(pane, panes) < 0) continue; // bad pane! + val = state[ pane ][ key ]; + if (val == undefined) continue; + if (key=="isClosed" && state[pane]["isSliding"]) + val = true; // if sliding, then *really* isClosed + ( data[pane] || (data[pane]={}) )[ alt[key] ? alt[key] : key ] = val; + } + return data; + } + + /** + * Stringify a JSON hash so can save in a cookie or db-field + */ +, encodeJSON: function (JSON) { + return parse(JSON); + function parse (h) { + var D=[], i=0, k, v, t; // k = key, v = value + for (k in h) { + v = h[k]; + t = typeof v; + if (t == 'string') // STRING - add quotes + v = '"'+ v +'"'; + else if (t == 'object') // SUB-KEY - recurse into it + v = parse(v); + D[i++] = '"'+ k +'":'+ v; + } + return '{'+ D.join(',') +'}'; + }; + } + + /** + * Convert stringified JSON back to a hash object + * @see $.parseJSON(), adding in jQuery 1.4.1 + */ +, decodeJSON: function (str) { + try { return $.parseJSON ? $.parseJSON(str) : window["eval"]("("+ str +")") || {}; } + catch (e) { return {}; } + } + + +, _create: function (inst) { + var _ = $.layout.state; + // ADD State-Management plugin methods to inst + $.extend( inst, { + // readCookie - update options from cookie - returns hash of cookie data + readCookie: function () { return _.readCookie(inst); } + // deleteCookie + , deleteCookie: function () { _.deleteCookie(inst); } + // saveCookie - optionally pass keys-list and cookie-options (hash) + , saveCookie: function (keys, cookieOpts) { return _.saveCookie(inst, keys, cookieOpts); } + // loadCookie - readCookie and use to loadState() - returns hash of cookie data + , loadCookie: function () { return _.loadCookie(inst); } + // loadState - pass a hash of state to use to update options + , loadState: function (stateData, animate) { _.loadState(inst, stateData, animate); } + // readState - returns hash of current layout-state + , readState: function (keys) { return _.readState(inst, keys); } + // add JSON utility methods too... + , encodeJSON: _.encodeJSON + , decodeJSON: _.decodeJSON + }); + + // init state.stateData key, even if plugin is initially disabled + inst.state.stateData = {}; + + // read and load cookie-data per options + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoLoad) // update the options from the cookie + inst.loadCookie(); + else // don't modify options - just store cookie data in state.stateData + inst.state.stateData = inst.readCookie(); + } + } + +, _unload: function (inst) { + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoSave) // save a state-cookie automatically + inst.saveCookie(); + else // don't save a cookie, but do store state-data in state.stateData key + inst.state.stateData = inst.readState(); + } + } + +}; + +// add state initialization method to Layout's onCreate array of functions +$.layout.onCreate.push( $.layout.state._create ); +$.layout.onUnload.push( $.layout.state._unload ); + + + + +/** + * jquery.layout.buttons 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * Docs: [ to come ] + * Tips: [ to come ] + */ + +// tell Layout that the state plugin is available +$.layout.plugins.buttons = true; + +// Add buttons options to layout.defaults +$.layout.defaults.autoBindCustomButtons = false; +// Specify autoBindCustomButtons as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("autoBindCustomButtons"); + +var lang = $.layout.language; + +/* + * Button methods + */ +$.layout.buttons = { + + /** + * Searches for .ui-layout-button-xxx elements and auto-binds them as layout-buttons + * + * @see _create() + * + * @param {Object} inst Layout Instance object + */ + init: function (inst) { + var pre = "ui-layout-button-" + , layout = inst.options.name || "" + , name; + $.each("toggle,open,close,pin,toggle-slide,open-slide".split(","), function (i, action) { + $.each($.layout.config.borderPanes, function (ii, pane) { + $("."+pre+action+"-"+pane).each(function(){ + // if button was previously 'bound', data.layoutName was set, but is blank if layout has no 'name' + name = $(this).data("layoutName") || $(this).attr("layoutName"); + if (name == undefined || name === layout) + inst.bindButton(this, action, pane); + }); + }); + }); + } + + /** + * Helper function to validate params received by addButton utilities + * + * Two classes are added to the element, based on the buttonClass... + * The type of button is appended to create the 2nd className: + * - ui-layout-button-pin // action btnClass + * - ui-layout-button-pin-west // action btnClass + pane + * - ui-layout-button-toggle + * - ui-layout-button-open + * - ui-layout-button-close + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * + * @return {Array.} If both params valid, the element matching 'selector' in a jQuery wrapper - otherwise returns null + */ +, get: function (inst, selector, pane, action) { + var $E = $(selector) + , o = inst.options + , err = o.showErrorMessages + ; + if (!$E.length) { // element not found + if (err) $.layout.msg(lang.errButton + lang.selector +": "+ selector, true); + } + else if ($.inArray(pane, $.layout.config.borderPanes) < 0) { // invalid 'pane' sepecified + if (err) $.layout.msg(lang.errButton + lang.pane +": "+ pane, true); + $E = $(""); // NO BUTTON + } + else { // VALID + var btn = o[pane].buttonClass +"-"+ action; + $E .addClass( btn +" "+ btn +"-"+ pane ) + .data("layoutName", o.name); // add layout identifier - even if blank! + } + return $E; + } + + + /** + * NEW syntax for binding layout-buttons - will eventually replace addToggle, addOpen, etc. + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} action + * @param {string} pane + */ +, bind: function (inst, selector, action, pane) { + var _ = $.layout.buttons; + switch (action.toLowerCase()) { + case "toggle": _.addToggle (inst, selector, pane); break; + case "open": _.addOpen (inst, selector, pane); break; + case "close": _.addClose (inst, selector, pane); break; + case "pin": _.addPin (inst, selector, pane); break; + case "toggle-slide": _.addToggle (inst, selector, pane, true); break; + case "open-slide": _.addOpen (inst, selector, pane, true); break; + } + return inst; + } + + /** + * Add a custom Toggler button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addToggle: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "toggle") + .click(function(evt){ + inst.toggle(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Open button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addOpen: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "open") + .attr("title", lang.Open) + .click(function (evt) { + inst.open(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Close button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + */ +, addClose: function (inst, selector, pane) { + $.layout.buttons.get(inst, selector, pane, "close") + .attr("title", lang.Close) + .click(function (evt) { + inst.close(pane); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Pin button for a pane + * + * Four classes are added to the element, based on the paneClass for the associated pane... + * Assuming the default paneClass and the pin is 'up', these classes are added for a west-pane pin: + * - ui-layout-pane-pin + * - ui-layout-pane-west-pin + * - ui-layout-pane-pin-up + * - ui-layout-pane-west-pin-up + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the pin is for: 'north', 'south', etc. + */ +, addPin: function (inst, selector, pane) { + var _ = $.layout.buttons + , $E = _.get(inst, selector, pane, "pin"); + if ($E.length) { + var s = inst.state[pane]; + $E.click(function (evt) { + _.setPinState(inst, $(this), pane, (s.isSliding || s.isClosed)); + if (s.isSliding || s.isClosed) inst.open( pane ); // change from sliding to open + else inst.close( pane ); // slide-closed + evt.stopPropagation(); + }); + // add up/down pin attributes and classes + _.setPinState(inst, $E, pane, (!s.isClosed && !s.isSliding)); + // add this pin to the pane data so we can 'sync it' automatically + // PANE.pins key is an array so we can store multiple pins for each pane + s.pins.push( selector ); // just save the selector string + } + return inst; + } + + /** + * Change the class of the pin button to make it look 'up' or 'down' + * + * @see addPin(), syncPins() + * + * @param {Object} inst Layout Instance object + * @param {Array.} $Pin The pin-span element in a jQuery wrapper + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin true = set the pin 'down', false = set it 'up' + */ +, setPinState: function (inst, $Pin, pane, doPin) { + var updown = $Pin.attr("pin"); + if (updown && doPin === (updown=="down")) return; // already in correct state + var + pin = inst.options[pane].buttonClass +"-pin" + , side = pin +"-"+ pane + , UP = pin +"-up "+ side +"-up" + , DN = pin +"-down "+side +"-down" + ; + $Pin + .attr("pin", doPin ? "down" : "up") // logic + .attr("title", doPin ? lang.Unpin : lang.Pin) + .removeClass( doPin ? UP : DN ) + .addClass( doPin ? DN : UP ) + ; + } + + /** + * INTERNAL function to sync 'pin buttons' when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), close() + * + * @param {Object} inst Layout Instance object + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns: function (inst, pane, doPin) { + // REAL METHOD IS _INSIDE_ LAYOUT - THIS IS HERE JUST FOR REFERENCE + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(inst, $(selector), pane, doPin); + }); + } + + +, _load: function (inst) { + var _ = $.layout.buttons; + // ADD Button methods to Layout Instance + // Note: sel = jQuery Selector string + $.extend( inst, { + bindButton: function (sel, action, pane) { return _.bind(inst, sel, action, pane); } + // DEPRECATED METHODS + , addToggleBtn: function (sel, pane, slide) { return _.addToggle(inst, sel, pane, slide); } + , addOpenBtn: function (sel, pane, slide) { return _.addOpen(inst, sel, pane, slide); } + , addCloseBtn: function (sel, pane) { return _.addClose(inst, sel, pane); } + , addPinBtn: function (sel, pane) { return _.addPin(inst, sel, pane); } + }); + + // init state array to hold pin-buttons + for (var i=0; i<4; i++) { + var pane = $.layout.config.borderPanes[i]; + inst.state[pane].pins = []; + } + + // auto-init buttons onLoad if option is enabled + if ( inst.options.autoBindCustomButtons ) + _.init(inst); + } + +, _unload: function (inst) { + // TODO: unbind all buttons??? + } + +}; + +// add initialization method to Layout's onLoad array of functions +$.layout.onLoad.push( $.layout.buttons._load ); +//$.layout.onUnload.push( $.layout.buttons._unload ); + + + +/** + * jquery.layout.browserZoom 1.0 + * $Date: 2011-12-29 08:00:00 (Thu, 29 Dec 2011) $ + * + * Copyright (c) 2012 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * @todo: Extend logic to handle other problematic zooming in browsers + * @todo: Add hotkey/mousewheel bindings to _instantly_ respond to these zoom event + */ + +// tell Layout that the plugin is available +$.layout.plugins.browserZoom = true; + +$.layout.defaults.browserZoomCheckInterval = 1000; +$.layout.optionsMap.layout.push("browserZoomCheckInterval"); + +/* + * browserZoom methods + */ +$.layout.browserZoom = { + + _init: function (inst) { + // abort if browser does not need this check + if ($.layout.browserZoom.ratio() !== false) + $.layout.browserZoom._setTimer(inst); + } + +, _setTimer: function (inst) { + // abort if layout destroyed or browser does not need this check + if (inst.destroyed) return; + var o = inst.options + , s = inst.state + // don't need check if inst has parentLayout, but check occassionally in case parent destroyed! + // MINIMUM 100ms interval, for performance + , ms = inst.hasParentLayout ? 5000 : Math.max( o.browserZoomCheckInterval, 100 ) + ; + // set the timer + setTimeout(function(){ + if (inst.destroyed || !o.resizeWithWindow) return; + var d = $.layout.browserZoom.ratio(); + if (d !== s.browserZoom) { + s.browserZoom = d; + inst.resizeAll(); + } + // set a NEW timeout + $.layout.browserZoom._setTimer(inst); + } + , ms ); + } + +, ratio: function () { + var w = window + , s = screen + , d = document + , dE = d.documentElement || d.body + , b = $.layout.browser + , v = b.version + , r, sW, cW + ; + // we can ignore all browsers that fire window.resize event onZoom + if ((b.msie && v > 8) + || !b.msie + ) return false; // don't need to track zoom + + if (s.deviceXDPI) + return calc(s.deviceXDPI, s.systemXDPI); + // everything below is just for future reference! + if (b.webkit && (r = d.body.getBoundingClientRect)) + return calc((r.left - r.right), d.body.offsetWidth); + if (b.webkit && (sW = w.outerWidth)) + return calc(sW, w.innerWidth); + if ((sW = s.width) && (cW = dE.clientWidth)) + return calc(sW, cW); + return false; // no match, so cannot - or don't need to - track zoom + + function calc (x,y) { return (parseInt(x,10) / parseInt(y,10) * 100).toFixed(); } + } + +}; +// add initialization method to Layout's onLoad array of functions +$.layout.onReady.push( $.layout.browserZoom._init ); + + + +})( jQuery ); \ No newline at end of file diff --git a/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif b/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif new file mode 100755 index 0000000000000000000000000000000000000000..085ccaecaf5fa5c34bc14cd2c2ed5cbbd8e25dcb GIT binary patch literal 1553 zcma)+TTl~c6vwlh>nb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png b/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png b/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..47acaadd737478ddb090f47f618810712163317b GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*Fsaj7L$B>N1x91EQ8x$BA993)+ za~~)OO5|O5sDCi_{N8&XlRv*c;OQ6|AR59NN?mFzWBXJVGojypu|S6~c)I$ztaD0e F0syyrGF|`x literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png b/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..9d149b1c61fdee2de5cb342741c243abb9058bb3 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAGVZ#9R3S1u{Kd978O6pI&z4VlotPxp?2+ z_9ElQf7546?+BK3Q+%u|q&R!~TD`8c>Nm?7lq=+T^Fw3At=o;a{QQ?&v0rW43t78u zKLhT~Z`;~2oo9{ezlW>%eD?g@v!}03FhOcY)5-`I-U~CHGCzC3{y9?4*Y0Z~JJ3=F MPgg&ebxsLQ09`{nxc~qF literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png b/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..014951529c315d6042e72febc310a4d2db5b4a82 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq?|lm978O6-<~(*YA_IRxoBVf zfAX@vsV!R#l$@#*eLnw)_Sv|_?i7P!ORnX)SxaXh+BPpZ!Fw~yjr&#G|Jw^YMHDhV X&EsZx`7bsSXc~j3tDnm{r-UW|&(SK+ literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png b/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..4443fdc1a156babad4336f004eaf5ca5dfa0f9ab GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hIh978O6-<~(*YA|4MzBvER z|7}eQtdCVXoUc2b{PaWeaIKu7gJx>{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png b/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png new file mode 100755 index 0000000000000000000000000000000000000000..81ecc362d50ef5abbc0420aacd5345822f1f6098 GIT binary patch literal 3457 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png b/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..6f4bd87c041453ef037c4a9a1a698f0105d02eba GIT binary patch literal 4369 zcmd^?`8O2)_s3@pGmLE*`#M>&Z`mr_kcwz5Nh&g=McJ3E!;mF=rLx5kBC;k~GmLMpp1PTBEIL*yWZ2yV5YP}*OvuV z9y7TY480F#b^riy$C{fO+XcT~a!PTXs^Jp@W?{%Avur5Qt_OJWvahFy0OGTz-H6S710eW= zf7(}J@1Nky1YQYgj#1}k2A%(;jxlRgP+1iq&kF>wKg2G1A5E88_;9~q=5v&^9URI> zU{_Q{VK2`o>9Q8IL9<~B861lCdJ&t}cSyfDO@ga=71!a)1~Q>>#Sl|I!e>YfYzg#6 zLhL<)0qDF`(>k>R8flnl2DHW0M+y?oEQcXpJo}fL?uIoppKf2+HRRWIsZ(-b;3_k2 z3NFbF1DP-uZWhbrV-ZL@@|b&**_hhzS=Wi;GYp;d69thD6fG`5=McYBZD{KWP z#Ejei1WtBhl9vLEeWN$L{$sU$d309l%^HIOT!&7$OFr##YGZf%e`s8bEQh_rS|R%% z;c433h|M&SO|}GES4g86QvSv1>}kHKb8hkU&az=*L6!0}(k=?=-f}R^AK5NqBbay# z8AaL90~GSiK6g=#y{T6mt->sUVI9MlS>!ZViDchJkmT(VvK{MXZi zCCK_sFC>j%3v4OKa@gcE_XH&oljMO3A7=|LAo`FmjA~X5)JeSgtUiI3&ocGyNyv=M zB6S8o#cT>fV=O=rv`F6p$Z)u=8G*cy7%QCH=e2;t?6F=v{Jfn~E^npE)7W=qVII+< zNLApY1R1rc)vLEQf5JE}3PO6$0wL1qTy*|(1U4}GyKy?G z$}~&oYM1g{AXU7-tkRBi)7_xzyciC~R#nA(tJYx}E!Jc1p~b3IjnmU<$uP8`g&(uE z<5#*swKH?W#Nw^MWDVK$DJy=4UG(MJiUrjgOe6EFRe+78<~%EP4O_1&iXwb~{H9<4 zj1GY|CI1i^3ida!FF-tgCqrQx_1-n| z!ZBS3CU<_tJlJJ$gGIQ#P?CuS_Fh`aV>`+`jqS#8#jPxdwO@*Z-5_nSP&uT?aDrl; z6km36K9=gjUjJB=O=4^d#u7&NHhIFCbW)#h^M&P2_L8q8)NR$Itcs5MX?Fvm4m5xQ zv_U4gMOS^~gbu`+mv*X}moGMX;8}%vm|!5ZV*vT4K7x7SoTPg|f!1km{H|873K-;v z2XdsQDdCy>?|vZAp4EV(O`c-UnIMElzk@HEMX|Z_6~*9$HbVd$Kul)blp(%%z%RIH zErEFO748!rx}#@;r*x&?2>1Xd;aF(n`1ZZnlyMAhRMLRta&U`f%0e`tF(;>CTP8}w?bkeQ?a^F zXehK50}yiu*BxX6_C|Todd8;s#)-ZCY0uMMXWMVz<(f3+Mf&SDwezmBNZ>LpC8^s@ zX#f&J>_$FVO;r`&T)K*--aq}r`;fQV&j={UImy{6gzBc8NnX=5S>PQJjqr9RkbrV% zJS*TA5bhlrgI)HqQpx9L z9;rcf$`Phd*UqK2T8h zRzT@%sF-qq`87GY@H=8&KMwyLbA#>=_tw^J`#s^AH&N^LS9SxoEy8jbBMF|h#5qE` zeO|zxPC@VNNUd!on(^cNUiM%;if|G$MK@u)IwvfYCBN>czv5qWR=Z5ZG_8{G93lD5y z?dRLKX_Ih?Rm9{e+2Q&*Ye85>dXsHr*Y1)7`)w&DMH~m}smCS`wa3SN|90Dj0Iqm_ zl#-qbW`U6G5HRsl23y>bf9v&eu1BeHDT+%o5qP=tcxQ4IL;DMuI--&8yI$Z=0V?8b zS*Fk=tHI~=yfZvoAn9POF)^(#QKB_x7Nql+SX$l>9nO%mu9;1x#nDD2R$nr191yt` zoYc7+&=NlF`uQJca@$3+QDxt}uZPWOjp*h^>tuB|f-(*9QyC}8ox6hZ4F3AIlph*E zS%Qt6TqMg3b=>H+$7IKN!%L-;g??cN4;oO<;N;roO78r5t$hWK$!{I#QWWq{QZiPx zm3?Za;z>R;Vt0SByRiFczw%|;^ek6KddVhD!I!P>lmO0XyLRost3}fc>pCpjzk^=E zzzB%#jEXOZs_0ijYg=IPC`MWd&Byn;#@-z!XV<;4Z!3Y@y1R#Wlu!d(&KKx{arH!b zs%exR{PDgr7rBFE$%O$~TITuf?Rr{kCpCrFbjI%{``>Y&BqPHm<{Gr-OS{-1ZL-DKY}Ab_+i- z-RsdBE9&J#;mqyV4d@k3%jr@V;c|w98(PbG)W^C-3O(RjAa;oq9HVE^8GJ-9Sa2=n zR_E`%d~NXUg9%B`b?V~6aLq_>Do)G;8t!+8iNew{PvK1LDTkp=RO;euh=-5(RoxeM z=TmIGNx_&nC{-bEVwU--tTY-@I2;{st9_1N9N1JQoMz12a>_rjp*_~6H4Q)(VfDWr zqS^e%;DO5>?@04SU0lTaR)wlafe$~}!x&7Q8GQT(isrS-9a5kH)7frS8RiXL4*knE zOjpuk?h^jfYvSOhn%Z$W^zhrGfhUWg&mTvJR_n{H$K4`NC%}E)AL;8DRT54UV5nyh z*nwj37Ik4vOtl&GS!Xgu=OSPmD_KFiFn43GHHs43sX!#c-&+0c?PWWWzw6O?CB^?> zlxO(r>p6Mx(>683jGUL-pydvSXFsI^T_VfDgVd1 zgP%*Rrf~MlU{eMI>!OVta!C~iJQAJWbRstjXKpc8e|TzS?EsaCAS!M|6Y#s^AY?&j zbt-?0H7U;!ITNU@4&+_r!CO!IA5C`xqqL)oKpF;Ji@XLU5TAoL2*s!`7WUwm!XxF= z(J5mTERnK9Y`!gnk`%7gf~3eZ92)&jNlQ!LR^eEqE_}dQ3T})}4AxB;l0YphF*v8H zy$vqyN!2_de_Y*{>;ByuDI^U4BA-bRGq+@<~OPa?{aIuvVcPo7ws&r zsvY!rR{4Z)gxGnf&?(2&;56vn4-<4LC-3TUxj^3G-{l{30}>yG;UDQ4F9HV6Y5t50 z%EJbg+D1w`OK;aWG;_l^Nb6T(u|Bn<$;fO3a^etBv%i5vRLBf(Qt3I6JF~_kfLf&Zihsy%5iCX zfYjV=;LXqMScF@5P?Q1Qi-P@k{r6IK{M~}Y=OX#{LsNfxQRU~>B`{W%A*p;372h{F zC=5?B5Gt6nx?<#Tm87Rkj?4zc+RG`y_t?SMNPFDL712u#w$$+(PO~Kyf+c4Qi-*QT z&w=GY2cs%8aqy-*Vh?gIDuk1+)lxATxRG(lky3)TpGt=W!GQGg?}^ge2cgzTn@moW z;VHGFgRr-b-U_Mo7l1{e$hDp1oCudF&0tG>5a(GzXB(1UGR?pz@n_3|TL5cGhXm8I zqugn5LsQEaVuYsH>=j$k}{A6oN+ zJAAEnrVU&vp_AD+Pi?&my&Y?ck>yAnzsD@IWwZS0VxBJDI~A+I;A#Q@3x=+8T&kB` zeVPf$^cKwmDO({Kyy`Qb`EBHv*73jjqF{P?u3L@og)@V;(#b;*=Cj)4Yz$O#kS%`h z5T#8pU#Ex2S$q>W!qhf`&z?!}oay@6no_A)QnQ4-OGG}ndM3p)zIHKgq`Xh~Kk(E= zb)@u$anp}LqwC@_fM3jnj0_BY$?XF6*U_d=+xKwU6Q*t#U=5!Pvkvx}F&F9Buo=ko zb~ExHHF~T^-`Y&)nIRgXyk%p8O#-wd(2^$fh!ikGDInH|5bYY&f>)}jIp^50cehnLfw$3b4L2a6<@P+Hpu43dd- pI7I=Ob33qfd2Q!BtNF8I)I0AlCaE82ef-r2n4d?PR+^xr{|_<8P#ORL literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png b/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png b/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..bd2cf079add1ca236adeb509698adabbffb08acb GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png b/DOCBOOK/webhelp/template/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..c7c53cb11904843e176e4ce1f4e7247cd90b3590 GIT binary patch literal 5355 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 t>_S@PWkKlK01oMw@pjEVpN literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/treeview/images/folder-closed.gif b/DOCBOOK/webhelp/template/common/jquery/treeview/images/folder-closed.gif new file mode 100755 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/treeview/images/folder-closed2.gif b/DOCBOOK/webhelp/template/common/jquery/treeview/images/folder-closed2.gif new file mode 100755 index 0000000000000000000000000000000000000000..541107888e6739a7b367ad3d208e1efa933f877d GIT binary patch literal 105 zcmZ?wbhEHb6ky4lrdiO0bk3ZcRLy6E?4f Hg~1vCyv-@{ literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/treeview/images/folder.gif b/DOCBOOK/webhelp/template/common/jquery/treeview/images/folder.gif new file mode 100755 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/treeview/images/folder2.gif b/DOCBOOK/webhelp/template/common/jquery/treeview/images/folder2.gif new file mode 100755 index 0000000000000000000000000000000000000000..2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18 GIT binary patch literal 106 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 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-gray-line.gif b/DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-gray-line.gif new file mode 100755 index 0000000000000000000000000000000000000000..37600447dc002bbc0dd16e1391b711360aae2e34 GIT binary patch literal 1877 zcmeH``8OK|0LL@bF~qSc#n50?JXNI+k>{#)#go3O{g`&sTA06+?`JRv{%1VB*=kSggPTmbZ?E2@Hm10RaqGJr~M_swEK9(fuU z9bXMur@nY#Xn3Qp;v6X2AT> zA>EM+>y@m1^a49s_E1X&+bZH^!_a=e{N6Su)s&U>sDnd!~=b?JFEB#FT8 zioZMFaK52~t&52oqdWW~2MJ1ue%%?en#qCfU7u!nC|sSJi5E`}X3h8)ly{+5*|mp+ zYqNE`8MkZN-)k};oze-j%*tB&sNuZif|=0wM%!=l0sXF(V)Zg+3_ zjbW;EBEX2ytHG=$Dx2Ha{HE%5V3a1hHnd2R32m%R*9#gFWf^4tEW&~!6yIiV)*e*l zireg~b4-8KL1b9Tn<4TQc-aUN7>=bBxE!0Aep)ES$dA>bZ zlac_>GSf$}Amq|xpG2f_X<$)PU0E=BExZ&}FuYP8&bwD%fgJCOsK5%!A}jIpO{>+( zGV75wBp|A>JOyOlNY1dq-7SE-P1iq3bVQx6%Yk<{*5}84F?-+_`Yq}S#U}_=SCzX? zX`+&GsCqhDsvFh7AWWM#ck=(Rps}W(-f3)-hf$w$i>58wymeug)RAsnbE^=j9L-?f zpi-Z);Tuuyqj4L}9YcZxTIWO&p4K%*X3?0-?f4ef8jtm%XgkyEBd6Ds8uOK?%`{)>0D(Cr`A4IcZoG`&U18YKqjoYtzQo|Dt=**7zk597IbK9sJXFyhNi zwtW@gRcSW?gGKMW@kxrlG#OY-do~qJ*-V&3Js8`Y3GYwom_@$iB+g=ml}U5>1u1QR zAzAiA(jrL>&74Uwwqm}`xJ1AT;O_GsONn5#!*ULyhq;oEIkp%2g#mF(6lf@Jxhn4i zV~t87;8y4{2KZG5ao+KL=SUTJlQq*4|E@_PjJ3`!o(GG)^}?JsMpy*)mQYPCf1;Sk`8-A8at@Xm#Gb>oe(v%3b{156)aykj?nu&|IbZfh z!lZx$?iVd}BHwuNSkmco3iwy5Drr$xV-lid6PqT(u95$N>8c#Jm2RMN_SB1WJe9Oq z(x$uU@TQLQX@QVr>U~Sa;vEmbZ_QL7odp^*-BsqVXSqmf)oqYES3tl*66F0YO=#d1 rlgk$~puxAlhuJ^ZHqgioD1o1DVtQEUit~KllU0$5nh)jV0N{TCC3Zqn literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-gray.gif b/DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-gray.gif new file mode 100755 index 0000000000000000000000000000000000000000..cfb8a2f0961b880d9ecc9e59f831d0c0bf9d06db GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5F}1vNN-#bFE}n2rob1X65+pkEe*DZwLSXy)sc-G6LrLE|#j%ny@ltx#{|>*k3`b zudj+f+$8$@s#fHh^zF++cYjOsT#=i)PgZ*SBbQFk<=6g7TzYe_x%fYqoR5WW_>5Nf zsIRkcJbHA@c(c>D3XzqU)=k#8J9nngIK5|{y|vw$2$RE?mT4~XtDRLEe|<_~c?_?$ zLGJZ!!S{W4%zp58Z=>w%X})`Qe0&`0sXRUALwVLJuj#KvHA1S2+ow&BYJYdfr2O^1 zna!)!@5=7^`T51=)#j2iwbhrWRX*39_q(R{^Y??#w#k`8!n#b?Ah=gT4^b_6Je!p-pqnUi6)T{Kw4)JLb3tD)cb}Z;R&ALM=NKo^J zQum3S7LQAK7iB!^v-vhdvhxz-&N&k%mqtvOXdV2 literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-red-line.gif b/DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-red-line.gif new file mode 100755 index 0000000000000000000000000000000000000000..df9e749a8f1f58862588efc64988003efad01d51 GIT binary patch literal 1877 zcmeH``BxGK0LPh{$5cGF%CuRcF0W^1+Eb91Y0har@ns%QJPI-bCps}CP-u#GY96he zH{=x}8cR_?6wMSBHp}~@d8B5Ec_ztT`#0A2hwu02&*#0br`JzT&Np-c8>+j2FWJW9 z|J$$i)xiJGfXTkfHvoVFVDp9i%O?Qp3V=f6d5==7Sk4KMl>Ucik`YxtvJ<)$%#TPKR% zdeBegW3Nr-TZ$_DvX!7#=EQu`)|{{_NO4?Hnuz--`I}N3UjF&+?uwLk+=>GJd{B_Tc2OKbjN9H> z96NPSF%oo|+^NT@plDh-RsN>!ws$&N>eV+-RSK`GN-+xQlcpP|{VXMbZmGY?Sg+bE z&yqDeRb-m~Xn;($Rkc9os0lNWR0x7V&viYtFw425?`)O{#Xnxi^Z-rV%z`xuPf1K3U`ignx^9LiY{9RF`M1 z((4&CBBq9gRTxIqvdNQH4XvU-teM=&r#I{BRpE@Mf`UowW*aYDTj; zR~d}wJj7bmv%$EvhL%3@95+YnP@jZFjkyaK?LZqem&Cp}E@#J}7%>obDszfKXbSed{!N zqe%A5h1G9<<|OWgt(pyPNUi%mt_OllWQ$!DHV#9VzJogSLla83`aMi%;zcml$vXr7 zf<%YcL08HgN8s@2tufz(==0;jh0Ny@q4f1T-P5MdE9;FzHSA-Pm3Wn^KX5K-#%-h+YndE*c}A#} z97|nymmXX*xOhw~p_=<#*Rp;q1c;i_)TkyvQ;xgVtY5mTyh_&|ZEzU`%%?)%UDt;N sUpBjNE)^Df<9oQ%i{r+6SwTgJWAz*lYeQMK?>m|{T3!EviV6VoFXq=mv;Y7A literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-red.gif b/DOCBOOK/webhelp/template/common/jquery/treeview/images/treeview-red.gif new file mode 100755 index 0000000000000000000000000000000000000000..3bbb3a157f1568d59d6db02b55a3b3fe9a1ff7a7 GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5q9rFMYXq;dkzBCUd%AXV z7f->2WoKqf=UU0E5MF-1&C2oHA5RfQ-wyu&du5`wWCYCfT`X0jHDP7Qa?|x$vA=>= zUtbk}xJmT)RjtT1>D!lu?*5kMxgs}ppRDxuM=qV7%dh>Fxb)^;bMb#JIUft%@ENV{ zQD0}@c=YI)@n)xQ6(TDyt(&ZGckWD~aeB`@duzKh5hjN(Ez?}&S39dT{`!=}@)%xg zgWT)eg75q8nEl}G-bUHi(|q^r`1m-~Q+ayKhw`jdUejNTYJ^l3w@;fM)&A~|N%`x2 zGn-ed-<93-^Ye?#tIZ{4YO60#t9-6I?{`h@=kEuf$II8+R(@HSYaUSgyf$2+OgK}0 zZsRjUi+L5dHILtK5edt9=qI|b{eIzIMl<7PRm>?O4!tnstX#kf7!b zrS20uEgqNfF3Nb+XY*}_WalNuopUBkE{&Kl(L5+ZuF(6`HI*Fyu5b4nE$kweHiYk+ hA)Dse=Ki!azG~*body { + font-size: 16px; + font-size: 68.75%; +} Reset Base Font Size */ + /* +body { + font-family: Verdana, helvetica, arial, sans-serif; + font-size: 68.75%; + background: #fff; + color: #333; +} */ + +a img { border: none; } \ No newline at end of file diff --git a/DOCBOOK/webhelp/template/common/jquery/treeview/jquery.treeview.min.js b/DOCBOOK/webhelp/template/common/jquery/treeview/jquery.treeview.min.js new file mode 100755 index 0000000..e693321 --- /dev/null +++ b/DOCBOOK/webhelp/template/common/jquery/treeview/jquery.treeview.min.js @@ -0,0 +1,16 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * kasunbg: changed the cookieid name + * + */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("

              ").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file diff --git a/DOCBOOK/webhelp/template/common/main.js b/DOCBOOK/webhelp/template/common/main.js new file mode 100755 index 0000000..5957fb4 --- /dev/null +++ b/DOCBOOK/webhelp/template/common/main.js @@ -0,0 +1,276 @@ +/** + * Miscellaneous js functions for WebHelp + * Kasun Gajasinghe, http://kasunbg.blogspot.com + * David Cramer, http://www.thingbag.net + * + */ + +//Turn ON and OFF the animations for Show/Hide Sidebar. Extend this to other anime as well if any. +var noAnimations=false; + +$(document).ready(function() { + // When you click on a link to an anchor, scroll down + // 105 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link within a page. + $('a[href*=#]').click(function() { + if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') + && location.hostname == this.hostname) { + var $target = $(this.hash); + $target = $target.length && $target + || $('[name=' + this.hash.slice(1) +']'); + if (!(this.hash == "#searchDiv" || this.hash == "#treeDiv" || this.hash == "") && $target.length) { + var targetOffset = $target.offset().top - 120; + $('html,body') + .animate({scrollTop: targetOffset}, 200); + return false; + } + } + }); + + // $("#showHideHighlight").button(); //add jquery button styling to 'Go' button + //Generate tabs in nav-pane with JQuery + $(function() { + $("#tabs").tabs({ + cookie: { + expires: 2 // store cookie for 2 days. + } + }); + }); + + //Generate the tree + $("#ulTreeDiv").attr("style", ""); + $("#tree").treeview({ + collapsed: true, + animated: "medium", + control: "#sidetreecontrol", + persist: "cookie" + }); + + //after toc fully styled, display it. Until loading, a 'loading' image will be displayed + $("#tocLoading").attr("style", "display:none;"); + // $("#ulTreeDiv").attr("style","display:block;"); + + //.searchButton is the css class applied to 'Go' button + $(function() { + $("button", ".searchButton").button(); + + $("button", ".searchButton").click(function() { + return false; + }); + }); + + //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('ui-tabs-1') === '1') { //search tab is active + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('searchForm'); + searchHighlight($.cookie('textToSearch')); + $("#showHideHighlight").css("display", "block"); + } + } + + syncToc(); //Synchronize the toc tree with the content pane, when loading the page. + //$("#doSearch").button(); //add jquery button styling to 'Go' button + + // When you click on a link to an anchor, scroll down + // 120 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link from another page. + var hash = window.location.hash; + if(hash){ + var targetOffset = $(hash).offset().top - 120; + $('html,body').animate({scrollTop: targetOffset}, 200); + return false; + } +}); + + +/** + * If an user moved to another page by clicking on a toc link, and then clicked on #searchDiv, + * search should be performed if the cookie textToSearch is not empty. + */ +function doSearch() { +//'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('searchForm'); + } +} + +/** + * Synchronize with the tableOfContents + */ +function syncToc() { + var a = document.getElementById("webhelp-currentid"); + if (a != undefined) { + //Expanding the child sections of the selected node. + var nodeClass = a.getAttribute("class"); + if (nodeClass != null && !nodeClass.match(/collapsable/)) { + a.setAttribute("class", "collapsable"); + //remove display:none; css style from
                block in the selected node. + var ulNode = a.getElementsByTagName("ul")[0]; + if (ulNode != undefined) { + if (ulNode.hasAttribute("style")) { + ulNode.setAttribute("style", "display: block; background-color: #D8D8D8 !important;"); + } else { + var ulStyle = document.createAttribute("style"); + ulStyle.nodeValue = "display: block; background-color: #D8D8D8 !important;"; + ulNode.setAttributeNode(ulStyle); + } } + //adjust tree's + sign to - + var divNode = a.getElementsByTagName("div")[0]; + if (divNode != undefined) { + if (divNode.hasAttribute("class")) { + divNode.setAttribute("class", "hitarea collapsable-hitarea"); + } else { + var divClass = document.createAttribute("class"); + divClass.nodeValue = "hitarea collapsable-hitarea"; + divNode.setAttributeNode(divClass); + } } + //set persistence cookie when a node is auto expanded + // setCookieForExpandedNode("webhelp-currentid"); + } + var b = a.getElementsByTagName("a")[0]; + + if (b != undefined) { + //Setting the background for selected node. + var style = a.getAttribute("style", 2); + if (style != null && !style.match(/background-color: Background;/)) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else if (style != null) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else { + a.setAttribute("style", "background-color: #D8D8D8; "); + b.setAttribute("style", "color: black;"); + } + } + + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. + while (a.parentNode && a.parentNode.nodeName) { + var parentNode = a.parentNode; + var nodeName = parentNode.nodeName; + + if (nodeName.toLowerCase() == "ul") { + parentNode.setAttribute("style", "display: block;"); + } else if (nodeName.toLocaleLowerCase() == "li") { + parentNode.setAttribute("class", "collapsable"); + parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); + } + a = parentNode; +} } } +/* + function setCookieForExpandedNode(nodeName) { + var tocDiv = document.getElementById("tree"); //get table of contents Div + var divs = tocDiv.getElementsByTagName("div"); + var matchedDivNumber; + var i; + for (i = 0; i < divs.length; i++) { //1101001 + var div = divs[i]; + var liNode = div.parentNode; + } +//create a new cookie if a treeview does not exist + if ($.cookie(treeCookieId) == null || $.cookie(treeCookieId) == "") { + var branches = $("#tree").find("li");//.prepareBranches(treesettings); + var data = []; + branches.each(function(i, e) { + data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0; + }); + $.cookie(treeCookieId, data.join("")); + + } + + if (i < divs.length) { + var treeviewCookie = $.cookie(treeCookieId); + var tvCookie1 = treeviewCookie.substring(0, i); + var tvCookie2 = treeviewCookie.substring(i + 1); + var newTVCookie = tvCookie1 + "1" + tvCookie2; + $.cookie(treeCookieId, newTVCookie); + } + } */ + +/** + * Code for Show/Hide TOC + * + */ +function showHideToc() { + var showHideButton = $("#showHideButton"); + var leftNavigation = $("#sidebar"); //hide the parent div of leftnavigation, ie sidebar + var content = $("#content"); + var animeTime=75 + + if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) { + //Hide TOC + showHideButton.removeClass('pointLeft').addClass('pointRight'); + + if(noAnimations) { + leftNavigation.css("display", "none"); + content.css("margin", "125px 0 0 0"); + } else { + leftNavigation.hide(animeTime); + content.animate( { "margin-left": 0 }, animeTime); + } + showHideButton.attr("title", "Show Sidebar"); + } else { + //Show the TOC + showHideButton.removeClass('pointRight').addClass('pointLeft'); + if(noAnimations) { + content.css("margin", "125px 0 0 280px"); + leftNavigation.css("display", "block"); + } else { + content.animate( { "margin-left": '280px' }, animeTime); + leftNavigation.show(animeTime); + } + showHideButton.attr("title", "Hide Sidebar"); + } +} + +/** + * Code for search highlighting + */ +var highlightOn = true; +function searchHighlight(searchText) { + highlightOn = true; + if (searchText != undefined) { + var wList; + var sList = new Array(); //stem list + //Highlight the search terms + searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "I$N~E8N^zO~Pw;a^(H|lo|{Z2pXH!s%dfd}c>`i1a} zv}w~u+O=z^&ucH8I(3rHojXg{u3e>Dw{8*;5FkBz^pKuCdrDwnp!Dg}NBZ{dEB*TQ z6Nkeg0|pF`prAoAc<^8uHf*StVKRL9a2YvrgqD#qdh{p>4GoboW5&q%@jsOb6UNKL zi9gdaQ6^2AB$FpkmZ?*xNO*X-L`Fu+^y$Bp88fEKtXVU)%#sg3oF&oGQ8IgWw9KDB zPs@B+u;4ecaNzt(}+4YG0LAI0POlNOI`@@$gLn>WkWty^W=wr#RKF;TW}-yu78?2ylPeI~ni@0LA# z_Gn3xq&<5jDQSVbpHow1pOJmCZ{L2| zzkk0RI`n5Pha@d6P14fSB|SY&OS)uaWJqRaretMhNls3#g(&}#*G_t^X5&tb?cVgzI{vX-n}dL z?%k7bzx}s7cC;HDBDMsph1qdetv!((`o7b?{;YGKUdEz%jHZ6 zv#c$>;zP!+HFMWmmmYU{0=tATce>bbS#cp9huibSU}xwMrz7~gd6bnH)iEG2$gFd@ zJYy}(9nkA-M`D7<6YF#(>hm}CcMNiS65O6GA54gHMoozRU`S|`t|U=W6Bf^PyW`>( zeLUB_WbTqha~J)u9;eRs)-qNL_1FBx*pl^~qD_9e6q)zZbzybPEX?t%8DrUQ4=n@2+%jQeC=qF~Z#6-(P8( z8EMt3Rm1lV9Xgn2M%LTwSfl%vy7Bj$sjwu+5)t0_|^tKi_DDD!LDm;9u0$<-Bj83<2 z{nO;fh!O7^n~8(X74#qu#0<{kbJpWG+yB_D?;uL||3=v8fuD&b_Mtl?XJHfE!aj7t zFT6v*$M(K``SF#veRv1|N=c9=38e92+=rps~@$$0vM4h#9$K zV>5yYXQ)Ho`1o1hp_=e-#fs$$&VTYrywZ0!6MOQA*n^3!c1_@!c1W;jpi-y>abld`|wsL0|uqAHKRXC$EU7?Pv7BessvrZt61|tGN+O z&b)f{N&`M~@{t_zwVyNK1^$KG`Zs{dV`4~N!a??5yH@|&_LFxCvE>%RaKhWN1tyApEK|ee!F}3U#2dR zd-w!yk|#MiU%qrdXMkzyPr-lt&$@MM4ELz7-nzE*Tw8ltQJ2UA@Tm#Z2>j7p{JhTr zpZp}&S4!fq}EYe$PMg6A8HUafc_3w>BH~8Kgq12FTYML06*u; zye9ZI2W|c^k{9Sj{^MV`2ItU&e5AipH^D|t&;Dzc2r=hn#9|FL{OiV8S_c*tTt}sfFBI;6HkzJ9U&= zNPaP1tG{OKV&psc{O+*tKlqvc0k>M>Keo|t!Nf%1@CAb2oJntiTksWu>-Gp| zz&}~~b))+q^^+K*haG=!Kj^=Qn7bdorWbR^CMNg{{@HQIJ}`(Q@g-b#_ci}7F>~;LEW*zo0GUu5+Ji~wXu%D6o_uZcXzPI5&U0{b) literal 0 HcmV?d00001 diff --git a/DOCBOOK/webhelp/template/search/default.props b/DOCBOOK/webhelp/template/search/default.props new file mode 100755 index 0000000..22edf43 --- /dev/null +++ b/DOCBOOK/webhelp/template/search/default.props @@ -0,0 +1 @@ +DEF01=a \ No newline at end of file diff --git a/DOCBOOK/webhelp/template/search/en-us.props b/DOCBOOK/webhelp/template/search/en-us.props new file mode 100755 index 0000000..da284ce --- /dev/null +++ b/DOCBOOK/webhelp/template/search/en-us.props @@ -0,0 +1,45 @@ +DEF01=this +DEF02=is +DEF03=the +DEF04=in +DEF05=i +DEF06=on +DEF07=a +DEF08=about +DEF09=an +DEF10=are +DEF11=as +DEF12=at +DEF13=be +DEF14=by +DEF15=com +DEF16=de +DEF17=en +DEF18=for +DEF19=from +DEF20=how +DEF21=it +DEF22=la +DEF23=of +DEF24=on +DEF25=or +DEF26=that +DEF27=to +DEF28=was +DEF29=what +DEF30=when +DEF31=where +DEF32=who +DEF33=will +DEF34=with +DEF35=und +DEF36=Next +DEF37=Prev +DEF38=Home +DEF39=Motive +DEF40=Inc +DEF41=Copyright +DEF42=All +DEF43=rights +DEF44=reserved +DEF45=Up \ No newline at end of file diff --git a/DOCBOOK/webhelp/template/search/es-es.props b/DOCBOOK/webhelp/template/search/es-es.props new file mode 100755 index 0000000..fb73bdc --- /dev/null +++ b/DOCBOOK/webhelp/template/search/es-es.props @@ -0,0 +1,179 @@ +DEF01=un +DEF02=una +DEF03=unas +DEF04=unos +DEF05=uno +DEF06=sobre +DEF07=todo +DEF08=también +DEF09=tras +DEF10=otro +DEF11=algún +DEF12=alguno +DEF13=alguna +DEF14=algunos +DEF15=algunas +DEF16=ser +DEF17=es +DEF18=soy +DEF19=eres +DEF20=somos +DEF21=sois +DEF22=estoy +DEF23=esta +DEF24=estamos +DEF25=estais +DEF26=estan +DEF27=como +DEF28=en +DEF29=para +DEF30=atras +DEF31=porque +DEF32=por +DEF33=estado +DEF34=estaba +DEF35=ante +DEF36=antes +DEF37=siendo +DEF38=ambos +DEF39=pero +DEF40=por +DEF41=poder +DEF42=puede +DEF43=puedo +DEF44=podemos +DEF45=podeis +DEF46=pueden +DEF47=fui +DEF48=fue +DEF49=fuimos +DEF50=fueron +DEF51=hacer +DEF52=hago +DEF53=hace +DEF54=hacemos +DEF55=haceis +DEF56=hacen +DEF57=cada +DEF58=fin +DEF59=incluso +DEF60=primero +DEF61=desde +DEF62=conseguir +DEF63=consigo +DEF64=consigue +DEF65=consigues +DEF66=conseguimos +DEF67=consiguen +DEF68=ir +DEF69=voy +DEF70=va +DEF71=vamos +DEF72=vais +DEF73=van +DEF74=vaya +DEF75=gueno +DEF76=ha +DEF77=tener +DEF78=tengo +DEF79=tiene +DEF80=tenemos +DEF81=teneis +DEF82=tienen +DEF83=el +DEF84=la +DEF85=lo +DEF86=las +DEF87=los +DEF88=su +DEF89=aqui +DEF90=mio +DEF91=tuyo +DEF92=ellos +DEF93=ellas +DEF94=nos +DEF95=nosotros +DEF96=vosotros +DEF97=vosotras +DEF98=si +DEF99=dentro +DEF100=solo +DEF101=solamente +DEF102=saber +DEF103=sabes +DEF104=sabe +DEF105=sabemos +DEF106=sabeis +DEF107=saben +DEF108=ultimo +DEF109=largo +DEF110=bastante +DEF111=haces +DEF112=muchos +DEF113=aquellos +DEF114=aquellas +DEF115=sus +DEF116=entonces +DEF117=tiempo +DEF118=verdad +DEF119=verdadero +DEF120=verdadera +DEF121=cierto +DEF122=ciertos +DEF123=cierta +DEF124=ciertas +DEF125=intentar +DEF126=intento +DEF127=intenta +DEF128=intentas +DEF129=intentamos +DEF130=intentais +DEF131=intentan +DEF132=dos +DEF133=bajo +DEF134=arriba +DEF135=encima +DEF136=usar +DEF137=uso +DEF138=usas +DEF139=usa +DEF140=usamos +DEF141=usais +DEF142=usan +DEF143=emplear +DEF144=empleo +DEF145=empleas +DEF146=emplean +DEF147=ampleamos +DEF148=empleais +DEF149=valor +DEF150=muy +DEF151=era +DEF152=eras +DEF153=eramos +DEF154=eran +DEF155=modo +DEF156=bien +DEF157=cual +DEF158=cuando +DEF159=donde +DEF160=mientras +DEF161=quien +DEF162=con +DEF163=entre +DEF164=sin +DEF165=trabajo +DEF166=trabajar +DEF167=trabajas +DEF168=trabaja +DEF169=trabajamos +DEF170=trabajais +DEF171=trabajan +DEF172=podria +DEF173=podrias +DEF174=podriamos +DEF175=podrian +DEF176=podriais +DEF177=yo +DEF178=aquel +DEF179=qué \ No newline at end of file diff --git a/DOCBOOK/webhelp/template/search/ja-jp.props b/DOCBOOK/webhelp/template/search/ja-jp.props new file mode 100755 index 0000000..2756805 --- /dev/null +++ b/DOCBOOK/webhelp/template/search/ja-jp.props @@ -0,0 +1 @@ +J01=\\u306B \ No newline at end of file diff --git a/DOCBOOK/webhelp/template/search/nwSearchFnt.js b/DOCBOOK/webhelp/template/search/nwSearchFnt.js new file mode 100755 index 0000000..b115dbe --- /dev/null +++ b/DOCBOOK/webhelp/template/search/nwSearchFnt.js @@ -0,0 +1,886 @@ +/*---------------------------------------------------------------------------- + * JavaScript for webhelp search + *---------------------------------------------------------------------------- + This file is part of the webhelpsearch plugin for DocBook WebHelp + Copyright (c) 2007-2008 NexWave Solutions All Rights Reserved. + www.nexwave.biz Nadege Quaine + http://kasunbg.blogspot.com/ Kasun Gajasinghe + */ + +//string initialization +var htmlfileList = "htmlFileInfoList.js"; +var htmlfileinfoList = "htmlFileInfoList.js"; +var useCJKTokenizing = false; + +var w = new Object(); +var scoring = new Object(); + +var searchTextField = ''; +var no = 0; +var noWords = 0; +var partialSearch = "There is no page containing all the search terms.
                Partial results:
                "; +var warningMsg = '
                '; +warningMsg+='Please note that due to security settings, Google Chrome does not highlight'; +warningMsg+=' the search results in the right frame.
                '; +warningMsg+='This happens only when the WebHelp files are loaded from the local file system.
                '; +warningMsg+='Workarounds:'; +warningMsg+='
                  '; +warningMsg+='
                • Try using another web browser.
                • '; +warningMsg+='
                • Deploy the WebHelp files on a web server.
                • '; +warningMsg+='
                '; +txt_filesfound = 'Results'; +txt_enter_at_least_1_char = "You must enter at least one character."; +txt_enter_more_than_10_words = "Only first 10 words will be processed."; +txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended."; +txt_please_wait = "Please wait. Search in progress..."; +txt_results_for = "Results for: "; + +/* This function verify the validity of search input by the user + Cette fonction verifie la validite de la recherche entrre par l utilisateur */ +function Verifie(searchForm) { + + // Check browser compatibility + if (navigator.userAgent.indexOf("Konquerer") > -1) { + + alert(txt_browser_not_supported); + return; + } + + searchTextField = trim(document.searchForm.textToSearch.value); + searchTextField = searchTextField.replace(/['"]/g,''); + var expressionInput = searchTextField; + $.cookie('textToSearch', expressionInput); + + if (expressionInput.length < 1) { + + // expression is invalid + alert(txt_enter_at_least_1_char); + // reactive la fenetre de search (utile car cadres) + + document.searchForm.textToSearch.focus(); + } + else { + var splitSpace = searchTextField.split(" "); + var splitWords = []; + for (var i = 0 ; i < splitSpace.length ; i++) { + var splitDot = splitSpace[i].split("."); + + if(!(splitDot.length == 1)){ + splitWords.push(splitSpace[i]); + } + + for (var i1 = 0; i1 < splitDot.length; i1++) { + var splitColon = splitDot[i1].split(":"); + for (var i2 = 0; i2 < splitColon.length; i2++) { + var splitDash = splitColon[i2].split("-"); + for (var i3 = 0; i3 < splitDash.length; i3++) { + if (splitDash[i3].split("").length > 0) { + splitWords.push(splitDash[i3]); + } + } + } + } + } + noWords = splitWords; + if (noWords.length > 9){ + // Allow to search maximum 10 words + alert(txt_enter_more_than_10_words); + expressionInput = ''; + for (var x = 0 ; x < 10 ; x++){ + expressionInput = expressionInput + " " + noWords[x]; + } + Effectuer_recherche(expressionInput); + document.searchForm.textToSearch.focus(); + } else { + // Effectuer la recherche + expressionInput = ''; + for (var x = 0 ; x < noWords.length ; x++) { + expressionInput = expressionInput + " " + noWords[x]; + } + Effectuer_recherche(expressionInput); + // reactive la fenetre de search (utile car cadres) + document.searchForm.textToSearch.focus(); + } + } +} + +var stemQueryMap = new Array(); // A hashtable which maps stems to query words + +/* This function parses the search expression, loads the indices and displays the results*/ +function Effectuer_recherche(expressionInput) { + + /* Display a waiting message */ + //DisplayWaitingMessage(); + + /*data initialisation*/ + var searchFor = ""; // expression en lowercase et sans les caracte res speciaux + //w = new Object(); // hashtable, key=word, value = list of the index of the html files + scriptLetterTab = new Scriptfirstchar(); // Array containing the first letter of each word to look for + var wordsList = new Array(); // Array with the words to look for + var finalWordsList = new Array(); // Array with the words to look for after removing spaces + var linkTab = new Array(); + var fileAndWordList = new Array(); + var txt_wordsnotfound = ""; + + + // -------------------------------------- + // Begin Thu's patch + /*nqu: expressionInput, la recherche est lower cased, plus remplacement des char speciaux*/ + //The original replacement expression is: + //searchFor = expressionInput.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, " 0){ + var searchedWords = noWords.length; + var foundedWords = fileAndWordList[0][0].motslisteDisplay.split(",").length; + //console.info("search : " + noWords.length + " found : " + fileAndWordList[0][0].motslisteDisplay.split(",").length); + if (searchedWords != foundedWords){ + linkTab.push(partialSearch); + } + } + + + for (var i = 0; i < cpt; i++) { + + var hundredProcent = fileAndWordList[i][0].scoring + 100 * fileAndWordList[i][0].motsnb; + var ttScore_first = fileAndWordList[i][0].scoring; + var numberOfWords = fileAndWordList[i][0].motsnb; + + if (fileAndWordList[i] != undefined) { + linkTab.push("

                " + txt_results_for + " " + "" + fileAndWordList[i][0].motslisteDisplay + "" + "

                "); + + linkTab.push("
                  "); + for (t in fileAndWordList[i]) { + //linkTab.push("
                • "+fl[fileAndWordList[i][t].filenb]+"
                • "); + + var ttInfo = fileAndWordList[i][t].filenb; + // Get scoring + var ttScore = fileAndWordList[i][t].scoring; + var tempInfo = fil[ttInfo]; + + var pos1 = tempInfo.indexOf("@@@"); + var pos2 = tempInfo.lastIndexOf("@@@"); + var tempPath = tempInfo.substring(0, pos1); + var tempTitle = tempInfo.substring(pos1 + 3, pos2); + var tempShortdesc = tempInfo.substring(pos2 + 3, tempInfo.length); + + + // toc.html will not be displayed on search result + if (tempPath == 'toc.html'){ + continue; + } + /* + //file:///home/kasun/docbook/WEBHELP/webhelp-draft-output-format-idea/src/main/resources/web/webhelp/installation.html + var linkString = "
                • " + tempTitle + ""; + // var linkString = "
                • " + tempTitle + ""; + */ + var split = fileAndWordList[i][t].motsliste.split(","); + // var splitedValues = expressionInput.split(" "); + // var finalArray = split.concat(splitedValues); + + arrayString = 'Array('; + for(var x in finalArray){ + if (finalArray[x].length > 2 || useCJKTokenizing){ + arrayString+= "'" + finalArray[x] + "',"; + } + } + arrayString = arrayString.substring(0,arrayString.length - 1) + ")"; + var idLink = 'foundLink' + no; + var linkString = '
                • ' + tempTitle + ''; + var starWidth = (ttScore * 100/ hundredProcent)/(ttScore_first/hundredProcent) * (numberOfWords/maxNumberOfWords); + starWidth = starWidth < 10 ? (starWidth + 5) : starWidth; + // Keep the 5 stars format + if (starWidth > 85){ + starWidth = 85; + } + /* + var noFullStars = Math.ceil(starWidth/17); + var fullStar = "curr"; + var emptyStar = ""; + if (starWidth % 17 == 0){ + // am stea plina + + } else { + + } + console.info(noFullStars); + */ + // Also check if we have a valid description + if ((tempShortdesc != "null" && tempShortdesc != '...')) { + + linkString += "\n
                  " + tempShortdesc + "
                  "; + } + linkString += "
                • "; + + // Add rating values for scoring at the list of matches + linkString += "
                  "; + linkString += "
                  "; + //linkString += "
                  " + // + ((ttScore * 100/ hundredProcent)/(ttScore_first/hundredProcent)) * 1 + "
                  "; + linkString += "
                    "; + linkString += "
                  • "; + linkString += "
                  "; + + linkString += "
                  "; + linkString += "
                  "; + linkString += "
                  "; + //linkString += 'Rating: ' + ttScore + ''; + + linkTab.push(linkString); + no++; + } + linkTab.push("
                "); + } + } + } + + var results = ""; + if (linkTab.length > 0) { + /*writeln ("

                " + txt_results_for + " " + "" + cleanwordsList + "" + "
                "+"

                ");*/ + results = "

                "; + //write("

                  "); + for (t in linkTab) { + results += linkTab[t].toString(); + } + results += "

                  "; + } else { + results = "

                  " + localeresource.search_no_results + " " + txt_wordsnotfound + "" + "

                  "; + } + + + // Verify if the browser is Google Chrome and the WebHelp is used on a local machine + // If browser is Google Chrome and WebHelp is used on a local machine a warning message will appear + // Highlighting will not work in this conditions. There is 2 workarounds + if (verifyBrowser()){ + document.getElementById('searchResults').innerHTML = results; + } else { + document.getElementById('searchResults').innerHTML = warningMsg + results; + } + +} + + +// Verify if the stemmed word is aproximately the same as the searched word +function verifyWord(word, arr){ + for (var i = 0 ; i < arr.length ; i++){ + if (word[0] == arr[i][0] + && word[1] == arr[i][1] + //&& word[2] == arr[i][2] + ){ + return true; + } + } + return false; +} + +// Look for elements that start with searchedValue. +function wordsStartsWith(searchedValue){ + var toReturn = ''; + for (var sv in w){ + if (searchedValue.length < 3){ + continue; + } else { + if (sv.toLowerCase().indexOf(searchedValue.toLowerCase()) == 0){ + toReturn+=sv + ","; + } + } + } + return toReturn.length > 0 ? toReturn : undefined; +} + + +function tokenize(wordsList){ + var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces + var cleanwordsList = new Array(); // Array with the words to look for + // ------------------------------------------------- + // Thu's patch + for(var j=0;j"; + return this.input.substring(this.offset,this.offset+2); + } + + function getAllTokens(){ + while(this.incrementToken()){ + var tmp = this.tokenize(); + this.tokens.push(tmp); + } + return this.unique(this.tokens); +// document.getElementById("content").innerHTML += tokens+" "; +// document.getElementById("content").innerHTML += "
                  dada"+sortedTokens+" "; +// console.log(tokens.length+"dsdsds"); + /*for(i=0;i t2.length) { + return 1; + } else { + return -1; + } + //return t1.length - t2.length); +} + +// return false if browser is Google Chrome and WebHelp is used on a local machine, not a web server +function verifyBrowser(){ + var returnedValue = true; + var browser = BrowserDetect.browser; + var addressBar = window.location.href; + if (browser == 'Chrome' && addressBar.indexOf('file://') === 0){ + returnedValue = false; + } + + return returnedValue; +} + +// Remove duplicate values from an array +function removeDuplicate(arr) { + var r = new Array(); + o:for(var i = 0, n = arr.length; i < n; i++) { + for(var x = 0, y = r.length; x < y; x++) { + if(r[x]==arr[i]) continue o; + } + r[r.length] = arr[i]; + } + return r; +} + +// Create startsWith method +String.prototype.startsWith = function(str) { + return (this.match("^"+str)==str); +} + +function trim(str, chars) { + return ltrim(rtrim(str, chars), chars); +} + +function ltrim(str, chars) { + chars = chars || "\\s"; + return str.replace(new RegExp("^[" + chars + "]+", "g"), ""); +} + +function rtrim(str, chars) { + chars = chars || "\\s"; + return str.replace(new RegExp("[" + chars + "]+$", "g"), ""); +} diff --git a/DOCBOOK/webhelp/template/search/punctuation.props b/DOCBOOK/webhelp/template/search/punctuation.props new file mode 100755 index 0000000..d3e3fcd --- /dev/null +++ b/DOCBOOK/webhelp/template/search/punctuation.props @@ -0,0 +1,31 @@ +Punct01=\\u3002 +Punct02=\\u3003 +Punct03=\\u300C +Punct04=\\u300D +Punct05=\\u300E +Punct06=\\u300F +Punct07=\\u301D +Punct08=\\u301E +Punct09=\\u301F +Punct10=\\u309B +Punct11=\\u2018 +Punct12=\\u2019 +Punct13=\\u201A +Punct14=\\u201C +Punct15=\\u201D +Punct16=\\u201E +Punct17=\\u2032 +Punct18=\\u2033 +Punct19=\\u2035 +Punct20=\\u2039 +Punct21=\\u203A +Punct22=\\u201E +Punct23=\\u00BB +Punct24=\\u00AB +Punct25=© +Punct26=’ +Punct27=\\u00A0 +Punct28=\\u2014 + + + diff --git a/DOCBOOK/webhelp/template/search/stemmers/de_stemmer.js b/DOCBOOK/webhelp/template/search/stemmers/de_stemmer.js new file mode 100755 index 0000000..7ff3822 --- /dev/null +++ b/DOCBOOK/webhelp/template/search/stemmers/de_stemmer.js @@ -0,0 +1,247 @@ +/* + * Author: Joder Illi + * + * Copyright (c) 2010, FormBlitz AG + * All rights reserved. + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/german/stemmer.html + * Copyright of the algorithm is: Copyright (c) 2001, Dr Martin Porter and can be found at http://snowball.tartarus.org/license.php + * + * Redistribution and use in source and binary forms, with or without modification, is covered by the standard BSD license. + * + */ + +//var stemmer = function Stemmer() { + /* + German includes the following accented forms, + ä ö ü + and a special letter, ß, equivalent to double s. + The following letters are vowels: + a e i o u y ä ö ü + */ + + var stemmer = function(word) { + /* + Put u and y between vowels into upper case + */ + word = word.replace(/([aeiouyäöü])u([aeiouyäöü])/g, '$1U$2'); + word = word.replace(/([aeiouyäöü])y([aeiouyäöü])/g, '$1Y$2'); + + /* + and then do the following mappings, + (a) replace ß with ss, + (a) replace ae with ä, Not doing these, have trouble with diphtongs + (a) replace oe with ö, Not doing these, have trouble with diphtongs + (a) replace ue with ü unless preceded by q. Not doing these, have trouble with diphtongs + So in quelle, ue is not mapped to ü because it follows q, and in feuer it is not mapped because the first part of the rule changes it to feUer, so the u is not found. + */ + word = word.replace(/ß/g, 'ss'); + //word = word.replace(/ae/g, 'ä'); + //word = word.replace(/oe/g, 'ö'); + //word = word.replace(/([^q])ue/g, '$1ü'); + + /* + R1 and R2 are first set up in the standard way (see the note on R1 and R2), but then R1 is adjusted so that the region before it contains at least 3 letters. + R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if there is no such non-vowel. + R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the word if there is no such non-vowel. + */ + + var r1Index = word.search(/[aeiouyäöü][^aeiouyäöü]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } + + var r2Index = -1; + var r2 = ''; + + if (r1Index != -1) { + var r2Index = r1.search(/[aeiouyäöü][^aeiouyäöü]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + } + } + + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Define a valid s-ending as one of b, d, f, g, h, k, l, m, n, r or t. + Define a valid st-ending as the same list, excluding letter r. + */ + + /* + Do each of steps 1, 2 and 3. + */ + + /* + Step 1: + Search for the longest among the following suffixes, + (a) em ern er + (b) e en es + (c) s (preceded by a valid s-ending) + */ + var a1Index = word.search(/(em|ern|er)$/g); + var b1Index = word.search(/(e|en|es)$/g); + var c1Index = word.search(/([bdfghklmnrt]s)$/g); + if (c1Index != -1) { + c1Index++; + } + var index1 = 10000; + var optionUsed1 = ''; + if (a1Index != -1 && a1Index < index1) { + optionUsed1 = 'a'; + index1 = a1Index; + } + if (b1Index != -1 && b1Index < index1) { + optionUsed1 = 'b'; + index1 = b1Index; + } + if (c1Index != -1 && c1Index < index1) { + optionUsed1 = 'c'; + index1 = c1Index; + } + + /* + and delete if in R1. (Of course the letter of the valid s-ending is not necessarily in R1.) If an ending of group (b) is deleted, and the ending is preceded by niss, delete the final s. + (For example, äckern -> äck, ackers -> acker, armes -> arm, bedürfnissen -> bedürfnis) + */ + + if (index1 != 10000 && r1Index != -1) { + if (index1 >= r1Index) { + word = word.substring(0, index1); + if (optionUsed1 == 'b') { + if (word.search(/niss$/) != -1) { + word = word.substring(0, word.length -1); + } + } + } + } + /* + Step 2: + Search for the longest among the following suffixes, + (a) en er est + (b) st (preceded by a valid st-ending, itself preceded by at least 3 letters) + */ + + var a2Index = word.search(/(en|er|est)$/g); + var b2Index = word.search(/(.{3}[bdfghklmnt]st)$/g); + if (b2Index != -1) { + b2Index += 4; + } + + var index2 = 10000; + var optionUsed2 = ''; + if (a2Index != -1 && a2Index < index2) { + optionUsed2 = 'a'; + index2 = a2Index; + } + if (b2Index != -1 && b2Index < index2) { + optionUsed2 = 'b'; + index2 = b2Index; + } + + /* + and delete if in R1. + (For example, derbsten -> derbst by step 1, and derbst -> derb by step 2, since b is a valid st-ending, and is preceded by just 3 letters) + */ + + if (index2 != 10000 && r1Index != -1) { + if (index2 >= r1Index) { + word = word.substring(0, index2); + } + } + + /* + Step 3: d-suffixes (*) + Search for the longest among the following suffixes, and perform the action indicated. + end ung + delete if in R2 + if preceded by ig, delete if in R2 and not preceded by e + ig ik isch + delete if in R2 and not preceded by e + lich heit + delete if in R2 + if preceded by er or en, delete if in R1 + keit + delete if in R2 + if preceded by lich or ig, delete if in R2 + */ + + var a3Index = word.search(/(end|ung)$/g); + var b3Index = word.search(/[^e](ig|ik|isch)$/g); + var c3Index = word.search(/(lich|heit)$/g); + var d3Index = word.search(/(keit)$/g); + if (b3Index != -1) { + b3Index ++; + } + + var index3 = 10000; + var optionUsed3 = ''; + if (a3Index != -1 && a3Index < index3) { + optionUsed3 = 'a'; + index3 = a3Index; + } + if (b3Index != -1 && b3Index < index3) { + optionUsed3 = 'b'; + index3 = b3Index; + } + if (c3Index != -1 && c3Index < index3) { + optionUsed3 = 'c'; + index3 = c3Index; + } + if (d3Index != -1 && d3Index < index3) { + optionUsed3 = 'd'; + index3 = d3Index; + } + + if (index3 != 10000 && r2Index != -1) { + if (index3 >= r2Index) { + word = word.substring(0, index3); + var optionIndex = -1; + var optionSubsrt = ''; + if (optionUsed3 == 'a') { + optionIndex = word.search(/[^e](ig)$/); + if (optionIndex != -1) { + optionIndex++; + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'c') { + optionIndex = word.search(/(er|en)$/); + if (optionIndex != -1) { + if (optionIndex >= r1Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'd') { + optionIndex = word.search(/(lich|ig)$/); + if (optionIndex != -1) { + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } + } + } + + /* + Finally, + turn U and Y back into lower case, and remove the umlaut accent from a, o and u. + */ + word = word.replace(/U/g, 'u'); + word = word.replace(/Y/g, 'y'); + word = word.replace(/ä/g, 'a'); + word = word.replace(/ö/g, 'o'); + word = word.replace(/ü/g, 'u'); + + return word; + }; +//} \ No newline at end of file diff --git a/DOCBOOK/webhelp/template/search/stemmers/en_stemmer.js b/DOCBOOK/webhelp/template/search/stemmers/en_stemmer.js new file mode 100755 index 0000000..2117c1b --- /dev/null +++ b/DOCBOOK/webhelp/template/search/stemmers/en_stemmer.js @@ -0,0 +1,234 @@ +// Porter stemmer in Javascript. Few comments, but it's easy to follow against the rules in the original +// paper, in +// +// Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14, +// no. 3, pp 130-137, +// +// see also http://www.tartarus.org/~martin/PorterStemmer + +// Release 1 +// Derived from (http://tartarus.org/~martin/PorterStemmer/js.txt) - cjm (iizuu) Aug 24, 2009 + +var stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + return function (w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4, + origword = w; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c + re = new RegExp("^(.+" + c + ")y$"); + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + // See http://snowball.tartarus.org/algorithms/english/stemmer.html + // "Exceptional forms in general" + var specialWords = { + "skis" : "ski", + "skies" : "sky", + "dying" : "die", + "lying" : "lie", + "tying" : "tie", + "idly" : "idl", + "gently" : "gentl", + "ugly" : "ugli", + "early": "earli", + "only": "onli", + "singly": "singl" + }; + + if(specialWords[origword]){ + w = specialWords[origword]; + } + + if( "sky news howe atlas cosmos bias \ + andes inning outing canning herring \ + earring proceed exceed succeed".indexOf(origword) !== -1 ){ + w = origword; + } + + // Address words overstemmed as gener- + re = /.*generate?s?d?(ing)?$/; + if( re.test(origword) ){ + w = w + 'at'; + } + re = /.*general(ly)?$/; + if( re.test(origword) ){ + w = w + 'al'; + } + re = /.*generic(ally)?$/; + if( re.test(origword) ){ + w = w + 'ic'; + } + re = /.*generous(ly)?$/; + if( re.test(origword) ){ + w = w + 'ous'; + } + // Address words overstemmed as commun- + re = /.*communit(ies)?y?/; + if( re.test(origword) ){ + w = w + 'iti'; + } + + return w; + } +})(); diff --git a/DOCBOOK/webhelp/template/search/stemmers/fr_stemmer.js b/DOCBOOK/webhelp/template/search/stemmers/fr_stemmer.js new file mode 100755 index 0000000..34f9743 --- /dev/null +++ b/DOCBOOK/webhelp/template/search/stemmers/fr_stemmer.js @@ -0,0 +1,299 @@ +/* + * Author: Kasun Gajasinghe + * E-Mail: kasunbg AT gmail DOT com + * Date: 09.08.2010 + * + * usage: stemmer(word); + * ex: var stem = stemmer(foobar); + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/french/stemmer.html + * + * LICENSE: + * + * Copyright (c) 2010, Kasun Gajasinghe. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * + * THIS SOFTWARE IS PROVIDED BY KASUN GAJASINGHE ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KASUN GAJASINGHE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +var stemmer = function(word){ +// Letters in French include the following accented forms, +// â à ç ë é ê è ï î ô û ù +// The following letters are vowels: +// a e i o u y â à ë é ê è ï î ô û ù + + word = word.toLowerCase(); + var oriWord = word; + word = word.replace(/qu/g, 'qU'); //have to perform first, as after the operation, capital U is not treated as a vowel + word = word.replace(/([aeiouyâàëéêèïîôûù])u([aeiouyâàëéêèïîôûù])/g, '$1U$2'); + word = word.replace(/([aeiouyâàëéêèïîôûù])i([aeiouyâàëéêèïîôûù])/g, '$1I$2'); + word = word.replace(/([aeiouyâàëéêèïîôûù])y/g, '$1Y'); + word = word.replace(/y([aeiouyâàëéêèïîôûù])/g, 'Y$1'); + + var rv=''; + var rvIndex = -1; + if(word.search(/^(par|col|tap)/) != -1 || word.search(/^[aeiouyâàëéêèïîôûù]{2}/) != -1){ + rv = word.substring(3); + rvIndex = 3; + } else { + rvIndex = word.substring(1).search(/[aeiouyâàëéêèïîôûù]/); + if(rvIndex != -1){ + rvIndex +=2; //+2 is to supplement the substring(1) used to find rvIndex + rv = word.substring(rvIndex); + } else { + rvIndex = word.length; + } + } + +// R1 is the region after the first non-vowel following a vowel, or the end of the word if there is no such non-vowel. +// R2 is the region after the first non-vowel following a vowel in R1, or the end of the word if there is no such non-vowel + var r1Index = word.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } else { + r1Index = word.length; + } + + var r2Index = -1; + var r2 = ''; + if (r1Index != -1) { + r2Index = r1.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + r2Index = word.length; + } + } + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Step 1: Standard suffix removal + */ + var a1Index = word.search(/(ance|iqUe|isme|able|iste|eux|ances|iqUes|ismes|ables|istes)$/); + var a2Index = word.search(/(atrice|ateur|ation|atrices|ateurs|ations)$/); + var a3Index = word.search(/(logie|logies)$/); + var a4Index = word.search(/(usion|ution|usions|utions)$/); + var a5Index = word.search(/(ence|ences)$/); + var a6Index = word.search(/(ement|ements)$/); + var a7Index = word.search(/(ité|ités)$/); + var a8Index = word.search(/(if|ive|ifs|ives)$/); + var a9Index = word.search(/(eaux)$/); + var a10Index = word.search(/(aux)$/); + var a11Index = word.search(/(euse|euses)$/); + var a12Index = word.search(/[^aeiouyâàëéêèïîôûù](issement|issements)$/); + var a13Index = word.search(/(amment)$/); + var a14Index = word.search(/(emment)$/); + var a15Index = word.search(/[aeiouyâàëéêèïîôûù](ment|ments)$/); + + if(a1Index != -1 && a1Index >= r2Index){ + word = word.substring(0,a1Index); + } else if(a2Index != -1 && a2Index >= r2Index){ + word = word.substring(0,a2Index); + var a2Index2 = word.search(/(ic)$/); + if(a2Index2 != -1 && a2Index2 >= r2Index){ + word = word.substring(0, a2Index2); //if preceded by ic, delete if in R2, + } else { //else replace by iqU + word = word.replace(/(ic)$/,'iqU'); + } + } else if(a3Index != -1 && a3Index >= r2Index){ + word = word.replace(/(logie|logies)$/,'log'); //replace with log if in R2 + } else if(a4Index != -1 && a4Index >= r2Index){ + word = word.replace(/(usion|ution|usions|utions)$/,'u'); //replace with u if in R2 + } else if(a5Index != -1 && a5Index >= r2Index){ + word = word.replace(/(ence|ences)$/,'ent'); //replace with ent if in R2 + } else if(a6Index != -1 && a6Index >= rvIndex){ + word = word.substring(0,a6Index); + if(word.search(/(iv)$/) >= r2Index){ + word = word.replace(/(iv)$/, ''); + if(word.search(/(at)$/) >= r2Index){ + word = word.replace(/(at)$/, ''); + } + } else if(word.search(/(eus)$/) != -1){ + var a6Index2 = word.search(/(eus)$/); + if(a6Index2 >=r2Index){ + word = word.substring(0, a6Index2); + } else if(a6Index2 >= r1Index){ + word = word.substring(0,a6Index2)+"eux"; + } + } else if(word.search(/(abl|iqU)$/) >= r2Index){ + word = word.replace(/(abl|iqU)$/,''); //if preceded by abl or iqU, delete if in R2, + } else if(word.search(/(ièr|Ièr)$/) >= rvIndex){ + word = word.replace(/(ièr|Ièr)$/,'i'); //if preceded by abl or iqU, delete if in R2, + } + } else if(a7Index != -1 && a7Index >= r2Index){ + word = word.substring(0,a7Index); //delete if in R2 + if(word.search(/(abil)$/) != -1){ //if preceded by abil, delete if in R2, else replace by abl, otherwise, + var a7Index2 = word.search(/(abil)$/); + if(a7Index2 >=r2Index){ + word = word.substring(0, a7Index2); + } else { + word = word.substring(0,a7Index2)+"abl"; + } + } else if(word.search(/(ic)$/) != -1){ + var a7Index3 = word.search(/(ic)$/); + if(a7Index3 != -1 && a7Index3 >= r2Index){ + word = word.substring(0, a7Index3); //if preceded by ic, delete if in R2, + } else { //else replace by iqU + word = word.replace(/(ic)$/,'iqU'); + } + } else if(word.search(/(iv)$/) != r2Index){ + word = word.replace(/(iv)$/,''); + } + } else if(a8Index != -1 && a8Index >= r2Index){ + word = word.substring(0,a8Index); + if(word.search(/(at)$/) >= r2Index){ + word = word.replace(/(at)$/, ''); + if(word.search(/(ic)$/) >= r2Index){ + word = word.replace(/(ic)$/, ''); + } else { word = word.replace(/(ic)$/, 'iqU'); } + } + } else if(a9Index != -1){ word = word.replace(/(eaux)/,'eau') + } else if(a10Index >= r1Index){ word = word.replace(/(aux)/,'al') + } else if(a11Index != -1 ){ + var a11Index2 = word.search(/(euse|euses)$/); + if(a11Index2 >=r2Index){ + word = word.substring(0, a11Index2); + } else if(a11Index2 >= r1Index){ + word = word.substring(0, a11Index2)+"eux"; + } + } else if(a12Index!=-1 && a12Index>=r1Index){ + word = word.substring(0,a12Index+1); //+1- amendment to non-vowel + } else if(a13Index!=-1 && a13Index>=rvIndex){ + word = word.replace(/(amment)$/,'ant'); + } else if(a14Index!=-1 && a14Index>=rvIndex){ + word = word.replace(/(emment)$/,'ent'); + } else if(a15Index!=-1 && a15Index>=rvIndex){ + word = word.substring(0,a15Index+1); + } + + /* Step 2a: Verb suffixes beginning i*/ + var wordStep1 = word; + var step2aDone = false; + if(oriWord == word.toLowerCase() || oriWord.search(/(amment|emment|ment|ments)$/) != -1){ + step2aDone = true; + var b1Regex = /([^aeiouyâàëéêèïîôûù])(îmes|ît|îtes|i|ie|ies|ir|ira|irai|iraIent|irais|irait|iras|irent|irez|iriez|irions|irons|iront|is|issaIent|issais|issait|issant|issante|issantes|issants|isse|issent|isses|issez|issiez|issions|issons|it)$/i; + if(word.search(b1Regex) >= rvIndex){ + word = word.replace(b1Regex,'$1'); + } + } + + /* Step 2b: Other verb suffixes*/ + if (step2aDone && wordStep1 == word) { + if (word.search(/(ions)$/) >= r2Index) { + word = word.replace(/(ions)$/, ''); + } else { + var b2Regex = /(é|ée|ées|és|èrent|er|era|erai|eraIent|erais|erait|eras|erez|eriez|erions|erons|eront|ez|iez)$/i; + if (word.search(b2Regex) >= rvIndex) { + word = word.replace(b2Regex, ''); + } else { + var b3Regex = /e(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i; + if (word.search(b3Regex) >= rvIndex) { + word = word.replace(b3Regex, ''); + } else { + var b3Regex2 = /(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i; + if (word.search(b3Regex2) >= rvIndex) { + word = word.replace(b3Regex2, ''); + } + } + } + } + } + + if(oriWord != word.toLowerCase()){ + /* Step 3 */ + var rep = ''; + if(word.search(/Y$/) != -1) { + word = word.replace(/Y$/, 'i'); + } else if(word.search(/ç$/) != -1){ + word = word.replace(/ç$/, 'c'); + } + } else { + /* Step 4 */ + //If the word ends s, not preceded by a, i, o, u, è or s, delete it. + if (word.search(/([^aiouès])s$/) >= rvIndex) { + word = word.replace(/([^aiouès])s$/, '$1'); + } + var e1Index = word.search(/ion$/); + if (e1Index >= r2Index && word.search(/[st]ion$/) >= rvIndex) { + word = word.substring(0, e1Index); + } else { + var e2Index = word.search(/(ier|ière|Ier|Ière)$/); + if (e2Index != -1 && e2Index >= rvIndex) { + word = word.substring(0, e2Index) + "i"; + } else { + if (word.search(/e$/) >= rvIndex) { + word = word.replace(/e$/, ''); //delete last e + } else if (word.search(/guë$/) >= rvIndex) { + word = word.replace(/guë$/, 'gu'); + } + } + } + } + + /* Step 5: Undouble */ + //word = word.replace(/(en|on|et|el|eil)(n|t|l)$/,'$1'); + word = word.replace(/(en|on)(n)$/,'$1'); + word = word.replace(/(ett)$/,'et'); + word = word.replace(/(el|eil)(l)$/,'$1'); + + /* Step 6: Un-accent */ + word = word.replace(/[éè]([^aeiouyâàëéêèïîôûù]+)$/,'e$1'); + word = word.toLowerCase(); + return word; +}; + +var eqOut = new Array(); +var noteqOut = new Array(); +var eqCount = 0; +/* +To test the stemming, create two arrays named "voc" and "COut" which are for vocabualary and the stemmed output. +Then add the vocabulary strings and output strings. This method will generate the stemmed output for "voc" and will +compare the output with COut. + (I used porter's voc and out files and did a regex to convert them to js objects. regex: /");\nvoc.push("/g . This + will add strings to voc array such that output would look like: voc.push("foobar"); ) drop me an email for any help. + */ +function testFr(){ + var start = new Date().getTime(); //execution time + eqCount = 0; + eqOut = new Array(); + noteqOut = new Array(); + for(var k=0;k + + + + + + + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <hr/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="set" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <hr/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="book" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <hr/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="part" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="division.title" + param:node="ancestor-or-self::part[1]"/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="partintro" t:wrapper="div"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="reference" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <hr/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refentry" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> +<!-- uncomment this if you want refentry titlepages + <title t:force="1" + t:named-template="refentry.title" + param:node="ancestor-or-self::refentry[1]"/> +--> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator/> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="dedication" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::dedication[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="acknowledgements" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::acknowledgements[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="preface" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="chapter" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="topic" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="appendix" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="section" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect1" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect2" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect3" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect4" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect5" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="simplesect" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="bibliography" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::bibliography[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="glossary" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::glossary[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="index" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::index[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="setindex" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::setindex[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> +<t:titlepage t:element="sidebar" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:named-template="formal.object.heading" + param:object="ancestor-or-self::sidebar[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +</t:templates> diff --git a/DOCBOOK/webhelp/xsl/titlepage.templates.xsl b/DOCBOOK/webhelp/xsl/titlepage.templates.xsl new file mode 100755 index 0000000..746867f --- /dev/null +++ b/DOCBOOK/webhelp/xsl/titlepage.templates.xsl @@ -0,0 +1,3861 @@ +<?xml version="1.0"?> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" +xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl d"> + +<!-- This stylesheet was created by template/titlepage.xsl--> + +<xsl:template name="article.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:articleinfo/d:title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:title"/> + </xsl:when> + <xsl:when test="d:artheader/d:title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:articleinfo/d:subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:artheader/d:subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:revision"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:revision"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="article.titlepage.verso"> +</xsl:template> + +<xsl:template name="article.titlepage.separator"><hr/> +</xsl:template> + +<xsl:template name="article.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="article.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="article.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="article.titlepage.before.recto"/> + <xsl:call-template name="article.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="article.titlepage.before.verso"/> + <xsl:call-template name="article.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="article.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="set.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:setinfo/d:title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:setinfo/d:subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:corpauthor"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:authorgroup"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:author"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:othercredit"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:releaseinfo"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:copyright"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:legalnotice"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:pubdate"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:revision"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:revhistory"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="set.titlepage.verso"> +</xsl:template> + +<xsl:template name="set.titlepage.separator"><hr/> +</xsl:template> + +<xsl:template name="set.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="set.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="set.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="set.titlepage.before.recto"/> + <xsl:call-template name="set.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="set.titlepage.before.verso"/> + <xsl:call-template name="set.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="set.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="book.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:bookinfo/d:title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:bookinfo/d:subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:corpauthor"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:authorgroup"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:author"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:othercredit"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:releaseinfo"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:copyright"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:legalnotice"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:pubdate"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:revision"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:revhistory"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="book.titlepage.verso"> +</xsl:template> + +<xsl:template name="book.titlepage.separator"><hr/> +</xsl:template> + +<xsl:template name="book.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="book.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="book.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="book.titlepage.before.recto"/> + <xsl:call-template name="book.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="book.titlepage.before.verso"/> + <xsl:call-template name="book.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="book.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="part.titlepage.recto"> + <div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:part[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:partinfo/d:subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:corpauthor"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:authorgroup"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:author"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:othercredit"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:releaseinfo"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:copyright"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:legalnotice"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:pubdate"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:revision"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:revhistory"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="part.titlepage.verso"> +</xsl:template> + +<xsl:template name="part.titlepage.separator"> +</xsl:template> + +<xsl:template name="part.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="part.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="part.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="part.titlepage.before.recto"/> + <xsl:call-template name="part.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="part.titlepage.before.verso"/> + <xsl:call-template name="part.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="part.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="partintro.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:partintroinfo/d:title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:partintroinfo/d:subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:corpauthor"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:authorgroup"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:author"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:othercredit"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:releaseinfo"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:copyright"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:legalnotice"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:pubdate"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:revision"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:revhistory"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="partintro.titlepage.verso"> +</xsl:template> + +<xsl:template name="partintro.titlepage.separator"> +</xsl:template> + +<xsl:template name="partintro.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="partintro.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="partintro.titlepage"> + <div> + <xsl:variable name="recto.content"> + <xsl:call-template name="partintro.titlepage.before.recto"/> + <xsl:call-template name="partintro.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="partintro.titlepage.before.verso"/> + <xsl:call-template name="partintro.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="partintro.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="partintro.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="partintro.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="reference.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:referenceinfo/d:title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:referenceinfo/d:subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:corpauthor"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:authorgroup"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:author"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:othercredit"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:releaseinfo"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:copyright"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:legalnotice"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:pubdate"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:revision"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:revhistory"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="reference.titlepage.verso"> +</xsl:template> + +<xsl:template name="reference.titlepage.separator"><hr/> +</xsl:template> + +<xsl:template name="reference.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="reference.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="reference.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="reference.titlepage.before.recto"/> + <xsl:call-template name="reference.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="reference.titlepage.before.verso"/> + <xsl:call-template name="reference.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="reference.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="reference.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="reference.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="refentry.titlepage.recto"> +</xsl:template> + +<xsl:template name="refentry.titlepage.verso"> +</xsl:template> + +<xsl:template name="refentry.titlepage.separator"> +</xsl:template> + +<xsl:template name="refentry.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refentry.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refentry.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="refentry.titlepage.before.recto"/> + <xsl:call-template name="refentry.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="refentry.titlepage.before.verso"/> + <xsl:call-template name="refentry.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="refentry.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="refentry.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refentry.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="dedication.titlepage.recto"> + <div xsl:use-attribute-sets="dedication.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:dedication[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:dedicationinfo/d:subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="d:dedicationinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="dedication.titlepage.verso"> +</xsl:template> + +<xsl:template name="dedication.titlepage.separator"> +</xsl:template> + +<xsl:template name="dedication.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="dedication.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="dedication.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="dedication.titlepage.before.recto"/> + <xsl:call-template name="dedication.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="dedication.titlepage.before.verso"/> + <xsl:call-template name="dedication.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="dedication.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="dedication.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="dedication.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="dedication.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="dedication.titlepage.recto.style"> +<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.recto"> + <div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:acknowledgements[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:acknowledgementsinfo/d:subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="d:acknowledgementsinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.verso"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.separator"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="acknowledgements.titlepage.before.recto"/> + <xsl:call-template name="acknowledgements.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="acknowledgements.titlepage.before.verso"/> + <xsl:call-template name="acknowledgements.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="acknowledgements.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="acknowledgements.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="acknowledgements.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="acknowledgements.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style"> +<xsl:apply-templates select="." mode="acknowledgements.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="preface.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:prefaceinfo/d:title"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:prefaceinfo/d:subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="preface.titlepage.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage.separator"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="preface.titlepage.before.recto"/> + <xsl:call-template name="preface.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="preface.titlepage.before.verso"/> + <xsl:call-template name="preface.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="preface.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="chapter.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:chapterinfo/d:title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:chapterinfo/d:subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="chapter.titlepage.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage.separator"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="chapter.titlepage.before.recto"/> + <xsl:call-template name="chapter.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="chapter.titlepage.before.verso"/> + <xsl:call-template name="chapter.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="chapter.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="topic.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:topicinfo/d:title"> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:topicinfo/d:subtitle"> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:corpauthor"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:authorgroup"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:author"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:othercredit"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:releaseinfo"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:copyright"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:legalnotice"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:pubdate"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:revision"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:revhistory"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="topic.titlepage.verso"> +</xsl:template> + +<xsl:template name="topic.titlepage.separator"> +</xsl:template> + +<xsl:template name="topic.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="topic.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="topic.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="topic.titlepage.before.recto"/> + <xsl:call-template name="topic.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="topic.titlepage.before.verso"/> + <xsl:call-template name="topic.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="topic.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="topic.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="topic.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="appendix.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:appendixinfo/d:title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:appendixinfo/d:subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="appendix.titlepage.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage.separator"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="appendix.titlepage.before.recto"/> + <xsl:call-template name="appendix.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="appendix.titlepage.before.verso"/> + <xsl:call-template name="appendix.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="appendix.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="section.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sectioninfo/d:title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sectioninfo/d:subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:corpauthor"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:authorgroup"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:author"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:othercredit"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:releaseinfo"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:copyright"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:legalnotice"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:pubdate"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:revision"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:revhistory"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="section.titlepage.verso"> +</xsl:template> + +<xsl:template name="section.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="section.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="section.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="section.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="section.titlepage.before.recto"/> + <xsl:call-template name="section.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="section.titlepage.before.verso"/> + <xsl:call-template name="section.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="section.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect1.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sect1info/d:title"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sect1info/d:subtitle"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:corpauthor"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:authorgroup"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:author"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:othercredit"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:releaseinfo"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:copyright"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:legalnotice"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:pubdate"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:revision"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:revhistory"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="sect1.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect1.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect1.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect1.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect1.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect1.titlepage.before.recto"/> + <xsl:call-template name="sect1.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect1.titlepage.before.verso"/> + <xsl:call-template name="sect1.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect1.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect1.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect1.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect2.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sect2info/d:title"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sect2info/d:subtitle"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:corpauthor"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:authorgroup"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:author"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:othercredit"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:releaseinfo"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:copyright"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:legalnotice"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:pubdate"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:revision"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:revhistory"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="sect2.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect2.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect2.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect2.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect2.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect2.titlepage.before.recto"/> + <xsl:call-template name="sect2.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect2.titlepage.before.verso"/> + <xsl:call-template name="sect2.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect2.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect2.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect2.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect3.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sect3info/d:title"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sect3info/d:subtitle"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:corpauthor"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:authorgroup"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:author"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:othercredit"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:releaseinfo"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:copyright"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:legalnotice"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:pubdate"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:revision"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:revhistory"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="sect3.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect3.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect3.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect3.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect3.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect3.titlepage.before.recto"/> + <xsl:call-template name="sect3.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect3.titlepage.before.verso"/> + <xsl:call-template name="sect3.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect3.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect3.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect3.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect4.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sect4info/d:title"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sect4info/d:subtitle"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:corpauthor"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:authorgroup"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:author"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:othercredit"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:releaseinfo"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:copyright"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:legalnotice"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:pubdate"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:revision"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:revhistory"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="sect4.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect4.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect4.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect4.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect4.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect4.titlepage.before.recto"/> + <xsl:call-template name="sect4.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect4.titlepage.before.verso"/> + <xsl:call-template name="sect4.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect4.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect4.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect4.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect5.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sect5info/d:title"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sect5info/d:subtitle"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:corpauthor"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:authorgroup"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:author"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:othercredit"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:releaseinfo"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:copyright"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:legalnotice"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:pubdate"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:revision"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:revhistory"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="sect5.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect5.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect5.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect5.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect5.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect5.titlepage.before.recto"/> + <xsl:call-template name="sect5.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect5.titlepage.before.verso"/> + <xsl:call-template name="sect5.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect5.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect5.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect5.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="simplesect.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:simplesectinfo/d:title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:simplesectinfo/d:subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:corpauthor"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:authorgroup"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:author"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:othercredit"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:releaseinfo"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:copyright"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:legalnotice"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:pubdate"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:revision"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:revhistory"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> +</xsl:template> + +<xsl:template name="simplesect.titlepage.verso"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="simplesect.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="simplesect.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="simplesect.titlepage.before.recto"/> + <xsl:call-template name="simplesect.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="simplesect.titlepage.before.verso"/> + <xsl:call-template name="simplesect.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="simplesect.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="simplesect.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="simplesect.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="bibliography.titlepage.recto"> + <div xsl:use-attribute-sets="bibliography.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:bibliography[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:bibliographyinfo/d:subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="d:bibliographyinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="bibliography.titlepage.verso"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.separator"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="bibliography.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="bibliography.titlepage.before.recto"/> + <xsl:call-template name="bibliography.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="bibliography.titlepage.before.verso"/> + <xsl:call-template name="bibliography.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="bibliography.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="bibliography.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="bibliography.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="bibliography.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="bibliography.titlepage.recto.style"> +<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="glossary.titlepage.recto"> + <div xsl:use-attribute-sets="glossary.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:glossary[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:glossaryinfo/d:subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="d:glossaryinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="glossary.titlepage.verso"> +</xsl:template> + +<xsl:template name="glossary.titlepage.separator"> +</xsl:template> + +<xsl:template name="glossary.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="glossary.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="glossary.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="glossary.titlepage.before.recto"/> + <xsl:call-template name="glossary.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="glossary.titlepage.before.verso"/> + <xsl:call-template name="glossary.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="glossary.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="glossary.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="glossary.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="glossary.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="glossary.titlepage.recto.style"> +<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="index.titlepage.recto"> + <div xsl:use-attribute-sets="index.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:index[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:indexinfo/d:subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="d:indexinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="index.titlepage.verso"> +</xsl:template> + +<xsl:template name="index.titlepage.separator"> +</xsl:template> + +<xsl:template name="index.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="index.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="index.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="index.titlepage.before.recto"/> + <xsl:call-template name="index.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="index.titlepage.before.verso"/> + <xsl:call-template name="index.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="index.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="index.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="index.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="index.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="index.titlepage.recto.style"> +<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="setindex.titlepage.recto"> + <div xsl:use-attribute-sets="setindex.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:setindex[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:setindexinfo/d:subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="d:setindexinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="setindex.titlepage.verso"> +</xsl:template> + +<xsl:template name="setindex.titlepage.separator"> +</xsl:template> + +<xsl:template name="setindex.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="setindex.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="setindex.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="setindex.titlepage.before.recto"/> + <xsl:call-template name="setindex.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="setindex.titlepage.before.verso"/> + <xsl:call-template name="setindex.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="setindex.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="setindex.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="setindex.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="setindex.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="setindex.titlepage.recto.style"> +<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sidebar.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sidebarinfo/d:title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:sidebarinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sidebarinfo/d:subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:sidebarinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="sidebar.titlepage.verso"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.separator"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sidebar.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sidebar.titlepage.before.recto"/> + <xsl:call-template name="sidebar.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sidebar.titlepage.before.verso"/> + <xsl:call-template name="sidebar.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sidebar.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sidebar.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sidebar.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="sidebar.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sidebar.titlepage.recto.style"> +<xsl:call-template name="formal.object.heading"> +<xsl:with-param name="object" select="ancestor-or-self::d:sidebar[1]"/> +</xsl:call-template> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="sidebar.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sidebar.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/> +</div> +</xsl:template> + +</xsl:stylesheet> + diff --git a/DOCBOOK/webhelp/xsl/webhelp-common.xsl b/DOCBOOK/webhelp/xsl/webhelp-common.xsl new file mode 100755 index 0000000..52377ef --- /dev/null +++ b/DOCBOOK/webhelp/xsl/webhelp-common.xsl @@ -0,0 +1,932 @@ +<xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:d="http://docbook.org/ns/docbook" +xmlns:exsl="http://exslt.org/common" + xmlns:ng="http://docbook.org/docbook-ng" + xmlns:db="http://docbook.org/ns/docbook" + version="1.0" xmlns="http://www.w3.org/1999/xhtml" + exclude-result-prefixes="exsl ng db d"> + + <!-- ******************************************************************** + $Id$ + ******************************************************************** + + This file is part customization layer on top of the XSL DocBook + Stylesheet distribution that generates webhelp output. + + ******************************************************************** --> + + <xsl:param name="chunker.output.method"> + <xsl:choose> + <xsl:when test="contains(system-property('xsl:vendor'), 'SAXON 6')">saxon:xhtml</xsl:when> + <xsl:otherwise>html</xsl:otherwise> + </xsl:choose> + </xsl:param> + + <xsl:param name="doc.title"> + <xsl:call-template name="get.doc.title"/> + </xsl:param> + + <!-- Set some reasonable defaults for webhelp output --> + <xsl:param name="webhelp.common.dir">common/</xsl:param> + <xsl:param name="chunker.output.indent">yes</xsl:param> + <xsl:param name="navig.showtitles">0</xsl:param> + <xsl:param name="manifest.in.base.dir" select="0"/> + <xsl:param name="base.dir" select="concat($webhelp.base.dir,'/')"/> + <xsl:param name="suppress.navigation">0</xsl:param> + <!-- Generate the end-of-the-book index --> + <xsl:param name="generate.index" select="1"/> + <xsl:param name="inherit.keywords" select="'0'"/> + <xsl:param name="para.propagates.style" select="1"/> + <xsl:param name="phrase.propagates.style" select="1"/> + <xsl:param name="chunk.first.sections" select="1"/> + <xsl:param name="chunk.section.depth" select="3"/> + <xsl:param name="use.id.as.filename" select="1"/> + <xsl:param name="branding">not set</xsl:param> + <xsl:param name="brandname"> </xsl:param> + + <xsl:param name="section.autolabel" select="0"/> + <xsl:param name="chapter.autolabel" select="0"/> + <xsl:param name="appendix.autolabel" select="0"/> + <xsl:param name="qandadiv.autolabel" select="0"/> + <xsl:param name="reference.autolabel" select="0"/> + <xsl:param name="part.autolabel" select="0"/> + <xsl:param name="section.label.includes.component.label" select="1"/> + + <xsl:param name="generate.section.toc.level" select="5"/> + <xsl:param name="component.label.includes.part.label" select="1"/> + <xsl:param name="suppress.footer.navigation">0</xsl:param> + <xsl:param name="callout.graphics.path"><xsl:value-of select="$webhelp.common.dir"/>images/callouts/</xsl:param> + <xsl:param name="callouts.extension">1</xsl:param> + <xsl:param name="admon.graphics.path"><xsl:value-of select="$webhelp.common.dir"/>images/admon/</xsl:param> + <xsl:param name="admon.graphics" select="0"/> + <!--xsl:param name="generate.toc">book toc</xsl:param--> + +<xsl:param name="generate.toc"> +appendix toc,title +article/appendix nop +article toc,title +book title,figure,table,example,equation +chapter toc,title +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title +</xsl:param> + + <!-- Localizations of webhelp specific words. Your contributions for other languages are appreciated. + Currently, only around 10 translations needed. --> + <!-- Moved to files under 'gentext/locale/', search for WebHelp --> + + <xsl:template name="user.head.title"> + <xsl:param name="node" select="."/> + <xsl:param name="title"> + <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/> + </xsl:param> + <xsl:param name="document-title"> + <xsl:apply-templates select="/*" mode="object.title.markup.textonly"/> + </xsl:param> + + <title> + <xsl:copy-of select="$title"/> - <xsl:if test="parent::*"> - <xsl:copy-of select="$document-title"/></xsl:if> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [if IE]> + <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/> + <![endif] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + language: + + + + + + + + Note + + + namesp. add + + + added namespace before processing + + + + + + + + + + + Note + + + namesp. add + + + added namespace before processing + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + +
                  + + + + + +
                  + + + + + + + + + + + + + + + + + + + {$brandname} Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                • + + webhelp-currentid + + + + + + + +
                    + + + +
                  +
                  +
                • +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="//d:title[1]"/>  + + + If not automatically redirected, click content/ + + + + + + + + + + + + + + + + //Resource strings for localization + var localeresource = new Object; + localeresource["search_no_results"]=" + + + "; + + + + + + diff --git a/DOCBOOK/webhelp/xsl/webhelp-common_custom.xsl b/DOCBOOK/webhelp/xsl/webhelp-common_custom.xsl new file mode 100755 index 0000000..cf93739 --- /dev/null +++ b/DOCBOOK/webhelp/xsl/webhelp-common_custom.xsl @@ -0,0 +1,945 @@ + + + + + + + saxon:xhtml + html + + + + + + + + + common/ + yes + 0 + + + 0 + + + + + + + + + not set + + + + + + + + + + + + + 0 + images/callouts/ + 1 + images/admon/ + + + + + + + + + +figure after +example before +equation before +table before +procedure before + + + +appendix toc,title +article/appendix nop +article toc,title +book title,figure,table,example,equation +chapter nop +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title + + + + + + + + + + + + + + + + <xsl:copy-of select="$title"/> - <xsl:if test="parent::*"> - <xsl:copy-of select="$document-title"/></xsl:if> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [if IE]> + <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/> + <![endif] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + language: + + + + + + + + Note + + + namesp. add + + + added namespace before processing + + + + + + + + + + + Note + + + namesp. add + + + added namespace before processing + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + +
                  + + + + + +
                  + + + + + + + + + + + + + + + + + + + {$brandname} Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                • + + webhelp-currentid + + + + + + + +
                    + + + +
                  +
                  +
                • +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="//d:title[1]"/>  + + + If not automatically redirected, click content/ + + + + + + + + + + + + + + + + //Resource strings for localization + var localeresource = new Object; + localeresource["search_no_results"]=" + + + "; + + + + +
                  + diff --git a/DOCBOOK/webhelp/xsl/webhelp.xsl b/DOCBOOK/webhelp/xsl/webhelp.xsl new file mode 100755 index 0000000..b8671b2 --- /dev/null +++ b/DOCBOOK/webhelp/xsl/webhelp.xsl @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/DOCBOOK/webhelp/xsl/webhelp_custom.xsl b/DOCBOOK/webhelp/xsl/webhelp_custom.xsl new file mode 100755 index 0000000..dcae680 --- /dev/null +++ b/DOCBOOK/webhelp/xsl/webhelp_custom.xsl @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/DOCBOOK/website/autolayout.xsl b/DOCBOOK/website/autolayout.xsl new file mode 100755 index 0000000..461bfce --- /dev/null +++ b/DOCBOOK/website/autolayout.xsl @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + All toc entries must have a page attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + All toc entries must have an href attribute. + + + + + + All href toc entries must have an id attribute. + + + + + off site: + + + + + + + + + + + + + + + + + + Off-site links must provide a title. + + + + + + + + + + + + + All toc entries must have a page attribute. + + + + + + + + + : missing ID. + + + + + + + + + + + + + + index.html + + + + + + + + + + + : missing filename. + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:apply-templates select="$page/*[1]/head/title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + + + / + + + + + + + / + + + + + + diff --git a/DOCBOOK/website/chunk-common.xsl b/DOCBOOK/website/chunk-common.xsl new file mode 100755 index 0000000..d750c05 --- /dev/null +++ b/DOCBOOK/website/chunk-common.xsl @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fail: tocentry has both page and href attributes. + + + + + + + + + index.html + + + + + + + + + + + + + + + + + + + + + does not exist. + + + + + + + + does not exist. + + + + + + + + + + + + + + + + + + / + + + + + + + + 0 + + + + 1 + + 0 + + + + + + 1 + + 0 + + + 1 + + + + + + + Update: + + : + + + + + + + + + + + + + + + + + + Up-to-date: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must specify a $website.database.document parameter when + $collect.xref.targets is set to 'yes' or 'only'. + The xref targets were not collected. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/website/chunk-tabular.xsl b/DOCBOOK/website/chunk-tabular.xsl new file mode 100755 index 0000000..cdf97cf --- /dev/null +++ b/DOCBOOK/website/chunk-tabular.xsl @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/DOCBOOK/website/chunk-website.xsl b/DOCBOOK/website/chunk-website.xsl new file mode 100755 index 0000000..a9179a0 --- /dev/null +++ b/DOCBOOK/website/chunk-website.xsl @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/DOCBOOK/website/head.xsl b/DOCBOOK/website/head.xsl new file mode 100755 index 0000000..e3ac308 --- /dev/null +++ b/DOCBOOK/website/head.xsl @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JavaScript + + + + + + + + + text/javascript + + + + + + + + + + + + + + + + + + + + + + + + <xsl:copy-of select="$title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note + + + namesp. add + + + added namespace before processing + + + + + + + + + + + Note + + + namesp. add + + + added namespace before processing + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/DOCBOOK/xhtml-1_1/ebnf.xsl b/DOCBOOK/xhtml-1_1/ebnf.xsl new file mode 100755 index 0000000..f1d45be --- /dev/null +++ b/DOCBOOK/xhtml-1_1/ebnf.xsl @@ -0,0 +1,328 @@ + + + + + + + +$Id: ebnf.xsl 9664 2012-11-07 20:02:17Z bobstayton $ + +Walsh +Norman +19992000 +Norman Walsh + + +HTML EBNF Reference + + +
                  Introduction + +This is technical reference documentation for the DocBook XSL +Stylesheets; it documents (some of) the parameters, templates, and +other elements of the stylesheets. + +This reference describes the templates and parameters relevant +to formatting EBNF markup. + +This is not intended to be user documentation. +It is provided for developers writing customization layers for the +stylesheets, and for anyone who's interested in how it +works. + +Although I am trying to be thorough, this documentation is known +to be incomplete. Don't forget to read the source, too :-) +
                  +
                  +
                  + + + + + + + background-color: + + + + + 1 + + + + + + EBNF + + for + + + + + + + + + + + + +
                  + + +
                  + + + background-color: + + + + + + + EBNF productions + +
                  +
                  +
                  + + + + + + + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + Error: no ID for productionrecap linkend: + + . + + + + + + Warning: multiple "IDs" for productionrecap linkend: + + . + + + + + + + + + + + + + + + + | +
                  +
                  +
                  + + + + + + + + + + + + + + + production + + + + + + + + + Non-terminals with no content must point to + production elements in the current document. + + + Invalid xpointer for empty nt: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + + + + /*  + +  */ +
                  +
                  + + + + + + + + + constraintdef + + + + + + + + + + + + + + + + : + + + + + + + : + + + + + + + + + +  ] + +
                  +
                  +
                  + + +
                  + + + + +
                  +
                  + + +

                  +
                  + + + +
                  \ No newline at end of file diff --git a/DOCBOOK/xhtml-1_1/footnote.xsl b/DOCBOOK/xhtml-1_1/footnote.xsl new file mode 100755 index 0000000..6450361 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/footnote.xsl @@ -0,0 +1,328 @@ + + + + + + + + + + + + + #ftn. + + + + + + + + + + + + + + + + + [ + + ] + + + + + + + + + + +ERROR: A footnoteref element has a linkend that points to an element that is not a footnote. +Typically this happens when an id attribute is accidentally applied to the child of a footnote element. +target element: +linkend/id: + + + + + + + + + + + + #ftn. + + + + + + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + + + + + + + + + [ + + ] + + + + + + + + + + + + + ftn. + + + + + + # + + + + + + + + + + + + + + + + + + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + +
                  +
                  + +
                  +
                  + + +
                  +
                  +

                  The following annotations are from this essay. You are seeing + them here because your browser doesn’t support the user-interface + techniques used to make them appear as ‘popups’ on modern browsers.

                  +
                  + + +
                  +
                  +
                  + + + + + + + + + + + + ftn. + + + + + + + +
                  + + +
                  +
                  + + +
                  + + + + +
                  +
                  + + + + Warning: footnote number may not be generated + correctly; + + unexpected as first child of footnote. + +
                  + + + +
                  +
                  +
                  +
                  + + + + + + + + +
                  \ No newline at end of file diff --git a/DOCBOOK/xhtml-1_1/formal.xsl b/DOCBOOK/xhtml-1_1/formal.xsl new file mode 100755 index 0000000..36a0aee --- /dev/null +++ b/DOCBOOK/xhtml-1_1/formal.xsl @@ -0,0 +1,496 @@ + + + + + + + +1 + + + + + + + + + + +
                  + + + + + + + + + + +
                  + +
                  + + + + + +

                  + + +

                  +

                  + + + + + + + +
                  +
                  + +
                  +
                  +
                  + + + + + + + + + -float + + + + + + + + + +
                  + + + + + + + + + + + + + +
                  + +
                  +
                  + +

                  + + + +

                  +
                  +
                  +
                  + + + + + + + +
                  + +

                  + + + + + + + + +

                  +

                  +
                  + + + + + + + + + -float + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + before + + + + + + + + + +
                  + + + + + + + + + + + + +
                  + +
                  + + + +

                  + + +

                  + +

                  + +
                  + + + + + +
                  +
                  + +
                  +
                  +
                  + + + + + + + + + -float + + + + + + + + + +
                  + + + + Broken table: tr descendent of CALS Table. + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + Broken table: row descendent of HTML table. + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + float: + + ; + + + +
                  +
                  + +
                  diff --git a/DOCBOOK/xhtml-1_1/glossary.xsl b/DOCBOOK/xhtml-1_1/glossary.xsl new file mode 100755 index 0000000..34bf2b4 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/glossary.xsl @@ -0,0 +1,599 @@ + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + +
                  +
                  + + + +
                  + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + +
                  + + + + + + +
                  + + + + + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + + +
                  + + + + + + +
                  + + + + + + + + + + +
                  +
                  +
                  + + +

                  + + +

                  +
                  + + + + + + + + +
                  + + + + 0 + 1 + + + + + + + 0 + 1 + + + + + + + + ( + + ) + + + + + +
                  +
                  + +
                  + + + + 0 + 1 + + + + + + + 0 + 1 + + + + + + + + ( + + ) + +
                  +
                  + +
                  + + + + 0 + 1 + + + + + + + 0 + 1 + + + + + +
                  +
                  +
                  + + +
                  + + + + + + + + + , + + + + + , + + + + + , + + + + + + + + + + + +
                  +

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glosssee @otherterm reference not found: + + + + + + + + + + + + + + +

                  +
                  +
                  + + +
                  + + + + + +

                  + + + + + + + + + + + + + +

                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glossseealso @otherterm reference not found: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + + + + + + + + Warning: processing automatic glossary + without a glossary.collection file. + + + + + + Warning: processing automatic glossary but unable to + open glossary.collection file ' + + ' + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + + + +
                  +
                  + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + +
                  + + + + + + +
                  + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + + +
                  \ No newline at end of file diff --git a/DOCBOOK/xhtml-1_1/graphics.xsl b/DOCBOOK/xhtml-1_1/graphics.xsl new file mode 100755 index 0000000..361537e --- /dev/null +++ b/DOCBOOK/xhtml-1_1/graphics.xsl @@ -0,0 +1,1511 @@ + + + + + + + + + + + + + 1 + + + + + + 1 + + + + + +
                  + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + + 1 + 0 + + + + + + 1.0 + 1.0 + + + + 1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text-align: + + middle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: imagemaps not supported + on scaled images + + + + 0 + + + + + + + + + + + + + + + + + + text-align: + + middle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + manufactured viewport for HTML img + + + cellpadding: 0; cellspacing: 0; + + + + + + + + + + + + + height: + + px + + + + + + + + + + + +
                  + + + + + background-color: + + + + + background-color: + + + + + + + text-align: + + + + + + + + + +
                  +
                  + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + calspair + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + , + + , + + + + + + + + + + + + Warning: only calspair or + otherunits='imagemap' supported + in imageobjectco + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text-align: + + middle + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + text-align: + + + + + +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + text-align: + + + + + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + +
                  + + + + text-align: + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  \ No newline at end of file diff --git a/DOCBOOK/xhtml-1_1/highlight.xsl b/DOCBOOK/xhtml-1_1/highlight.xsl new file mode 100755 index 0000000..eabb63e --- /dev/null +++ b/DOCBOOK/xhtml-1_1/highlight.xsl @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml-1_1/html-rtf.xsl b/DOCBOOK/xhtml-1_1/html-rtf.xsl new file mode 100755 index 0000000..e079a73 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/html-rtf.xsl @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + +
                  + + + + + + + + + + +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  + + + + + + + + + + +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml-1_1/html.xsl b/DOCBOOK/xhtml-1_1/html.xsl new file mode 100755 index 0000000..746b5ed --- /dev/null +++ b/DOCBOOK/xhtml-1_1/html.xsl @@ -0,0 +1,686 @@ + + + + + + + + + + + + left + right + left + + + + + + right + left + right + + + + + + ltr + rtl + ltr + + + + + +div + +0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + # + + + + + + + + + + + + + + + + + + + bullet + + + + + + + + + bullet + + + © + + + ® + (SM) +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID recommended on + + + : + + + + ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: no root element for CSS source file' + + '. + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: missing CSS input filename. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml-1_1/htmltbl.xsl b/DOCBOOK/xhtml-1_1/htmltbl.xsl new file mode 100755 index 0000000..a7b034c --- /dev/null +++ b/DOCBOOK/xhtml-1_1/htmltbl.xsl @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float: + + left + right + + + + + + + + + + + + + none + none + + ; + + + + diff --git a/DOCBOOK/xhtml-1_1/index.xsl b/DOCBOOK/xhtml-1_1/index.xsl new file mode 100755 index 0000000..26aba83 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/index.xsl @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + +
                  + +
                  +
                  +
                  +
                  + + + + + + + + + + +
                  +
                  +
                  + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + +
                  + + + + +
                  + +
                  +
                  +
                  + + +

                  + + +

                  +
                  + + + + + + + + + + + + + + + + + + + + + + +
                  + +
                  +
                  + + + +
                  +
                  + + + + + + + + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  +
                  +
                  + + +
                  + ( + + + + + + ) +
                  +
                  + + +
                  + ( + + + + + + ) +
                  +
                  + +
                  diff --git a/DOCBOOK/xhtml-1_1/info.xsl b/DOCBOOK/xhtml-1_1/info.xsl new file mode 100755 index 0000000..875d5ba --- /dev/null +++ b/DOCBOOK/xhtml-1_1/info.xsl @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml-1_1/inline.xsl b/DOCBOOK/xhtml-1_1/inline.xsl new file mode 100755 index 0000000..82fdfa1 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/inline.xsl @@ -0,0 +1,1491 @@ + + + + + + + + + + + + + + + + + + + _blank + _top + + + + + + + + + + + + + + 1 + 0 + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XLink to nonexistent id: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + span + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + , + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + abbr + + + + + + acronym + + + + + + + + + + + + + + + + + + + + + + + + + + http://example.com/cgi-bin/man.cgi? + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glossary.collection specified, but there are + + automatic glossaries + + + + + + + + + + + + + + + + + + + + + + + + There's no entry for + + in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error: no glossentry for glossterm: + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + element + + + + + + + + + + + + + + + + </ + + > + + + & + + ; + + + &# + + ; + + + % + + ; + + + <? + + > + + + <? + + ?> + + + < + + > + + + < + + /> + + + <!-- + + --> + + + + + + + + + + + + + + + + + + + + + + < + + + + + + mailto: + + + + + + > + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + + + + + + + + + + + + + + + + + + ] + + + [ + + ] + + + + + + + + + + + + + [ + + + + + + + + + + + + ] + + + [ + + ] + + + + + + + + + + + + +

                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DOCBOOK/xhtml-1_1/keywords.xsl b/DOCBOOK/xhtml-1_1/keywords.xsl new file mode 100755 index 0000000..c79e1a8 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/keywords.xsl @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + , + + + + + diff --git a/DOCBOOK/xhtml-1_1/lists.xsl b/DOCBOOK/xhtml-1_1/lists.xsl new file mode 100755 index 0000000..8d8ed04 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/lists.xsl @@ -0,0 +1,1201 @@ + + + + + + + + + + + + + + + compact + + + + + + + + + list-style-type: + + ; + + +
                  + + + + + + + + + + +
                    + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + circle + disc + square + + + + + + +
                • + + + + + list-style-type: + + + + + + + + + + + +
                  + +
                  +
                  + + + +
                  +
                • +
                  + + + + + + + compact + + + + + + + + + + + + + + 1 + a + i + A + I + + + + Unexpected numeration: + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + +
                    + + + + Strict XHTML does not allow setting @start attribute for lists! + + + + +
                  +
                  +
                  +
                  +
                  + + + + + + +
                • + + + @override attribute cannot be set in strict XHTML output for listitem: + + + + + + + + +
                  + +
                  +
                  + + + +
                  +
                • +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + + +
                  + + +
                  + + + + + + + + + + compact + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + +
                  + + + + +
                  +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + + + + + + + + + + + + + + +

                  +
                  +
                  +
                  + + +
                  + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + +

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + + + + + +
                  + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  +
                  +
                  +
                  + + + + + + + + + +
                  + +
                  +
                  + + + +
                  +
                  + + + + + + + + + Simple list + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + Simple list + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + Simple list + + + + + + + + + + 1 + + + +
                  +
                  + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + + 1 + + + + + + + + +   + + + + + + + + + + + + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + + 1 + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + +
                  + + + + + 0 + 1 + + + + + + + 0 + 1 + + + + + + + + + + + + +
                    + + +
                  +
                  + +
                    + + + +
                  +
                  +
                  + + + + +
                  +
                  + + + + + +decimallower-alphalower-romanupper-alphaupper-romanWarning: unknown procedure.step.numeration value:
                    list-style-type:
                  + + +
                • + + + + +
                • +
                  + + + +
                    + + + +
                  +
                  + + +

                  + + + + +

                  +
                  + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + +
                  +
                  + + +
                  + + + + + + + +
                  +
                  + + + + + + + + + +
                  + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + : + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + Callout list + + +
                  +
                  + +
                  + + +
                  +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + +

                  + + + + +

                  + + + + + +
                  + +
                  + + + + + +
                  +
                  +
                  +
                  +
                  + + + + + + + + + +

                  + + + + + + + + + + + + + + + + +

                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml-1_1/maketoc.xsl b/DOCBOOK/xhtml-1_1/maketoc.xsl new file mode 100755 index 0000000..92a86ef --- /dev/null +++ b/DOCBOOK/xhtml-1_1/maketoc.xsl @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + filename=" + + " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml-1_1/manifest.xsl b/DOCBOOK/xhtml-1_1/manifest.xsl new file mode 100755 index 0000000..5d87691 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/manifest.xsl @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml-1_1/math.xsl b/DOCBOOK/xhtml-1_1/math.xsl new file mode 100755 index 0000000..0748549 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/math.xsl @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unsupported TeX math notation: + + + + + + + + + + + + + \nopagenumbers + + + + + \bye + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $ + + + + $ + + + \vfill\eject + + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $$ + + + + $$ + + + \vfill\eject + + + + + + + + + + \documentclass{article} + + \pagestyle{empty} + + \begin{document} + + + + + \end{document} + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $ + + + + $ + + + \newpage + + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $$ + + + + $$ + + + \newpage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + diff --git a/DOCBOOK/xhtml-1_1/oldchunker.xsl b/DOCBOOK/xhtml-1_1/oldchunker.xsl new file mode 100755 index 0000000..36c7d72 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/oldchunker.xsl @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + +Encoding used in generated HTML pages + +This encoding is used in files generated by chunking stylesheet. Currently +only Saxon is able to change output encoding. + + + + + + + + + +Saxon character representation used in generated HTML pages + +This character representation is used in files generated by chunking stylesheet. If +you want to suppress entity references for characters with direct representation +in default.encoding, set this parameter to value native. + + + + + + + + + + + + + + + + + + + + + + + + Chunking isn't supported with + + + + + + + + + + + + + + + Writing + + + for + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can't make chunks with + + 's processor. + + + + + + + + + + + + + + + + Writing + + + for + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can't make chunks with + + 's processor. + + + + + + diff --git a/DOCBOOK/xhtml-1_1/onechunk.xsl b/DOCBOOK/xhtml-1_1/onechunk.xsl new file mode 100755 index 0000000..c036af5 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/onechunk.xsl @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + +1 + + + + # + + + + + + diff --git a/DOCBOOK/xhtml-1_1/param.xsl b/DOCBOOK/xhtml-1_1/param.xsl new file mode 100755 index 0000000..bfca8e2 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/param.xsl @@ -0,0 +1,442 @@ + + + + + + +.png + +images/ + + + + + + +/* ====================================================================== + Annotations +*/ + +div.annotation-list { visibility: hidden; + } + +div.annotation-nocss { position: absolute; + visibility: hidden; + } + +div.annotation-popup { position: absolute; + z-index: 4; + visibility: hidden; + padding: 0px; + margin: 2px; + border-style: solid; + border-width: 1px; + width: 200px; + background-color: white; + } + +div.annotation-title { padding: 1px; + font-weight: bold; + border-bottom-style: solid; + border-bottom-width: 1px; + color: white; + background-color: black; + } + +div.annotation-body { padding: 2px; + } + +div.annotation-body p { margin-top: 0px; + padding-top: 0px; + } + +div.annotation-close { position: absolute; + top: 2px; + right: 2px; + } + + +http://docbook.sourceforge.net/release/images/annot-close.png +http://docbook.sourceforge.net/release/images/annot-open.png + + +http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js + + +A + + +. + +. +http://docbook.sourceforge.net/release/bibliography/bibliography.xml + + +normal + + +60 +.png + + +15 + +images/callouts/ + + +10 +10102 + + + + + + + + + + + + +no + +1 + + + + + + left + before + + + +all + + +docbook.css.xml +no +images/draft.png + +::= + + + + +#F5DCB3 + + +com.example.help +DocBook Online Help Sample +Example provider +1 + + + + + + 1 + 0 + + + + +1 + + + +figure before +example before +equation before +table before +procedure before +task before + + +kr + + + + + + + + + + + +appendix toc,title +article/appendix nop +article toc,title +book toc,title,figure,table,example,equation +chapter toc,title +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title + + + + +no + + + + + + + + + + + + + +.html + + +copyright + + + +text/javascript + +text/css +alias.h + + + + + + + +User1 + + +User2 + + + + + + + + + +htmlhelp.chm + + +iso-8859-1 + + + + + +toc.hhc +5 + + +index.hhk +htmlhelp.hhp + +Main + +context.h + + + + + + + + + + + + + +basic + + + + + + + +no + +no +iso-8859-1 + + +en + + + + +5 + + +3 + + + + + + + HTML.manifest + + + + ++ +.gif + +images/ +1 + + +6in + + +no + + + replace + +0 + +I + +90 +10 + + + + + + + + + + + + + + + + +; + + + + + +. +number + + + + + + + + + + I +index + +. +.!?: + +8 + + + + + 0 + background-color: #E0E0E0 + + + + + + +0 + + + + + +solid +0.5pt +a + + + +solid +0.5pt + + olinkdb.xml +target.db + +tex-math-equations.tex + + + +dl +8 +2 + + + + + + + + + +0 +, +0 +docs +../common/ +index.html +true +en +index.html + + + + writing-mode + + + + + + + + +: + + + + \ No newline at end of file diff --git a/DOCBOOK/xhtml-1_1/pi.xsl b/DOCBOOK/xhtml-1_1/pi.xsl new file mode 100755 index 0000000..73715a4 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/pi.xsl @@ -0,0 +1,1237 @@ + + + + + + + +HTML Processing Instruction Reference + + $Id: pi.xsl 9022 2011-07-14 19:21:36Z bobstayton $ + + + + Introduction + This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for HTML output. + + You add these PIs at particular points in a document to + cause specific “exceptions” to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + + Sets background color for an image + + Use the dbhtml background-color PI before or + after an image (graphic, inlinegraphic, + imagedata, or videodata element) as a + sibling to the element, to set a background color for the + image. + + + dbhtml background-color="color" + + + + background-color="color" + + An HTML color value + + + + + + Background color + + + + + + + + + + + + Sets background color on a CALS table row or table cell + + Use the dbhtml bgcolor PI as child of a CALS table row + or cell to set a background color for that table row or cell. + + + dbhtml bgcolor="color" + + + + bgcolor="color" + + An HTML color value + + + + + + Cell background color + + + + + + + + + + + + Specifies cellpadding in CALS table or qandaset output + + Use the dbhtml cellpadding PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellpadding attribute in the + output HTML table. + + + dbhtml cellpadding="number" + + + + cellpadding="number" + + Specifies the cellpadding + + + + + + html.cellpadding + + + Cell spacing and cell padding, + Q and A formatting + + + + + + + + + + + + Specifies cellspacing in CALS table or qandaset output + + Use the dbhtml cellspacing PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellspacing attribute in the + output HTML table. + + + dbhtml cellspacing="number" + + + + cellspacing="number" + + Specifies the cellspacing + + + + + + html.cellspacing + + + Cell spacing and cell padding, + Q and A formatting + + + + + + + + + + + + Set value of the class attribute for a CALS table row + + Use the dbhtml class PI as a child of a + row to specify a class + attribute and value in the HTML output for that row. + + + dbhtml class="name" + + + + class="name" + + Specifies the class name + + + + + + Table styles in HTML output + + + + + + + + + + + + Specifies a directory name in which to write files + + When chunking output, use the dbhtml dir PI + as a child of a chunk source to cause the output of that + chunk to be written to the specified directory; also, use it + as a child of a mediaobject to specify a + directory into which any long-description files for that + mediaobject will be written. + +The output directory specification is inherited by all +chunks of the descendants of the element. If descendants need +to go to a different directory, then add another +dbhtml dir processing +instruction as a child of the source element +for that chunk, and specify the path relative to the +ancestor path. + +For example, to put most chunk files into +shared +but one chapter into +exception +at the same level, use: + +<book> + <?dbhtml dir="shared"?> + ... + <chapter> + <?dbhtml dir="../exception"?> + </chapter> +</book> + + + + + + dbhtml dir="path" + + + + dir="path" + + Specifies the pathname for the directory + + + + + + base.dir + + + dbhtml dir processing instruction + + + + + + + + + + + + Specifies a filename for a chunk + +When chunking output, use the dbhtml filename + PI as a child of a chunk source to specify a filename for + the output file for that chunk. Include the filename suffix. + +You cannot include a directory path in the filename value, +or your links may not work. Add a +dbhtml dir processing instruction +to specify the output directory. You can also combine the two +specifications in one processing instruction: +dbhtml dir="mydir" filename="myfile.html". + + + + dbhtml filename="filename" + + + + filename="path" + + Specifies the filename for the file + + + + + + use.id.as.filename + + + dbhtml filenames + + + + + + + + + + + + Specifies presentation style for a funcsynopsis + + Use the dbhtml funcsynopsis-style PI as a child of + a funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + + dbhtml funcsynopsis-style="kr"|"ansi" + + + + funcsynopsis-style="kr" + + Displays funcprototype output in K&R style + + + funcsynopsis-style="ansi" + + Displays funcprototype output in ANSI style + + + + + + funcsynopsis.style + + + + + + + + + + + + Specifies a path to the location of an image file + + Use the dbhtml img.src.path PI before or + after an image (graphic, + inlinegraphic, imagedata, or + videodata element) as a sibling to the element, + to specify a path to the location of the image; in HTML + output, the value specified for the + img.src.path attribute is prepended to the + filename. + + + dbhtml img.src.path="path" + + + + img.src.path="path" + + Specifies the pathname to prepend to the name of the image file + + + + + + img.src.path + + + Using fileref + + + + + + + + + + + + Specifies the label width for a qandaset + + Use the dbhtml label-width PI as a child of a + qandaset to specify the width of labels. + + + dbhtml label-width="width" + + + + label-width="width" + + Specifies the label width (including units) + + + + + + Q and A formatting + + + + + + + + + + + + Specifies interval for line numbers in verbatims + + Use the dbhtml linenumbering.everyNth PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the interval at which lines are numbered. + + + dbhtml linenumbering.everyNth="N" + + + + linenumbering.everyNth="N" + + Specifies numbering interval; a number is output + before every Nth line + + + + + + linenumbering.everyNth + + + Line numbering + + + + + + + + + + + + Specifies separator text for line numbers in verbatims + + Use the dbhtml linenumbering.separator PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the separator text output between the line numbers and content. + + + dbhtml linenumbering.separator="text" + + + + linenumbering.separator="text" + + Specifies the text (zero or more characters) + + + + + + linenumbering.separator + + + Line numbering + + + + + + + + + + + + Specifies width for line numbers in verbatims + + Use the dbhtml linenumbering.width PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the width set aside for line numbers. + + + dbhtml linenumbering.width="width" + + + + linenumbering.width="width" + + Specifies the width (inluding units) + + + + + + linenumbering.width + + + Line numbering + + + + + + + + + + + + Specifies presentation style for a variablelist or + segmentedlist + + Use the dbhtml list-presentation PI as a child of + a variablelist or segmentedlist to + control the presentation style for the list (to cause it, for + example, to be displayed as a table). + + + dbhtml list-presentation="list"|"table" + + + + list-presentation="list" + + Displays the list as a list + + + list-presentation="table" + + Displays the list as a table + + + + + + + + variablelist.as.table + + + segmentedlist.as.table + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the width of a variablelist or simplelist + + Use the dbhtml list-width PI as a child of a + variablelist or a simplelist presented + as a table, to specify the output width. + + + dbhtml list-width="width" + + + + list-width="width" + + Specifies the output width (including units) + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the height for a CALS table row + + Use the dbhtml row-height PI as a child of a + row to specify the height of the row. + + + dbhtml row-height="height" + + + + row-height="height" + + Specifies the row height (including units) + + + + + + Row height + + + + + + + + + + + + (obsolete) Sets the starting number on an ordered list + + This PI is obsolete. The intent of + this PI was to provide a means for setting a specific starting + number for an ordered list. Instead of this PI, set a value + for the override attribute on the first + listitem in the list; that will have the same + effect as what this PI was intended for. + + + dbhtml start="character" + + + + start="character" + + Specifies the character to use as the starting + number; use 0-9, a-z, A-Z, or lowercase or uppercase + Roman numerals + + + + + + List starting number + + + + + + + + + + + + Do not chunk any descendants of this element. + + When generating chunked HTML output, adding this PI as the child of an element that contains elements that would normally be generated on separate pages if generating chunked output causes chunking to stop at this point. No descendants of the current element will be split into new HTML pages: +<section> +<title>Configuring pencil</title> +<?dbhtml stop-chunking?> + +... + +</section> + + + + dbhtml stop-chunking + + + Chunking into multiple HTML files + + + + + + Specifies summary for CALS table, variablelist, segmentedlist, or qandaset output + + Use the dbhtml table-summary PI as a child of + a CALS table, variablelist, + segmentedlist, or qandaset to specify + the text for the HTML summary attribute + in the output HTML table. + + + dbhtml table-summary="text" + + + + table-summary="text" + + Specifies the summary text (zero or more characters) + + + + + + Variable list formatting in HTML, + Table summary text + + + + + + + + + + + + Specifies the width for a CALS table + + Use the dbhtml table-width PI as a child of a + CALS table to specify the width of the table in + output. + + + dbhtml table-width="width" + + + + table-width="width" + + Specifies the table width (including units or as a percentage) + + + + + + default.table.width + + + Table width + + + + + + + + + + + + Sets character formatting for terms in a variablelist + + Use the dbhtml term-presentation PI as a child + of a variablelist to set character formatting for + the term output of the list. + + + dbhtml term-presentation="bold"|"italic"|"bold-italic" + + + + term-presentation="bold" + + Specifies that terms are displayed in bold + + + term-presentation="italic" + + Specifies that terms are displayed in italic + + + term-presentation="bold-italic" + + Specifies that terms are displayed in bold-italic + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies separator text among terms in a varlistentry + + Use the dbhtml term-separator PI as a child + of a variablelist to specify the separator text + among term instances. + + + dbhtml term-separator="text" + + + + term-separator="text" + + Specifies the text (zero or more characters) + + + + + + variablelist.term.separator + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the term width for a variablelist + + Use the dbhtml term-width PI as a child of a + variablelist to specify the width for + term output. + + + dbhtml term-width="width" + + + + term-width="width" + + Specifies the term width (including units) + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies whether a TOC should be generated for a qandaset + + Use the dbhtml toc PI as a child of a + qandaset to specify whether a table of contents + (TOC) is generated for the qandaset. + + + dbhtml toc="0"|"1" + + + + toc="0" + + If zero, no TOC is generated + + + toc="1" + + If 1 (or any non-zero value), + a TOC is generated + + + + + + Q and A list of questions, + Q and A formatting + + + + + + + + + + + + Generates a hyperlinked list of commands + + Use the dbcmdlist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + cmdsynopsis instances; a hyperlinked navigational + “command list” will be generated at the top of output for that + element, enabling users to quickly jump + to each command synopsis. + + + dbcmdlist + + + [No parameters] + + + + + + No cmdsynopsis elements matched dbcmdlist PI, perhaps it's nested too deep? + + +
                  + + + +
                  +
                  + + + Generates a hyperlinked list of functions + + Use the dbfunclist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + funcsynopsis instances; a hyperlinked + navigational “function list” will be generated at the top of + output for that element, enabling users to quickly + jump to to each function synopsis. + + + dbfunclist + + + [No parameters] + + + + + + No funcsynopsis elements matched dbfunclist PI, perhaps it's nested too deep? + + +
                  + + + +
                  +
                  + + + Copies an external well-formed HTML/XML file into current doc + + Use the dbhtml-include href PI anywhere in a + document to cause the contents of the file referenced by the + href pseudo-attribute to be copied/inserted “as + is” into your HTML output at the point in document order + where the PI occurs in the source. + + The referenced file may contain plain text (as long as + it is “wrapped” in an html element — see the + note below) or markup in any arbitrary vocabulary, + including HTML — but it must conform to XML + well-formedness constraints (because the feature in XSLT + 1.0 for opening external files, the + document() function, can only handle + files that meet XML well-formedness constraints). + Among other things, XML well-formedness constraints + require a document to have a single root + element. So if the content you want to + include is plain text or is markup that does + not have a single root element, + wrap the content in an + html element. The stylesheets will + strip out that surrounding html “wrapper” when + they find it, leaving just the content you want to + insert. + + + + dbhtml-include href="URI" + + + + href="URI" + + Specifies the URI for the file to include; the URI + can be, for example, a remote http: + URI, or a local filesystem file: + URI + + + + + + textinsert.extension + + + Inserting external HTML code, + External code files + + + + + + + href + + + + + + + + + + + + + + + + + + + + ERROR: dbhtml-include processing instruction + href has no content. + + + + + + + ERROR: dbhtml-include processing instruction has + missing or empty href value. + + + + + + + + Sets topic name and topic id for context-sensitive HTML Help + + Use the dbhh PI as a child of components + that should be used as targets for context-sensitive help requests. + + + dbhh topicname="name" topicid="id" + + + + topicname="name" + + Specifies a unique string constant that identifies a help topic + + + topicid="id" + + Specifies a unique integer value for the topicname string + + + + + + Context-sensitive help + + + + + + + + + + filename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + # + + + + + + + + + + + + + + + + + + +
                  + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + + +
                  + + + # + + + + + + + + + + + + + + + + + + +
                  + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + / + + + + +
                  diff --git a/DOCBOOK/xhtml-1_1/profile-chunk-code.xsl b/DOCBOOK/xhtml-1_1/profile-chunk-code.xsl new file mode 100755 index 0000000..cc794b5 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/profile-chunk-code.xsl @@ -0,0 +1,640 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bk + + + + + + + + + + + + + + + ar + + + + + + + + + + + + + + + pr + + + + + + + + + + + + + + + ch + + + + + + + + + + + + + + + ap + + + + + + + + + + + + + + + + + + + pt + + + + + + + + + + + + + + + + + + + rn + + + + + + + + + + + + + + + + + + + + + + + + re + + + + + + + + + + + + + + + + + + + co + + + + + + + + + + + s + + + + + + + + + + + + + + + + + + + bi + + + + + + + + + + + + + + + + + + + go + + + + + + + + + + + + + + + + + + + ix + + + + + + + + si + + + + + + + + + + + + + + + + + + + to + + + + + + + + chunk-filename-error- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adding DocBook namespace to version 4 DocBook document + + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml-1_1/profile-chunk.xsl b/DOCBOOK/xhtml-1_1/profile-chunk.xsl new file mode 100755 index 0000000..0b60405 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/profile-chunk.xsl @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml-1_1/profile-docbook.xsl b/DOCBOOK/xhtml-1_1/profile-docbook.xsl new file mode 100755 index 0000000..1ec9a34 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/profile-docbook.xsl @@ -0,0 +1,502 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Element + + in namespace ' + + ' encountered + + in + + + , but no template matches. + + + + < + + > + + </ + + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:copy-of select="$title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adding DocBook namespace to version 4 DocBook document + + + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/DOCBOOK/xhtml-1_1/profile-onechunk.xsl b/DOCBOOK/xhtml-1_1/profile-onechunk.xsl new file mode 100755 index 0000000..b4c96df --- /dev/null +++ b/DOCBOOK/xhtml-1_1/profile-onechunk.xsl @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + +1 + + + + # + + + + + + diff --git a/DOCBOOK/xhtml-1_1/qandaset.xsl b/DOCBOOK/xhtml-1_1/qandaset.xsl new file mode 100755 index 0000000..676cbcf --- /dev/null +++ b/DOCBOOK/xhtml-1_1/qandaset.xsl @@ -0,0 +1,440 @@ + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + +

                  +
                  + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + +

                  +
                  + + + + + + + + + + +
                  + + + + + + + + + + + + + + +
                  + + +
                  +
                  + + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + +
                  + + + + +
                  + + + +
                  + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + width: 100%; + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1% + + + + + + + + + +
                  +
                  + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml-1_1/refentry.xsl b/DOCBOOK/xhtml-1_1/refentry.xsl new file mode 100755 index 0000000..c29d4f9 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/refentry.xsl @@ -0,0 +1,307 @@ + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + +

                  +
                  + + + + +
                  + + + + + + + +
                  +
                  +
                  +
                  + + + + + + +
                  +
                  + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + +
                  + + + + + + + + + + + +

                  + + + +

                  +
                  + +

                  + + + + + + + + +

                  +
                  +
                  + +

                  + +

                  +
                  +
                  + + + + + + , + + + + + + + + + em-dash + + + + + + + + + + + + + + + + : + + + + + + + +
                  + + + + + +

                  + + + + + + + + + + +

                  + +
                  +
                  + + + + + + + + + + + +
                  + + + + + + + + + + + + +
                  +
                  + + + + + + 0 + 1 + + + + 6 + + + + + + + + + + + + +

                  + +

                  +
                  + + + +

                  + +

                  +
                  + + + +

                  + +

                  +
                  + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml-1_1/sections.xsl b/DOCBOOK/xhtml-1_1/sections.xsl new file mode 100755 index 0000000..b002405 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/sections.xsl @@ -0,0 +1,564 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + 4 + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + + + + + + + + + + clear: both + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + 1 + + + + + + + 2 + 3 + 4 + 5 + 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml-1_1/synop.xsl b/DOCBOOK/xhtml-1_1/synop.xsl new file mode 100755 index 0000000..dd1abd0 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/synop.xsl @@ -0,0 +1,1616 @@ + + + + + + + + + + + + + + +
                  + +

                  + + + + + + + + + + + + + + + +

                  +
                  +
                  + + +
                  + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + + + + ( + + ) + +   + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +    
                  +    
                  +    
                  +  
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + + +
                  + +
                  +

                  +
                  + + + + + + + ( + + + + + + + fsfunc + + + + + + + + + ) + ; + + + + ... + ) + ; + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + +
                  + + + + ; +
                  + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + Function synopsis + + + cellspacing: 0; cellpadding: 0; + + + + + + + + + + + +
                  + +
                   
                  + +
                  + +
                  +
                  +
                   
                  +
                  + + + + + + + ( + + + + + + + fsfunc + + + + + + + + + + ) + ; + +   + + + + + ... + ) + ; + +   + + + + + + + + , + + + ) + ; + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + ; + + + + + + +

                  + +

                  +
                  + + + + + + + ( + + + + + + + fsfunc + + + + + + + + + void) + ; + + + + ... + ) + ; + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + Function synopsis + + + cellspacing: 0; cellpadding: 0; + + + + + + + + + + + +
                  + +
                   
                  +
                   
                  +
                  + + + + + + + ( + + + + + + + fsfunc + + + + + + + + + + void) + ; + +   + + + + + ... + ) + ; + +   + + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + +java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unrecognized language on + + : + + + + + + + + + + + +
                  +
                  +
                  + + + + + +
                  +    
                  +    
                  +    
                  +    
                  +       extends
                  +      
                  +      
                  +        
                  +      +
                  +
                  + + implements + + +
                  +      +
                  +
                  + + throws + + +  { +
                  + + } +
                  +
                  + + + + + + + + + , + + + + + + + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + + + +    + + + ; + + + + + + + + + +   + + + + + + + + +   + + + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + 0 + + , +
                  + + +   + + + +
                  + + + + + +
                  + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + ( + + + + ) + +
                  +     throws  + +
                  + + + + + ; +
                  + +
                  + + + + +
                  +    
                  +    
                  +    
                  +    
                  +      : 
                  +      
                  +      
                  +        
                  +      +
                  +
                  + + implements + + +
                  +      +
                  +
                  + + throws + + +  { +
                  + + } +
                  +
                  + + + + + + + + , + + + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + + + +    + + + ; + + + + + + + + + +   + + + + + + + + +   + + + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + ( + + ) + +
                  +     throws  + +
                  + + + + + ; +
                  + +
                  + + + + +
                  +    
                  +    
                  +    interface 
                  +    
                  +    
                  +      : 
                  +      
                  +      
                  +        
                  +      +
                  +
                  + + implements + + +
                  +      +
                  +
                  + + throws + + +  { +
                  + + } +
                  +
                  + + + + + + + + , + + + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + + + +    + + + ; + + + + + + + + + +   + + + + + + + + +   + + + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + ( + + ) + +
                  +     raises( + + ) +
                  + + + + + ; +
                  + +
                  + + + + +
                  +    
                  +    
                  +    package 
                  +    
                  +    ;
                  +    
                  + + + @ISA = ( + + ); +
                  +
                  + + +
                  +
                  + + + + + + + + , + + + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + + + +    + + + ; + + + + + + + + + +   + + + + + + + + +   + + + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + sub + + + { ... }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml-1_1/table.xsl b/DOCBOOK/xhtml-1_1/table.xsl new file mode 100755 index 0000000..d34cfb1 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/table.xsl @@ -0,0 +1,1178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + border- + + : + + + + + + ; + + + + + border- + + -width: + + ; + + + + border- + + -style: + + ; + + + + border- + + -color: + + ; + + + + + + + + + + + Error: CALS tables must specify the number of columns. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + border: none; + + + + + border-collapse: collapse; + + + + + + + 0 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + + + + + + + + + + + + + + + + + No convertLength function available. + + + + + + + + + + + + + + + + + + + + + + + + + + No adjustColumnWidths function available. + + + + + + + + + + + + + + + + + + + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + text-align: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text-align: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: overlapped row contains content! + + + This row intentionally left blank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + background-color: + + + + + + + + + + + + + + + + + + + + + + text-align: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + th + th + + th + + td + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + background-color: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text-align: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + : + + + + + + + + 0: + + + + + + + + + + + + + + + 0 + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text-align: + + + + + + text-align: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml-1_1/task.xsl b/DOCBOOK/xhtml-1_1/task.xsl new file mode 100755 index 0000000..77f1278 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/task.xsl @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + before + + + + + + + + +
                  + + + + + + + + + + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml-1_1/titlepage.templates.xsl b/DOCBOOK/xhtml-1_1/titlepage.templates.xsl new file mode 100755 index 0000000..669a4ac --- /dev/null +++ b/DOCBOOK/xhtml-1_1/titlepage.templates.xsl @@ -0,0 +1,4005 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + + +
                  + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + + +
                  + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + +
                  +
                  + + +
                  + + +
                  + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + + +
                  + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + + +
                  + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + +
                  + + +
                  + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + 1 + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  + + + +
                  +
                  + + +
                  + +
                  +
                  + +
                  diff --git a/DOCBOOK/xhtml-1_1/titlepage.xsl b/DOCBOOK/xhtml-1_1/titlepage.xsl new file mode 100755 index 0000000..47d2e69 --- /dev/null +++ b/DOCBOOK/xhtml-1_1/titlepage.xsl @@ -0,0 +1,1108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + +
                  + + + + + + + + + + + + +
                  +
                  + + + + + + + + + + + + + +
                  + + + + + + + + +
                  +
                  + + +
                  + + + + + + + + +
                  +
                  +
                  +
                  + + +
                  + + + +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + +
                  + + + +

                  +
                  +

                  + + + + + + + + + +

                  + + + + + + + + + + + + + + + +
                  +
                  + + +
                  + + + +
                  +
                  + + +
                  + + + +

                  Authors

                  +
                  + + + +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + +
                  +
                  +
                  + + + + + + + + + + +
                  + + + +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + + + +   + + +
                  + + +

                  +
                  +
                  +
                  +
                  + + + + +

                  Copyright

                  +
                  + +

                  + + + + + + + + copyright + + + + + + + + + +

                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + +

                  + + + +

                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + +

                  + + + + + + + +

                  +
                  + + + + + + + + + + + +
                  +
                  +
                  + + + + + + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + +
                  + + + +
                  +
                  +
                  + +
                  + + + + + + + + +
                  +
                  +
                  +
                  + + +

                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + +
                  + + + +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + 3 + 2 + + + + + + + + RevHistory + + + + +
                  + + + + + + border-style:solid; width:100%; + + + + + + + revhistory + + + + + + + + + +
                  + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + +

                  + + + +

                  +
                  + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + +

                  + + + + + + + + + + + + + + + + + + +

                  +
                  + + + + + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml-1_1/toc.xsl b/DOCBOOK/xhtml-1_1/toc.xsl new file mode 100755 index 0000000..73f1ffe --- /dev/null +++ b/DOCBOOK/xhtml-1_1/toc.xsl @@ -0,0 +1,334 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + + +
                  +
                  + +
                  + + + + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + +
                  + + + +
                  + + +
                  +
                  + +
                  + + + + + + + + + +
                  +
                  +
                  + + + + + + + + +
                  + + + + + +
                  +
                  + + + + + + +
                  +
                  +
                  + + + + + +
                  + + +
                  + +
                  + +
                • + + + +
                • +
                  +
                  +
                  + + + + +
                  + + +
                  +
                  + +
                • + + +
                • +
                  +
                  +
                  + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + +
                  + + +
                  + + +
                  +
                  + + +
                  + + +
                  +
                  + + + + + + + + + + + + +
                  + + +
                  +
                  + + + +
                  +
                  + + + + +
                  + + + + +
                  + + +
                  + +
                  + + + +
                  +
                  + + + + +
                  + + +
                  + +
                  + + + +
                  +
                  + + + + + Warning: don't know what to generate for + lot that has no children. + + + + +
                  + + +
                  +
                  + + +
                  + + +
                  +
                  + + + + + diff --git a/DOCBOOK/xhtml-1_1/verbatim.xsl b/DOCBOOK/xhtml-1_1/verbatim.xsl new file mode 100755 index 0000000..824f0ad --- /dev/null +++ b/DOCBOOK/xhtml-1_1/verbatim.xsl @@ -0,0 +1,389 @@ + + + + + + + + + + + + + + + + + + + + pre + + + + The shade.verbatim parameter is deprecated. + Use CSS instead, + + + for example: pre. + + { background-color: #E0E0E0; } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The shade.verbatim parameter is deprecated. + Use CSS instead, + + + for example: pre. + + { background-color: #E0E0E0; } + + + + + + + +
                  +            
                  +            
                  +            
                  +              
                  +            
                  +          
                  +
                  + +
                  + + +

                  + + + +

                  +
                  +
                  +
                  +
                  + + + +
                  +            
                  +            
                  +            
                  +          
                  +
                  + +
                  + + +

                  + + + +

                  +
                  +
                  +
                  +
                  +
                  +
                  + + + + + + + + + + +
                  + + +

                  + + + +

                  +
                  +
                  + + +
                  + + +

                  + + + +

                  +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unexpected verbatim environment: + + + + + + + + + + 1 + + + + + + + + + + + + + No numberLines function available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml-1_1/xref.xsl b/DOCBOOK/xhtml-1_1/xref.xsl new file mode 100755 index 0000000..6b46c5e --- /dev/null +++ b/DOCBOOK/xhtml-1_1/xref.xsl @@ -0,0 +1,1254 @@ + + + + + +http://docbook.org/xlink/role/olink + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Endterm points to nonexistent ID: + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: xref linking to + + has no generated link text. + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XRef to nonexistent id: + + + ??? + + + + + + + + + + + + + + + + Endterm points to nonexistent ID: + + + + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + suppress anchor + + + + + + + + + + + removing + + + + + + + + + + + + + + + + + removing + + + + + + + + + + + + + + + + + + + + + + Don't know what gentext to create for xref to: " + + ", (" + + ") + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No bibliography entry: + + found in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + + + + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Endterm points to nonexistent ID: + + + ??? + + + + + + + + + + + + + Link element has no content and no Endterm. + Nothing to show in the link to + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Olink debug: root element of target.database ' + + ' is ' + + '. + + + + + + + + + + + + + + + Error: unresolved olink: + targetdoc/targetptr = ' + + / + + '. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: olink using obsolete attributes + @linkmode, @targetdocent, @localinfo are + not supported. + + + + + ERROR: olink is missing linking attributes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DOCBOOK/xhtml/admon.xsl b/DOCBOOK/xhtml/admon.xsl new file mode 100755 index 0000000..3330f0a --- /dev/null +++ b/DOCBOOK/xhtml/admon.xsl @@ -0,0 +1,142 @@ + + + + + + + + + + 25 + + + + + + + + + + + + + + + + + + note + warning + caution + tip + important + note + + + + + + + + Note + Warning + Caution + Tip + Important + Note + + + + + + + + + +
                  + + + + + + + + + + + + + + + : + + + + + + + + + + + +
                  + + + + [{$alt}] + + + + + + + + + +
                  + +
                  +
                  +
                  + + +
                  + + + + + + + + + + + +

                  + + +

                  +
                  + + +
                  +
                  + + + + + + + +
                  diff --git a/DOCBOOK/xhtml/annotations.xsl b/DOCBOOK/xhtml/annotations.xsl new file mode 100755 index 0000000..6567ff2 --- /dev/null +++ b/DOCBOOK/xhtml/annotations.xsl @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:copy-of select="$title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note + + + namesp. add + + + added namespace before processing + + + + + + + + + + + Note + + + namesp. add + + + added namespace before processing + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/DOCBOOK/xhtml/docbook.css.xml b/DOCBOOK/xhtml/docbook.css.xml new file mode 100755 index 0000000..f1509bf --- /dev/null +++ b/DOCBOOK/xhtml/docbook.css.xml @@ -0,0 +1,110 @@ + + diff --git a/DOCBOOK/xhtml/docbook.xsl b/DOCBOOK/xhtml/docbook.xsl new file mode 100755 index 0000000..1f1b80a --- /dev/null +++ b/DOCBOOK/xhtml/docbook.xsl @@ -0,0 +1,530 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Element + + in namespace ' + + ' encountered + + in + + + , but no template matches. + + + + < + + > + + </ + + > + + + + + + + +rtl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:copy-of select="$title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note + + + namesp. add + + + added namespace before processing + + + + + + + + + + + Note + + + namesp. add + + + added namespace before processing + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/DOCBOOK/xhtml/ebnf.xsl b/DOCBOOK/xhtml/ebnf.xsl new file mode 100755 index 0000000..a4f56a5 --- /dev/null +++ b/DOCBOOK/xhtml/ebnf.xsl @@ -0,0 +1,331 @@ + + + + + + + + + + +$Id: ebnf.xsl 9664 2012-11-07 20:02:17Z bobstayton $ + +Walsh +Norman +19992000 +Norman Walsh + + +HTML EBNF Reference + + +
                  Introduction + +This is technical reference documentation for the DocBook XSL +Stylesheets; it documents (some of) the parameters, templates, and +other elements of the stylesheets. + +This reference describes the templates and parameters relevant +to formatting EBNF markup. + +This is not intended to be user documentation. +It is provided for developers writing customization layers for the +stylesheets, and for anyone who's interested in how it +works. + +Although I am trying to be thorough, this documentation is known +to be incomplete. Don't forget to read the source, too :-) +
                  +
                  +
                  + + + + + + + + + + + + 1 + + + + + + EBNF + + for + + + + + + + + + + + + +
                  + + +
                  + + + + + + + + + + EBNF productions + +
                  +
                  +
                  + + + + + + + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + Error: no ID for productionrecap linkend: + + . + + + + + + Warning: multiple "IDs" for productionrecap linkend: + + . + + + + + + + + + + + + + + + + | +
                  +
                  +
                  + + + + + + + + + + + + + + + production + + + + + + + + + Non-terminals with no content must point to + production elements in the current document. + + + Invalid xpointer for empty nt: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + + + + /*  + +  */ +
                  +
                  + + + + + + + + + constraintdef + + + + + + + + + + + + + + + + : + + + + + + + : + + + + + + + + + +  ] + +
                  +
                  +
                  + + +
                  + + + + +
                  +
                  + + +

                  +
                  + + + +
                  diff --git a/DOCBOOK/xhtml/footnote.xsl b/DOCBOOK/xhtml/footnote.xsl new file mode 100755 index 0000000..ca2928e --- /dev/null +++ b/DOCBOOK/xhtml/footnote.xsl @@ -0,0 +1,346 @@ + + + + + + + + + + + + + + + + #ftn. + + + + + + + + + + + + + + + + + [ + + ] + + + + + + + + + + +ERROR: A footnoteref element has a linkend that points to an element that is not a footnote. +Typically this happens when an id attribute is accidentally applied to the child of a footnote element. +target element: +linkend/id: + + + + + + + + + + + + #ftn. + + + + + + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + + + + + + + + + [ + + ] + + + + + + + + + + + + + ftn. + + + + + + # + + + + + + + + + + + + + + + + + + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + +
                  +
                  + + + footnote-hr + + + + + + + + 100 + + + + + +
                  +
                  + + +
                  +
                  +

                  The following annotations are from this essay. You are seeing + them here because your browser doesn’t support the user-interface + techniques used to make them appear as ‘popups’ on modern browsers.

                  +
                  + + +
                  +
                  +
                  + + + + + + + + + + + + ftn. + + + + + + + +
                  + + +
                  +
                  + + +
                  + + + + +
                  +
                  + + + + Warning: footnote number may not be generated + correctly; + + unexpected as first child of footnote. + +
                  + + + +
                  +
                  +
                  +
                  + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml/formal.xsl b/DOCBOOK/xhtml/formal.xsl new file mode 100755 index 0000000..36a0aee --- /dev/null +++ b/DOCBOOK/xhtml/formal.xsl @@ -0,0 +1,496 @@ + + + + + + + +1 + + + + + + + + + + +
                  + + + + + + + + + + +
                  + +
                  + + + + + +

                  + + +

                  +

                  + + + + + + + +
                  +
                  + +
                  +
                  +
                  + + + + + + + + + -float + + + + + + + + + +
                  + + + + + + + + + + + + + +
                  + +
                  +
                  + +

                  + + + +

                  +
                  +
                  +
                  + + + + + + + +
                  + +

                  + + + + + + + + +

                  +

                  +
                  + + + + + + + + + -float + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + before + + + + + + + + + +
                  + + + + + + + + + + + + +
                  + +
                  + + + +

                  + + +

                  + +

                  + +
                  + + + + + +
                  +
                  + +
                  +
                  +
                  + + + + + + + + + -float + + + + + + + + + +
                  + + + + Broken table: tr descendent of CALS Table. + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + Broken table: row descendent of HTML table. + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + float: + + ; + + + +
                  +
                  + +
                  diff --git a/DOCBOOK/xhtml/glossary.xsl b/DOCBOOK/xhtml/glossary.xsl new file mode 100755 index 0000000..2f51074 --- /dev/null +++ b/DOCBOOK/xhtml/glossary.xsl @@ -0,0 +1,602 @@ + + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + +
                  +
                  + + + +
                  + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + +
                  + + + + + + +
                  + + + + + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + + +
                  + + + + + + +
                  + + + + + + + + + + +
                  +
                  +
                  + + +

                  + + +

                  +
                  + + + + + + + + +
                  + + + + 0 + 1 + + + + + + + 0 + 1 + + + + + + + + ( + + ) + + + + + +
                  +
                  + +
                  + + + + 0 + 1 + + + + + + + 0 + 1 + + + + + + + + ( + + ) + +
                  +
                  + +
                  + + + + 0 + 1 + + + + + + + 0 + 1 + + + + + +
                  +
                  +
                  + + +
                  + + + + + + + + + , + + + + + , + + + + + , + + + + + + + + + + + +
                  +

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glosssee @otherterm reference not found: + + + + + + + + + + + + + + +

                  +
                  +
                  + + +
                  + + + + + +

                  + + + + + + + + + + + + + +

                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glossseealso @otherterm reference not found: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + + + + + + + + Warning: processing automatic glossary + without a glossary.collection file. + + + + + + Warning: processing automatic glossary but unable to + open glossary.collection file ' + + ' + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + + + +
                  +
                  + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + +
                  + + + + + + +
                  + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + + +
                  diff --git a/DOCBOOK/xhtml/graphics.xsl b/DOCBOOK/xhtml/graphics.xsl new file mode 100755 index 0000000..f87b411 --- /dev/null +++ b/DOCBOOK/xhtml/graphics.xsl @@ -0,0 +1,1514 @@ + + + + + + + + + + + + + + + + 1 + + + + + + 1 + + + + + +
                  + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + + 1 + 0 + + + + + + 1.0 + 1.0 + + + + 1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + middle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: imagemaps not supported + on scaled images + + + + 0 + + + + + + + + + + + + + + + + + + + + middle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + manufactured viewport for HTML img + + + cellpadding: 0; cellspacing: 0; + + + + + + + + + + + + + height: + + px + + + + + + + + + + + +
                  + + + + + background-color: + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + calspair + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + , + + , + + + + + + + + + + + + Warning: only calspair or + otherunits='imagemap' supported + in imageobjectco + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + middle + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + +
                  + + + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml/highlight.xsl b/DOCBOOK/xhtml/highlight.xsl new file mode 100755 index 0000000..0b4c30d --- /dev/null +++ b/DOCBOOK/xhtml/highlight.xsl @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml/html-rtf.xsl b/DOCBOOK/xhtml/html-rtf.xsl new file mode 100755 index 0000000..e079a73 --- /dev/null +++ b/DOCBOOK/xhtml/html-rtf.xsl @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + +
                  + + + + + + + + + + +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + +
                  + +
                  + + + + + + + + + + +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml/html.xsl b/DOCBOOK/xhtml/html.xsl new file mode 100755 index 0000000..746b5ed --- /dev/null +++ b/DOCBOOK/xhtml/html.xsl @@ -0,0 +1,686 @@ + + + + + + + + + + + + left + right + left + + + + + + right + left + right + + + + + + ltr + rtl + ltr + + + + + +div + +0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + # + + + + + + + + + + + + + + + + + + + bullet + + + + + + + + + bullet + + + © + + + ® + (SM) +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID recommended on + + + : + + + + ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: no root element for CSS source file' + + '. + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: missing CSS input filename. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml/htmltbl.xsl b/DOCBOOK/xhtml/htmltbl.xsl new file mode 100755 index 0000000..a7b034c --- /dev/null +++ b/DOCBOOK/xhtml/htmltbl.xsl @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float: + + left + right + + + + + + + + + + + + + none + none + + ; + + + + diff --git a/DOCBOOK/xhtml/index.xsl b/DOCBOOK/xhtml/index.xsl new file mode 100755 index 0000000..26aba83 --- /dev/null +++ b/DOCBOOK/xhtml/index.xsl @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + +
                  + +
                  +
                  +
                  +
                  + + + + + + + + + + +
                  +
                  +
                  + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + +
                  + + + + +
                  + +
                  +
                  +
                  + + +

                  + + +

                  +
                  + + + + + + + + + + + + + + + + + + + + + + +
                  + +
                  +
                  + + + +
                  +
                  + + + + + + + + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + +
                  +
                  +
                  + + +
                  + ( + + + + + + ) +
                  +
                  + + +
                  + ( + + + + + + ) +
                  +
                  + +
                  diff --git a/DOCBOOK/xhtml/info.xsl b/DOCBOOK/xhtml/info.xsl new file mode 100755 index 0000000..875d5ba --- /dev/null +++ b/DOCBOOK/xhtml/info.xsl @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml/inline.xsl b/DOCBOOK/xhtml/inline.xsl new file mode 100755 index 0000000..9215cf5 --- /dev/null +++ b/DOCBOOK/xhtml/inline.xsl @@ -0,0 +1,1494 @@ + + + + + + + + + + + + + + + + + + + + + + _blank + _top + + + + + + + + + + + + + + 1 + 0 + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XLink to nonexistent id: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + span + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + , + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + abbr + + + + + + acronym + + + + + + + + + + + + + + + + + + + + + + + + + + http://example.com/cgi-bin/man.cgi? + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glossary.collection specified, but there are + + automatic glossaries + + + + + + + + + + + + + + + + + + + + + + + + There's no entry for + + in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error: no glossentry for glossterm: + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + element + + + + + + + + + + + + + + + + </ + + > + + + & + + ; + + + &# + + ; + + + % + + ; + + + <? + + > + + + <? + + ?> + + + < + + > + + + < + + /> + + + <!-- + + --> + + + + + + + + + + + + + + + + + + + + + + < + + + + + + mailto: + + + + + + > + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + + + + + + + + + + + + + + + + + + ] + + + [ + + ] + + + + + + + + + + + + + [ + + + + + + + + + + + + ] + + + [ + + ] + + + + + + + + + + + + +

                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml/keywords.xsl b/DOCBOOK/xhtml/keywords.xsl new file mode 100755 index 0000000..c79e1a8 --- /dev/null +++ b/DOCBOOK/xhtml/keywords.xsl @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + , + + + + + diff --git a/DOCBOOK/xhtml/lists.xsl b/DOCBOOK/xhtml/lists.xsl new file mode 100755 index 0000000..e65d252 --- /dev/null +++ b/DOCBOOK/xhtml/lists.xsl @@ -0,0 +1,1227 @@ + + + + + + + + + + + + + + + compact + + + + + + + + + list-style-type: + + ; + + +
                  + + + + + + + + + + +
                    + + + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + circle + disc + square + + + + + + +
                • + + + + + list-style-type: + + + + + + + + + + + +
                  + +
                  +
                  + + + +
                  +
                • +
                  + + + + + + + compact + + + + + + + + + + + + + + 1 + a + i + A + I + + + + Unexpected numeration: + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + +
                    + + + + + + + + + + + + + + +
                  +
                  +
                  +
                  +
                  + + + + + + +
                • + + + + + + + + + + + + + + + +
                  + +
                  +
                  + + + +
                  +
                • +
                  + + + + + + + + + + + + + + +
                  + +
                  +
                  + + + +
                  + + +
                  + + + + + + + + + + compact + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + +
                  + + + + +
                  +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + + + + + + + + + + + + + + +

                  +
                  +
                  +
                  + + +
                  + + + +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + +

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + + + + + +
                  + + + + + + + + + + + + + + + + + + + +
                  +
                  +
                  +
                  +
                  +
                  + + + + + + + + + +
                  + +
                  +
                  + + + +
                  +
                  + + + + + + + + + Simple list + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + Simple list + + + + + + + + + + 1 + + + +
                  +
                  + + + + + + Simple list + + + + + + + + + + 1 + + + +
                  +
                  + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + + 1 + + + + + + + + +   + + + + + + + + + + + + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + + 1 + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + +
                  + + + + + 0 + 1 + + + + + + + 0 + 1 + + + + + + + + + + + + +
                    + + +
                  +
                  + +
                    + + + + + +
                  +
                  +
                  + + + + +
                  +
                  + + + + + + + + + + + + +
                    + + + +
                  +
                  + + +
                • + + + + +
                • +
                  + + + +
                    + + + +
                  +
                  + + +

                  + + + + +

                  +
                  + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + +
                  +
                  + + +
                  + + + + + + + +
                  +
                  + + + + + + + + + +
                  + + + + +
                  +
                  + + + + + + + + +
                  + + + + + + : + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + Callout list + + +
                  +
                  + +
                  + + +
                  +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + +

                  + + + + +

                  + + + + + +
                  + +
                  + + + + + +
                  +
                  +
                  +
                  +
                  + + + + + + + + + +

                  + + + + + + + + + + + + + + + + +

                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml/maketoc.xsl b/DOCBOOK/xhtml/maketoc.xsl new file mode 100755 index 0000000..f4a41d4 --- /dev/null +++ b/DOCBOOK/xhtml/maketoc.xsl @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + filename=" + + " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml/manifest.xsl b/DOCBOOK/xhtml/manifest.xsl new file mode 100755 index 0000000..5d87691 --- /dev/null +++ b/DOCBOOK/xhtml/manifest.xsl @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml/math.xsl b/DOCBOOK/xhtml/math.xsl new file mode 100755 index 0000000..0748549 --- /dev/null +++ b/DOCBOOK/xhtml/math.xsl @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unsupported TeX math notation: + + + + + + + + + + + + + \nopagenumbers + + + + + \bye + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $ + + + + $ + + + \vfill\eject + + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $$ + + + + $$ + + + \vfill\eject + + + + + + + + + + \documentclass{article} + + \pagestyle{empty} + + \begin{document} + + + + + \end{document} + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $ + + + + $ + + + \newpage + + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $$ + + + + $$ + + + \newpage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + diff --git a/DOCBOOK/xhtml/oldchunker.xsl b/DOCBOOK/xhtml/oldchunker.xsl new file mode 100755 index 0000000..36c7d72 --- /dev/null +++ b/DOCBOOK/xhtml/oldchunker.xsl @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + +Encoding used in generated HTML pages + +This encoding is used in files generated by chunking stylesheet. Currently +only Saxon is able to change output encoding. + + + + + + + + + +Saxon character representation used in generated HTML pages + +This character representation is used in files generated by chunking stylesheet. If +you want to suppress entity references for characters with direct representation +in default.encoding, set this parameter to value native. + + + + + + + + + + + + + + + + + + + + + + + + Chunking isn't supported with + + + + + + + + + + + + + + + Writing + + + for + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can't make chunks with + + 's processor. + + + + + + + + + + + + + + + + Writing + + + for + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can't make chunks with + + 's processor. + + + + + + diff --git a/DOCBOOK/xhtml/onechunk.xsl b/DOCBOOK/xhtml/onechunk.xsl new file mode 100755 index 0000000..c036af5 --- /dev/null +++ b/DOCBOOK/xhtml/onechunk.xsl @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + +1 + + + + # + + + + + + diff --git a/DOCBOOK/xhtml/param.xsl b/DOCBOOK/xhtml/param.xsl new file mode 100755 index 0000000..e460803 --- /dev/null +++ b/DOCBOOK/xhtml/param.xsl @@ -0,0 +1,446 @@ + + + + + + + + + + +.png + +images/ + + + + + + +/* ====================================================================== + Annotations +*/ + +div.annotation-list { visibility: hidden; + } + +div.annotation-nocss { position: absolute; + visibility: hidden; + } + +div.annotation-popup { position: absolute; + z-index: 4; + visibility: hidden; + padding: 0px; + margin: 2px; + border-style: solid; + border-width: 1px; + width: 200px; + background-color: white; + } + +div.annotation-title { padding: 1px; + font-weight: bold; + border-bottom-style: solid; + border-bottom-width: 1px; + color: white; + background-color: black; + } + +div.annotation-body { padding: 2px; + } + +div.annotation-body p { margin-top: 0px; + padding-top: 0px; + } + +div.annotation-close { position: absolute; + top: 2px; + right: 2px; + } + + +http://docbook.sourceforge.net/release/images/annot-close.png +http://docbook.sourceforge.net/release/images/annot-open.png + + +http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js + + +A + + +. + +. +http://docbook.sourceforge.net/release/bibliography/bibliography.xml + + +normal + + +60 +.png + + +15 + +images/callouts/ + + +10 +10102 + + + + + + + + + + + + +no + +1 + + + + + + left + before + + + +all + + +docbook.css.xml +no +images/draft.png + +::= + + + + +#F5DCB3 + + +com.example.help +DocBook Online Help Sample +Example provider +1 + + + + + + 1 + 0 + + + + +1 + + + +figure before +example before +equation before +table before +procedure before +task before + + +kr + + + + + + + + + + + +appendix toc,title +article/appendix nop +article toc,title +book toc,title,figure,table,example,equation +chapter toc,title +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title + + + + +no + + + + + + + + + + + + + +.html + + +copyright + + + +text/javascript + +text/css +alias.h + + + + + + + +User1 + + +User2 + + + + + + + + + +htmlhelp.chm + + +iso-8859-1 + + + + + +toc.hhc +5 + + +index.hhk +htmlhelp.hhp + +Main + +context.h + + + + + + + + + + + + + +basic + + + + + + + +no + +no +iso-8859-1 + + +en + + + + +5 + + +3 + + + + + + + HTML.manifest + + + + ++ +.gif + +images/ +1 + + +6in + + +no + + + replace + +0 + +I + +90 +10 + + + + + + + + + + + + + + + + +; + + + + + +. +number + + + + + + + + + + I +index + +. +.!?: + +8 + + + + + 0 + #E0E0E0 + + + + + + +0 + + + + + +solid +0.5pt +a + + + +solid +0.5pt + + olinkdb.xml +target.db + +tex-math-equations.tex + + + +dl +8 +2 +_top + + + + + + + + +0 +, +0 +docs +../common/ +index.html +1 +en +index.html + + + + writing-mode + + + + + + + + +: + + + + diff --git a/DOCBOOK/xhtml/pi.xsl b/DOCBOOK/xhtml/pi.xsl new file mode 100755 index 0000000..73715a4 --- /dev/null +++ b/DOCBOOK/xhtml/pi.xsl @@ -0,0 +1,1237 @@ + + + + + + + +HTML Processing Instruction Reference + + $Id: pi.xsl 9022 2011-07-14 19:21:36Z bobstayton $ + + + + Introduction + This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for HTML output. + + You add these PIs at particular points in a document to + cause specific “exceptions” to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + + Sets background color for an image + + Use the dbhtml background-color PI before or + after an image (graphic, inlinegraphic, + imagedata, or videodata element) as a + sibling to the element, to set a background color for the + image. + + + dbhtml background-color="color" + + + + background-color="color" + + An HTML color value + + + + + + Background color + + + + + + + + + + + + Sets background color on a CALS table row or table cell + + Use the dbhtml bgcolor PI as child of a CALS table row + or cell to set a background color for that table row or cell. + + + dbhtml bgcolor="color" + + + + bgcolor="color" + + An HTML color value + + + + + + Cell background color + + + + + + + + + + + + Specifies cellpadding in CALS table or qandaset output + + Use the dbhtml cellpadding PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellpadding attribute in the + output HTML table. + + + dbhtml cellpadding="number" + + + + cellpadding="number" + + Specifies the cellpadding + + + + + + html.cellpadding + + + Cell spacing and cell padding, + Q and A formatting + + + + + + + + + + + + Specifies cellspacing in CALS table or qandaset output + + Use the dbhtml cellspacing PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellspacing attribute in the + output HTML table. + + + dbhtml cellspacing="number" + + + + cellspacing="number" + + Specifies the cellspacing + + + + + + html.cellspacing + + + Cell spacing and cell padding, + Q and A formatting + + + + + + + + + + + + Set value of the class attribute for a CALS table row + + Use the dbhtml class PI as a child of a + row to specify a class + attribute and value in the HTML output for that row. + + + dbhtml class="name" + + + + class="name" + + Specifies the class name + + + + + + Table styles in HTML output + + + + + + + + + + + + Specifies a directory name in which to write files + + When chunking output, use the dbhtml dir PI + as a child of a chunk source to cause the output of that + chunk to be written to the specified directory; also, use it + as a child of a mediaobject to specify a + directory into which any long-description files for that + mediaobject will be written. + +The output directory specification is inherited by all +chunks of the descendants of the element. If descendants need +to go to a different directory, then add another +dbhtml dir processing +instruction as a child of the source element +for that chunk, and specify the path relative to the +ancestor path. + +For example, to put most chunk files into +shared +but one chapter into +exception +at the same level, use: + +<book> + <?dbhtml dir="shared"?> + ... + <chapter> + <?dbhtml dir="../exception"?> + </chapter> +</book> + + + + + + dbhtml dir="path" + + + + dir="path" + + Specifies the pathname for the directory + + + + + + base.dir + + + dbhtml dir processing instruction + + + + + + + + + + + + Specifies a filename for a chunk + +When chunking output, use the dbhtml filename + PI as a child of a chunk source to specify a filename for + the output file for that chunk. Include the filename suffix. + +You cannot include a directory path in the filename value, +or your links may not work. Add a +dbhtml dir processing instruction +to specify the output directory. You can also combine the two +specifications in one processing instruction: +dbhtml dir="mydir" filename="myfile.html". + + + + dbhtml filename="filename" + + + + filename="path" + + Specifies the filename for the file + + + + + + use.id.as.filename + + + dbhtml filenames + + + + + + + + + + + + Specifies presentation style for a funcsynopsis + + Use the dbhtml funcsynopsis-style PI as a child of + a funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + + dbhtml funcsynopsis-style="kr"|"ansi" + + + + funcsynopsis-style="kr" + + Displays funcprototype output in K&R style + + + funcsynopsis-style="ansi" + + Displays funcprototype output in ANSI style + + + + + + funcsynopsis.style + + + + + + + + + + + + Specifies a path to the location of an image file + + Use the dbhtml img.src.path PI before or + after an image (graphic, + inlinegraphic, imagedata, or + videodata element) as a sibling to the element, + to specify a path to the location of the image; in HTML + output, the value specified for the + img.src.path attribute is prepended to the + filename. + + + dbhtml img.src.path="path" + + + + img.src.path="path" + + Specifies the pathname to prepend to the name of the image file + + + + + + img.src.path + + + Using fileref + + + + + + + + + + + + Specifies the label width for a qandaset + + Use the dbhtml label-width PI as a child of a + qandaset to specify the width of labels. + + + dbhtml label-width="width" + + + + label-width="width" + + Specifies the label width (including units) + + + + + + Q and A formatting + + + + + + + + + + + + Specifies interval for line numbers in verbatims + + Use the dbhtml linenumbering.everyNth PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the interval at which lines are numbered. + + + dbhtml linenumbering.everyNth="N" + + + + linenumbering.everyNth="N" + + Specifies numbering interval; a number is output + before every Nth line + + + + + + linenumbering.everyNth + + + Line numbering + + + + + + + + + + + + Specifies separator text for line numbers in verbatims + + Use the dbhtml linenumbering.separator PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the separator text output between the line numbers and content. + + + dbhtml linenumbering.separator="text" + + + + linenumbering.separator="text" + + Specifies the text (zero or more characters) + + + + + + linenumbering.separator + + + Line numbering + + + + + + + + + + + + Specifies width for line numbers in verbatims + + Use the dbhtml linenumbering.width PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the width set aside for line numbers. + + + dbhtml linenumbering.width="width" + + + + linenumbering.width="width" + + Specifies the width (inluding units) + + + + + + linenumbering.width + + + Line numbering + + + + + + + + + + + + Specifies presentation style for a variablelist or + segmentedlist + + Use the dbhtml list-presentation PI as a child of + a variablelist or segmentedlist to + control the presentation style for the list (to cause it, for + example, to be displayed as a table). + + + dbhtml list-presentation="list"|"table" + + + + list-presentation="list" + + Displays the list as a list + + + list-presentation="table" + + Displays the list as a table + + + + + + + + variablelist.as.table + + + segmentedlist.as.table + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the width of a variablelist or simplelist + + Use the dbhtml list-width PI as a child of a + variablelist or a simplelist presented + as a table, to specify the output width. + + + dbhtml list-width="width" + + + + list-width="width" + + Specifies the output width (including units) + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the height for a CALS table row + + Use the dbhtml row-height PI as a child of a + row to specify the height of the row. + + + dbhtml row-height="height" + + + + row-height="height" + + Specifies the row height (including units) + + + + + + Row height + + + + + + + + + + + + (obsolete) Sets the starting number on an ordered list + + This PI is obsolete. The intent of + this PI was to provide a means for setting a specific starting + number for an ordered list. Instead of this PI, set a value + for the override attribute on the first + listitem in the list; that will have the same + effect as what this PI was intended for. + + + dbhtml start="character" + + + + start="character" + + Specifies the character to use as the starting + number; use 0-9, a-z, A-Z, or lowercase or uppercase + Roman numerals + + + + + + List starting number + + + + + + + + + + + + Do not chunk any descendants of this element. + + When generating chunked HTML output, adding this PI as the child of an element that contains elements that would normally be generated on separate pages if generating chunked output causes chunking to stop at this point. No descendants of the current element will be split into new HTML pages: +<section> +<title>Configuring pencil</title> +<?dbhtml stop-chunking?> + +... + +</section> + + + + dbhtml stop-chunking + + + Chunking into multiple HTML files + + + + + + Specifies summary for CALS table, variablelist, segmentedlist, or qandaset output + + Use the dbhtml table-summary PI as a child of + a CALS table, variablelist, + segmentedlist, or qandaset to specify + the text for the HTML summary attribute + in the output HTML table. + + + dbhtml table-summary="text" + + + + table-summary="text" + + Specifies the summary text (zero or more characters) + + + + + + Variable list formatting in HTML, + Table summary text + + + + + + + + + + + + Specifies the width for a CALS table + + Use the dbhtml table-width PI as a child of a + CALS table to specify the width of the table in + output. + + + dbhtml table-width="width" + + + + table-width="width" + + Specifies the table width (including units or as a percentage) + + + + + + default.table.width + + + Table width + + + + + + + + + + + + Sets character formatting for terms in a variablelist + + Use the dbhtml term-presentation PI as a child + of a variablelist to set character formatting for + the term output of the list. + + + dbhtml term-presentation="bold"|"italic"|"bold-italic" + + + + term-presentation="bold" + + Specifies that terms are displayed in bold + + + term-presentation="italic" + + Specifies that terms are displayed in italic + + + term-presentation="bold-italic" + + Specifies that terms are displayed in bold-italic + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies separator text among terms in a varlistentry + + Use the dbhtml term-separator PI as a child + of a variablelist to specify the separator text + among term instances. + + + dbhtml term-separator="text" + + + + term-separator="text" + + Specifies the text (zero or more characters) + + + + + + variablelist.term.separator + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the term width for a variablelist + + Use the dbhtml term-width PI as a child of a + variablelist to specify the width for + term output. + + + dbhtml term-width="width" + + + + term-width="width" + + Specifies the term width (including units) + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies whether a TOC should be generated for a qandaset + + Use the dbhtml toc PI as a child of a + qandaset to specify whether a table of contents + (TOC) is generated for the qandaset. + + + dbhtml toc="0"|"1" + + + + toc="0" + + If zero, no TOC is generated + + + toc="1" + + If 1 (or any non-zero value), + a TOC is generated + + + + + + Q and A list of questions, + Q and A formatting + + + + + + + + + + + + Generates a hyperlinked list of commands + + Use the dbcmdlist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + cmdsynopsis instances; a hyperlinked navigational + “command list” will be generated at the top of output for that + element, enabling users to quickly jump + to each command synopsis. + + + dbcmdlist + + + [No parameters] + + + + + + No cmdsynopsis elements matched dbcmdlist PI, perhaps it's nested too deep? + + +
                  + + + +
                  +
                  + + + Generates a hyperlinked list of functions + + Use the dbfunclist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + funcsynopsis instances; a hyperlinked + navigational “function list” will be generated at the top of + output for that element, enabling users to quickly + jump to to each function synopsis. + + + dbfunclist + + + [No parameters] + + + + + + No funcsynopsis elements matched dbfunclist PI, perhaps it's nested too deep? + + +
                  + + + +
                  +
                  + + + Copies an external well-formed HTML/XML file into current doc + + Use the dbhtml-include href PI anywhere in a + document to cause the contents of the file referenced by the + href pseudo-attribute to be copied/inserted “as + is” into your HTML output at the point in document order + where the PI occurs in the source. + + The referenced file may contain plain text (as long as + it is “wrapped” in an html element — see the + note below) or markup in any arbitrary vocabulary, + including HTML — but it must conform to XML + well-formedness constraints (because the feature in XSLT + 1.0 for opening external files, the + document() function, can only handle + files that meet XML well-formedness constraints). + Among other things, XML well-formedness constraints + require a document to have a single root + element. So if the content you want to + include is plain text or is markup that does + not have a single root element, + wrap the content in an + html element. The stylesheets will + strip out that surrounding html “wrapper” when + they find it, leaving just the content you want to + insert. + + + + dbhtml-include href="URI" + + + + href="URI" + + Specifies the URI for the file to include; the URI + can be, for example, a remote http: + URI, or a local filesystem file: + URI + + + + + + textinsert.extension + + + Inserting external HTML code, + External code files + + + + + + + href + + + + + + + + + + + + + + + + + + + + ERROR: dbhtml-include processing instruction + href has no content. + + + + + + + ERROR: dbhtml-include processing instruction has + missing or empty href value. + + + + + + + + Sets topic name and topic id for context-sensitive HTML Help + + Use the dbhh PI as a child of components + that should be used as targets for context-sensitive help requests. + + + dbhh topicname="name" topicid="id" + + + + topicname="name" + + Specifies a unique string constant that identifies a help topic + + + topicid="id" + + Specifies a unique integer value for the topicname string + + + + + + Context-sensitive help + + + + + + + + + + filename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + # + + + + + + + + + + + + + + + + + + +
                  + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + + +
                  + + + # + + + + + + + + + + + + + + + + + + +
                  + + + + + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + / + + + + +
                  diff --git a/DOCBOOK/xhtml/profile-chunk-code.xsl b/DOCBOOK/xhtml/profile-chunk-code.xsl new file mode 100755 index 0000000..cc794b5 --- /dev/null +++ b/DOCBOOK/xhtml/profile-chunk-code.xsl @@ -0,0 +1,640 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bk + + + + + + + + + + + + + + + ar + + + + + + + + + + + + + + + pr + + + + + + + + + + + + + + + ch + + + + + + + + + + + + + + + ap + + + + + + + + + + + + + + + + + + + pt + + + + + + + + + + + + + + + + + + + rn + + + + + + + + + + + + + + + + + + + + + + + + re + + + + + + + + + + + + + + + + + + + co + + + + + + + + + + + s + + + + + + + + + + + + + + + + + + + bi + + + + + + + + + + + + + + + + + + + go + + + + + + + + + + + + + + + + + + + ix + + + + + + + + si + + + + + + + + + + + + + + + + + + + to + + + + + + + + chunk-filename-error- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adding DocBook namespace to version 4 DocBook document + + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml/profile-chunk.xsl b/DOCBOOK/xhtml/profile-chunk.xsl new file mode 100755 index 0000000..b8c4651 --- /dev/null +++ b/DOCBOOK/xhtml/profile-chunk.xsl @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml/profile-docbook.xsl b/DOCBOOK/xhtml/profile-docbook.xsl new file mode 100755 index 0000000..ea8076b --- /dev/null +++ b/DOCBOOK/xhtml/profile-docbook.xsl @@ -0,0 +1,502 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Element + + in namespace ' + + ' encountered + + in + + + , but no template matches. + + + + < + + > + + </ + + > + + + + + + + +rtl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:copy-of select="$title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adding DocBook namespace to version 4 DocBook document + + + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/DOCBOOK/xhtml/profile-onechunk.xsl b/DOCBOOK/xhtml/profile-onechunk.xsl new file mode 100755 index 0000000..b4c96df --- /dev/null +++ b/DOCBOOK/xhtml/profile-onechunk.xsl @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + +1 + + + + # + + + + + + diff --git a/DOCBOOK/xhtml/qandaset.xsl b/DOCBOOK/xhtml/qandaset.xsl new file mode 100755 index 0000000..676cbcf --- /dev/null +++ b/DOCBOOK/xhtml/qandaset.xsl @@ -0,0 +1,440 @@ + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + +

                  +
                  + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + +

                  +
                  + + + + + + + + + + +
                  + + + + + + + + + + + + + + +
                  + + +
                  +
                  + + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + +
                  + + + + +
                  + + + +
                  + +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + width: 100%; + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1% + + + + + + + + + +
                  +
                  + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml/refentry.xsl b/DOCBOOK/xhtml/refentry.xsl new file mode 100755 index 0000000..c29d4f9 --- /dev/null +++ b/DOCBOOK/xhtml/refentry.xsl @@ -0,0 +1,307 @@ + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + +

                  +
                  + + + + +
                  + + + + + + + +
                  +
                  +
                  +
                  + + + + + + +
                  +
                  + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + +
                  + + + + + + + + + + + +

                  + + + +

                  +
                  + +

                  + + + + + + + + +

                  +
                  +
                  + +

                  + +

                  +
                  +
                  + + + + + + , + + + + + + + + + em-dash + + + + + + + + + + + + + + + + : + + + + + + + +
                  + + + + + +

                  + + + + + + + + + + +

                  + +
                  +
                  + + + + + + + + + + + +
                  + + + + + + + + + + + + +
                  +
                  + + + + + + 0 + 1 + + + + 6 + + + + + + + + + + + + +

                  + +

                  +
                  + + + +

                  + +

                  +
                  + + + +

                  + +

                  +
                  + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml/sections.xsl b/DOCBOOK/xhtml/sections.xsl new file mode 100755 index 0000000..b002405 --- /dev/null +++ b/DOCBOOK/xhtml/sections.xsl @@ -0,0 +1,564 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + 4 + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + + + + + + + + + + clear: both + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + 1 + + + + + + + 2 + 3 + 4 + 5 + 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOCBOOK/xhtml/synop.xsl b/DOCBOOK/xhtml/synop.xsl new file mode 100755 index 0000000..58a81f5 --- /dev/null +++ b/DOCBOOK/xhtml/synop.xsl @@ -0,0 +1,1616 @@ + + + + + + + + + + + + + + +
                  + +

                  + + + + + + + + + + + + + + + +

                  +
                  +
                  + + +
                  + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + + + + ( + + ) + +   + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +    
                  +    
                  +    
                  +  
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                  + + +
                  + +
                  +

                  +
                  + + + + + + + ( + + + + + + + + + + + + + + + + ) + ; + + + + ... + ) + ; + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + +
                  + + + + ; +
                  + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + Function synopsis + + + cellspacing: 0; cellpadding: 0; + + + + + + + + + + + +
                  + +
                   
                  + +
                  + +
                  +
                  +
                   
                  +
                  + + + + + + + ( + + + + + + + + + + + + + + + + + ) + ; + +   + + + + + ... + ) + ; + +   + + + + + + + + , + + + ) + ; + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + ; + + + + + + +

                  + +

                  +
                  + + + + + + + ( + + + + + + + + + + + + + + + + void) + ; + + + + ... + ) + ; + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + Function synopsis + + + cellspacing: 0; cellpadding: 0; + + + + + + + + + + + +
                  + +
                   
                  +
                   
                  +
                  + + + + + + + ( + + + + + + + + + + + + + + + + + void) + ; + +   + + + + + ... + ) + ; + +   + + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + +java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unrecognized language on + + : + + + + + + + + + + + +
                  +
                  +
                  + + + + + +
                  +    
                  +    
                  +    
                  +    
                  +       extends
                  +      
                  +      
                  +        
                  +      +
                  +
                  + + implements + + +
                  +      +
                  +
                  + + throws + + +  { +
                  + + } +
                  +
                  + + + + + + + + + , + + + + + + + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + + + +    + + + ; + + + + + + + + + +   + + + + + + + + +   + + + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + 0 + + , +
                  + + +   + + + +
                  + + + + + +
                  + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + + ( + + + + ) + +
                  +     throws  + +
                  + + + + + ; +
                  + +
                  + + + + +
                  +    
                  +    
                  +    
                  +    
                  +      : 
                  +      
                  +      
                  +        
                  +      +
                  +
                  + + implements + + +
                  +      +
                  +
                  + + throws + + +  { +
                  + + } +
                  +
                  + + + + + + + + , + + + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + + + +    + + + ; + + + + + + + + + +   + + + + + + + + +   + + + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + ( + + ) + +
                  +     throws  + +
                  + + + + + ; +
                  + +
                  + + + + +
                  +    
                  +    
                  +    interface 
                  +    
                  +    
                  +      : 
                  +      
                  +      
                  +        
                  +      +
                  +
                  + + implements + + +
                  +      +
                  +
                  + + throws + + +  { +
                  + + } +
                  +
                  + + + + + + + + , + + + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + + + +    + + + ; + + + + + + + + + +   + + + + + + + + +   + + + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + ( + + ) + +
                  +     raises( + + ) +
                  + + + + + ; +
                  + +
                  + + + + +
                  +    
                  +    
                  +    package 
                  +    
                  +    ;
                  +    
                  + + + @ISA = ( + + ); +
                  +
                  + + +
                  +
                  + + + + + + + + , + + + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + , + + + + + + + + + + + + + +    + + + ; + + + + + + + + + +   + + + + + + + + +   + + + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + sub + + + { ... }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml/table.xsl b/DOCBOOK/xhtml/table.xsl new file mode 100755 index 0000000..aa7d4cd --- /dev/null +++ b/DOCBOOK/xhtml/table.xsl @@ -0,0 +1,1178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + border- + + : + + + + + + ; + + + + + border- + + -width: + + ; + + + + border- + + -style: + + ; + + + + border- + + -color: + + ; + + + + + + + + + + + Error: CALS tables must specify the number of columns. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + border: none; + + + + + border-collapse: collapse; + + + + + + + 0 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + + + + + + + + + + + + + + + + + No convertLength function available. + + + + + + + + + + + + + + + + + + + + + + + + + + No adjustColumnWidths function available. + + + + + + + + + + + + + + + + + + + + +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: overlapped row contains content! + + + This row intentionally left blank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + th + th + + th + + td + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + : + + + + + + + + 0: + + + + + + + + + + + + + + + 0 + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml/task.xsl b/DOCBOOK/xhtml/task.xsl new file mode 100755 index 0000000..77f1278 --- /dev/null +++ b/DOCBOOK/xhtml/task.xsl @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + before + + + + + + + + +
                  + + + + + + + + + + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + +
                  diff --git a/DOCBOOK/xhtml/titlepage.templates.xml b/DOCBOOK/xhtml/titlepage.templates.xml new file mode 100755 index 0000000..6fbe8fc --- /dev/null +++ b/DOCBOOK/xhtml/titlepage.templates.xml @@ -0,0 +1,739 @@ + + + + + + + + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <hr/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="set" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <hr/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="book" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <hr/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="part" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="division.title" + param:node="ancestor-or-self::part[1]"/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="partintro" t:wrapper="div"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="reference" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <hr/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refentry" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> +<!-- uncomment this if you want refentry titlepages + <title t:force="1" + t:named-template="refentry.title" + param:node="ancestor-or-self::refentry[1]"/> +--> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator/> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="dedication" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::dedication[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="acknowledgements" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::acknowledgements[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="preface" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="chapter" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="topic" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="appendix" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="section" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect1" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect2" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect3" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect4" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect5" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="simplesect" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="bibliography" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::bibliography[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="glossary" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::glossary[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="index" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::index[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="setindex" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::setindex[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> +<t:titlepage t:element="sidebar" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:named-template="formal.object.heading" + param:object="ancestor-or-self::sidebar[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +</t:templates> diff --git a/DOCBOOK/xhtml/titlepage.templates.xsl b/DOCBOOK/xhtml/titlepage.templates.xsl new file mode 100755 index 0000000..669a4ac --- /dev/null +++ b/DOCBOOK/xhtml/titlepage.templates.xsl @@ -0,0 +1,4005 @@ +<?xml version="1.0" encoding="ASCII"?> +<!--This file was created automatically by html2xhtml--> +<!--from the HTML stylesheets.--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" +xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl d"> + +<!-- This stylesheet was created by template/titlepage.xsl--> + +<xsl:template name="article.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:articleinfo/d:title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:title"/> + </xsl:when> + <xsl:when test="d:artheader/d:title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:articleinfo/d:subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:artheader/d:subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:revision"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:revision"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:articleinfo/d:abstract"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:artheader/d:abstract"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="article.titlepage.verso"> +</xsl:template> + +<xsl:template name="article.titlepage.separator"><hr/> +</xsl:template> + +<xsl:template name="article.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="article.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="article.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="article.titlepage.before.recto"/> + <xsl:call-template name="article.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="article.titlepage.before.verso"/> + <xsl:call-template name="article.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="article.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="set.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:setinfo/d:title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:setinfo/d:subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:corpauthor"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:authorgroup"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:author"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:othercredit"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:releaseinfo"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:copyright"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:legalnotice"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:pubdate"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:revision"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:revhistory"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:setinfo/d:abstract"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="set.titlepage.verso"> +</xsl:template> + +<xsl:template name="set.titlepage.separator"><hr/> +</xsl:template> + +<xsl:template name="set.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="set.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="set.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="set.titlepage.before.recto"/> + <xsl:call-template name="set.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="set.titlepage.before.verso"/> + <xsl:call-template name="set.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="set.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="book.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:bookinfo/d:title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:bookinfo/d:subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:corpauthor"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:authorgroup"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:author"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:othercredit"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:releaseinfo"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:copyright"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:legalnotice"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:pubdate"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:revision"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:revhistory"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:bookinfo/d:abstract"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="book.titlepage.verso"> +</xsl:template> + +<xsl:template name="book.titlepage.separator"><hr/> +</xsl:template> + +<xsl:template name="book.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="book.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="book.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="book.titlepage.before.recto"/> + <xsl:call-template name="book.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="book.titlepage.before.verso"/> + <xsl:call-template name="book.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="book.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="part.titlepage.recto"> + <div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:part[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:partinfo/d:subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:corpauthor"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:authorgroup"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:author"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:othercredit"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:releaseinfo"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:copyright"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:legalnotice"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:pubdate"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:revision"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:revhistory"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:partinfo/d:abstract"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:docinfo/d:abstract"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="part.titlepage.verso"> +</xsl:template> + +<xsl:template name="part.titlepage.separator"> +</xsl:template> + +<xsl:template name="part.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="part.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="part.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="part.titlepage.before.recto"/> + <xsl:call-template name="part.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="part.titlepage.before.verso"/> + <xsl:call-template name="part.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="part.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="partintro.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:partintroinfo/d:title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:partintroinfo/d:subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:corpauthor"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:authorgroup"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:author"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:othercredit"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:releaseinfo"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:copyright"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:legalnotice"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:pubdate"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:revision"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:revhistory"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:partintroinfo/d:abstract"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:docinfo/d:abstract"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="partintro.titlepage.verso"> +</xsl:template> + +<xsl:template name="partintro.titlepage.separator"> +</xsl:template> + +<xsl:template name="partintro.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="partintro.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="partintro.titlepage"> + <div> + <xsl:variable name="recto.content"> + <xsl:call-template name="partintro.titlepage.before.recto"/> + <xsl:call-template name="partintro.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="partintro.titlepage.before.verso"/> + <xsl:call-template name="partintro.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="partintro.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="partintro.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="partintro.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="reference.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:referenceinfo/d:title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:referenceinfo/d:subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:corpauthor"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:authorgroup"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:author"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:othercredit"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:releaseinfo"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:copyright"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:legalnotice"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:pubdate"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:revision"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:revhistory"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:referenceinfo/d:abstract"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:docinfo/d:abstract"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="reference.titlepage.verso"> +</xsl:template> + +<xsl:template name="reference.titlepage.separator"><hr/> +</xsl:template> + +<xsl:template name="reference.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="reference.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="reference.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="reference.titlepage.before.recto"/> + <xsl:call-template name="reference.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="reference.titlepage.before.verso"/> + <xsl:call-template name="reference.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="reference.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="reference.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="reference.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="refentry.titlepage.recto"> +</xsl:template> + +<xsl:template name="refentry.titlepage.verso"> +</xsl:template> + +<xsl:template name="refentry.titlepage.separator"> +</xsl:template> + +<xsl:template name="refentry.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refentry.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refentry.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="refentry.titlepage.before.recto"/> + <xsl:call-template name="refentry.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="refentry.titlepage.before.verso"/> + <xsl:call-template name="refentry.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="refentry.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="refentry.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refentry.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="dedication.titlepage.recto"> + <div xsl:use-attribute-sets="dedication.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:dedication[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:dedicationinfo/d:subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="d:dedicationinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="dedication.titlepage.verso"> +</xsl:template> + +<xsl:template name="dedication.titlepage.separator"> +</xsl:template> + +<xsl:template name="dedication.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="dedication.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="dedication.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="dedication.titlepage.before.recto"/> + <xsl:call-template name="dedication.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="dedication.titlepage.before.verso"/> + <xsl:call-template name="dedication.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="dedication.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="dedication.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="dedication.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="dedication.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="dedication.titlepage.recto.style"> +<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.recto"> + <div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:acknowledgements[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:acknowledgementsinfo/d:subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="d:acknowledgementsinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.verso"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.separator"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="acknowledgements.titlepage.before.recto"/> + <xsl:call-template name="acknowledgements.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="acknowledgements.titlepage.before.verso"/> + <xsl:call-template name="acknowledgements.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="acknowledgements.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="acknowledgements.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="acknowledgements.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="acknowledgements.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style"> +<xsl:apply-templates select="." mode="acknowledgements.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="preface.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:prefaceinfo/d:title"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:prefaceinfo/d:subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:prefaceinfo/d:abstract"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:docinfo/d:abstract"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="preface.titlepage.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage.separator"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="preface.titlepage.before.recto"/> + <xsl:call-template name="preface.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="preface.titlepage.before.verso"/> + <xsl:call-template name="preface.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="preface.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="chapter.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:chapterinfo/d:title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:chapterinfo/d:subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:chapterinfo/d:abstract"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:docinfo/d:abstract"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="chapter.titlepage.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage.separator"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="chapter.titlepage.before.recto"/> + <xsl:call-template name="chapter.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="chapter.titlepage.before.verso"/> + <xsl:call-template name="chapter.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="chapter.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="topic.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:topicinfo/d:title"> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:topicinfo/d:subtitle"> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:corpauthor"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:authorgroup"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:author"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:othercredit"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:releaseinfo"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:copyright"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:legalnotice"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:pubdate"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:revision"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:revhistory"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:topicinfo/d:abstract"/> + <xsl:apply-templates mode="topic.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="topic.titlepage.verso"> +</xsl:template> + +<xsl:template name="topic.titlepage.separator"> +</xsl:template> + +<xsl:template name="topic.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="topic.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="topic.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="topic.titlepage.before.recto"/> + <xsl:call-template name="topic.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="topic.titlepage.before.verso"/> + <xsl:call-template name="topic.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="topic.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="topic.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="topic.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="topic.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="topic.titlepage.recto.style"> +<xsl:apply-templates select="." mode="topic.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="appendix.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:appendixinfo/d:title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:appendixinfo/d:subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:appendixinfo/d:abstract"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:docinfo/d:abstract"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="appendix.titlepage.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage.separator"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="appendix.titlepage.before.recto"/> + <xsl:call-template name="appendix.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="appendix.titlepage.before.verso"/> + <xsl:call-template name="appendix.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="appendix.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="section.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sectioninfo/d:title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sectioninfo/d:subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:corpauthor"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:authorgroup"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:author"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:othercredit"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:releaseinfo"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:copyright"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:legalnotice"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:pubdate"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:revision"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:revhistory"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:sectioninfo/d:abstract"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="section.titlepage.verso"> +</xsl:template> + +<xsl:template name="section.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="section.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="section.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="section.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="section.titlepage.before.recto"/> + <xsl:call-template name="section.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="section.titlepage.before.verso"/> + <xsl:call-template name="section.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="section.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect1.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sect1info/d:title"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sect1info/d:subtitle"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:corpauthor"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:authorgroup"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:author"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:othercredit"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:releaseinfo"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:copyright"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:legalnotice"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:pubdate"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:revision"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:revhistory"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:sect1info/d:abstract"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="sect1.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect1.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect1.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect1.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect1.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect1.titlepage.before.recto"/> + <xsl:call-template name="sect1.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect1.titlepage.before.verso"/> + <xsl:call-template name="sect1.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect1.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect1.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect1.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect2.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sect2info/d:title"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sect2info/d:subtitle"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:corpauthor"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:authorgroup"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:author"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:othercredit"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:releaseinfo"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:copyright"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:legalnotice"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:pubdate"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:revision"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:revhistory"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:sect2info/d:abstract"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="sect2.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect2.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect2.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect2.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect2.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect2.titlepage.before.recto"/> + <xsl:call-template name="sect2.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect2.titlepage.before.verso"/> + <xsl:call-template name="sect2.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect2.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect2.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect2.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect3.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sect3info/d:title"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sect3info/d:subtitle"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:corpauthor"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:authorgroup"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:author"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:othercredit"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:releaseinfo"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:copyright"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:legalnotice"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:pubdate"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:revision"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:revhistory"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:sect3info/d:abstract"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="sect3.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect3.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect3.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect3.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect3.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect3.titlepage.before.recto"/> + <xsl:call-template name="sect3.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect3.titlepage.before.verso"/> + <xsl:call-template name="sect3.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect3.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect3.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect3.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect4.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sect4info/d:title"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sect4info/d:subtitle"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:corpauthor"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:authorgroup"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:author"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:othercredit"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:releaseinfo"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:copyright"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:legalnotice"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:pubdate"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:revision"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:revhistory"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:sect4info/d:abstract"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="sect4.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect4.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect4.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect4.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect4.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect4.titlepage.before.recto"/> + <xsl:call-template name="sect4.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect4.titlepage.before.verso"/> + <xsl:call-template name="sect4.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect4.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect4.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect4.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect5.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sect5info/d:title"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sect5info/d:subtitle"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:corpauthor"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:authorgroup"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:author"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:othercredit"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:releaseinfo"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:copyright"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:legalnotice"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:pubdate"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:revision"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:revhistory"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:sect5info/d:abstract"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="sect5.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect5.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect5.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect5.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect5.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect5.titlepage.before.recto"/> + <xsl:call-template name="sect5.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect5.titlepage.before.verso"/> + <xsl:call-template name="sect5.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect5.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect5.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect5.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="simplesect.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:simplesectinfo/d:title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:simplesectinfo/d:subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:corpauthor"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:corpauthor"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:corpauthor"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:authorgroup"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:authorgroup"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:authorgroup"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:author"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:author"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:author"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:othercredit"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:othercredit"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:othercredit"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:releaseinfo"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:releaseinfo"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:releaseinfo"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:copyright"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:copyright"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:copyright"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:legalnotice"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:legalnotice"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:legalnotice"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:pubdate"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:pubdate"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:pubdate"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:revision"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:revision"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:revision"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:revhistory"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:revhistory"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:revhistory"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:simplesectinfo/d:abstract"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:docinfo/d:abstract"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="d:info/d:abstract"/> +</xsl:template> + +<xsl:template name="simplesect.titlepage.verso"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="simplesect.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="simplesect.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="simplesect.titlepage.before.recto"/> + <xsl:call-template name="simplesect.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="simplesect.titlepage.before.verso"/> + <xsl:call-template name="simplesect.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="simplesect.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="simplesect.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="simplesect.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:author" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:othercredit" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:copyright" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:pubdate" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revision" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:revhistory" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="d:abstract" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="bibliography.titlepage.recto"> + <div xsl:use-attribute-sets="bibliography.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:bibliography[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:bibliographyinfo/d:subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="d:bibliographyinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="bibliography.titlepage.verso"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.separator"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="bibliography.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="bibliography.titlepage.before.recto"/> + <xsl:call-template name="bibliography.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="bibliography.titlepage.before.verso"/> + <xsl:call-template name="bibliography.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="bibliography.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="bibliography.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="bibliography.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="bibliography.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="bibliography.titlepage.recto.style"> +<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="glossary.titlepage.recto"> + <div xsl:use-attribute-sets="glossary.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:glossary[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:glossaryinfo/d:subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="d:glossaryinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="glossary.titlepage.verso"> +</xsl:template> + +<xsl:template name="glossary.titlepage.separator"> +</xsl:template> + +<xsl:template name="glossary.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="glossary.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="glossary.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="glossary.titlepage.before.recto"/> + <xsl:call-template name="glossary.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="glossary.titlepage.before.verso"/> + <xsl:call-template name="glossary.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="glossary.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="glossary.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="glossary.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="glossary.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="glossary.titlepage.recto.style"> +<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="index.titlepage.recto"> + <div xsl:use-attribute-sets="index.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:index[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:indexinfo/d:subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="d:indexinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="index.titlepage.verso"> +</xsl:template> + +<xsl:template name="index.titlepage.separator"> +</xsl:template> + +<xsl:template name="index.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="index.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="index.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="index.titlepage.before.recto"/> + <xsl:call-template name="index.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="index.titlepage.before.verso"/> + <xsl:call-template name="index.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="index.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="index.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="index.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="index.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="index.titlepage.recto.style"> +<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="setindex.titlepage.recto"> + <div xsl:use-attribute-sets="setindex.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::d:setindex[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="d:setindexinfo/d:subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="d:setindexinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="setindex.titlepage.verso"> +</xsl:template> + +<xsl:template name="setindex.titlepage.separator"> +</xsl:template> + +<xsl:template name="setindex.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="setindex.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="setindex.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="setindex.titlepage.before.recto"/> + <xsl:call-template name="setindex.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="setindex.titlepage.before.verso"/> + <xsl:call-template name="setindex.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="setindex.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="setindex.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="setindex.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:subtitle" mode="setindex.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="setindex.titlepage.recto.style"> +<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sidebar.titlepage.recto"> + <xsl:choose> + <xsl:when test="d:sidebarinfo/d:title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:sidebarinfo/d:title"/> + </xsl:when> + <xsl:when test="d:docinfo/d:title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:docinfo/d:title"/> + </xsl:when> + <xsl:when test="d:info/d:title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:info/d:title"/> + </xsl:when> + <xsl:when test="d:title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="d:sidebarinfo/d:subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:sidebarinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:docinfo/d:subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:docinfo/d:subtitle"/> + </xsl:when> + <xsl:when test="d:info/d:subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:info/d:subtitle"/> + </xsl:when> + <xsl:when test="d:subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="d:subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="sidebar.titlepage.verso"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.separator"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sidebar.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sidebar.titlepage.before.recto"/> + <xsl:call-template name="sidebar.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sidebar.titlepage.before.verso"/> + <xsl:call-template name="sidebar.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sidebar.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sidebar.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sidebar.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:title" mode="sidebar.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sidebar.titlepage.recto.style"> +<xsl:call-template name="formal.object.heading"> +<xsl:with-param name="object" select="ancestor-or-self::d:sidebar[1]"/> +</xsl:call-template> +</div> +</xsl:template> + +<xsl:template match="d:subtitle" mode="sidebar.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sidebar.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/> +</div> +</xsl:template> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml/titlepage.xsl b/DOCBOOK/xhtml/titlepage.xsl new file mode 100755 index 0000000..47d2e69 --- /dev/null +++ b/DOCBOOK/xhtml/titlepage.xsl @@ -0,0 +1,1108 @@ +<?xml version="1.0" encoding="ASCII"?> +<!--This file was created automatically by html2xhtml--> +<!--from the HTML stylesheets.--> +<xsl:stylesheet exclude-result-prefixes="d" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" +xmlns="http://www.w3.org/1999/xhtml" version="1.0"> + +<!-- ******************************************************************** + $Id: titlepage.xsl 9360 2012-05-12 23:39:14Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:attribute-set name="book.titlepage.recto.style"/> +<xsl:attribute-set name="book.titlepage.verso.style"/> + +<xsl:attribute-set name="article.titlepage.recto.style"/> +<xsl:attribute-set name="article.titlepage.verso.style"/> + +<xsl:attribute-set name="set.titlepage.recto.style"/> +<xsl:attribute-set name="set.titlepage.verso.style"/> + +<xsl:attribute-set name="part.titlepage.recto.style"/> +<xsl:attribute-set name="part.titlepage.verso.style"/> + +<xsl:attribute-set name="partintro.titlepage.recto.style"/> +<xsl:attribute-set name="partintro.titlepage.verso.style"/> + +<xsl:attribute-set name="reference.titlepage.recto.style"/> +<xsl:attribute-set name="reference.titlepage.verso.style"/> + +<xsl:attribute-set name="refentry.titlepage.recto.style"/> +<xsl:attribute-set name="refentry.titlepage.verso.style"/> + +<xsl:attribute-set name="dedication.titlepage.recto.style"/> +<xsl:attribute-set name="dedication.titlepage.verso.style"/> + +<xsl:attribute-set name="acknowledgements.titlepage.recto.style"/> +<xsl:attribute-set name="acknowledgements.titlepage.verso.style"/> + +<xsl:attribute-set name="preface.titlepage.recto.style"/> +<xsl:attribute-set name="preface.titlepage.verso.style"/> + +<xsl:attribute-set name="chapter.titlepage.recto.style"/> +<xsl:attribute-set name="chapter.titlepage.verso.style"/> + +<xsl:attribute-set name="appendix.titlepage.recto.style"/> +<xsl:attribute-set name="appendix.titlepage.verso.style"/> + +<xsl:attribute-set name="bibliography.titlepage.recto.style"/> +<xsl:attribute-set name="bibliography.titlepage.verso.style"/> + +<xsl:attribute-set name="glossary.titlepage.recto.style"/> +<xsl:attribute-set name="glossary.titlepage.verso.style"/> + +<xsl:attribute-set name="index.titlepage.recto.style"/> +<xsl:attribute-set name="index.titlepage.verso.style"/> + +<xsl:attribute-set name="setindex.titlepage.recto.style"/> +<xsl:attribute-set name="setindex.titlepage.verso.style"/> + +<xsl:attribute-set name="sidebar.titlepage.recto.style"/> +<xsl:attribute-set name="sidebar.titlepage.verso.style"/> + +<xsl:attribute-set name="topic.titlepage.recto.style"/> +<xsl:attribute-set name="topic.titlepage.verso.style"/> + +<xsl:attribute-set name="section.titlepage.recto.style"/> +<xsl:attribute-set name="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect1.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect1.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect2.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect2.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect3.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect3.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect4.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect4.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect5.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect5.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="simplesect.titlepage.recto.style" use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="simplesect.titlepage.verso.style" use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="table.of.contents.titlepage.recto.style"/> +<xsl:attribute-set name="table.of.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.tables.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.figures.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.equations.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.examples.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="titlepage.mode"> + <!-- if an element isn't found in this mode, try the default mode --> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="d:abbrev" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:abstract" mode="titlepage.mode"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:call-template name="anchor"/> + <xsl:if test="$abstract.notitle.enabled = 0"> + <xsl:call-template name="formal.object.heading"> + <xsl:with-param name="title"> + <xsl:apply-templates select="." mode="title.markup"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + <xsl:apply-templates mode="titlepage.mode"/> + <xsl:call-template name="process.footnotes"/> + </div> +</xsl:template> + +<xsl:template match="d:abstract/d:title" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="d:address" mode="titlepage.mode"> + <xsl:param name="suppress-numbers" select="'0'"/> + + <xsl:variable name="rtf"> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="paragraph"> + <xsl:with-param name="content"> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:when> + + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="paragraph"> + <xsl:with-param name="content"> + <xsl:call-template name="make-verbatim"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:affiliation" mode="titlepage.mode"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + </div> +</xsl:template> + +<xsl:template match="d:artpagenums" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:author|d:editor" mode="titlepage.mode"> + <xsl:call-template name="credits.div"/> +</xsl:template> + +<xsl:template name="credits.div"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:if test="self::d:editor[position()=1] and not($editedby.enabled = 0)"> + <h4 class="editedby"><xsl:call-template name="gentext.edited.by"/></h4> + </xsl:if> + <h3> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:choose> + <xsl:when test="d:orgname"> + <xsl:apply-templates/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="person.name"/> + </xsl:otherwise> + </xsl:choose> + </h3> + <xsl:if test="not($contrib.inline.enabled = 0)"> + <xsl:apply-templates mode="titlepage.mode" select="d:contrib"/> + </xsl:if> + <xsl:apply-templates mode="titlepage.mode" select="d:affiliation"/> + <xsl:apply-templates mode="titlepage.mode" select="d:email"/> + <xsl:if test="not($blurb.on.titlepage.enabled = 0)"> + <xsl:choose> + <xsl:when test="$contrib.inline.enabled = 0"> + <xsl:apply-templates mode="titlepage.mode" select="d:contrib|d:authorblurb|d:personblurb"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="titlepage.mode" select="d:authorblurb|d:personblurb"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </div> +</xsl:template> + +<xsl:template match="d:authorblurb|d:personblurb" mode="titlepage.mode"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + </div> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="titlepage.mode"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:if test="parent::d:refentryinfo"> + <h2>Authors</h2> + </xsl:if> + + <xsl:call-template name="anchor"/> + <xsl:apply-templates mode="titlepage.mode"/> + </div> +</xsl:template> + +<xsl:template match="d:authorinitials" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:bibliomisc" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:bibliomset" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:collab" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:collabname" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + </span> +</xsl:template> + +<xsl:template match="d:confgroup" mode="titlepage.mode"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + </div> +</xsl:template> + +<xsl:template match="d:confdates" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:confsponsor" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:conftitle" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:confnum" mode="titlepage.mode"> + <!-- suppress --> +</xsl:template> + +<xsl:template match="d:contractnum" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:contractsponsor" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:contrib" mode="titlepage.mode"> + <xsl:choose> + <xsl:when test="not($contrib.inline.enabled = 0)"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + </span><xsl:text> </xsl:text> + </xsl:when> + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <p><xsl:apply-templates mode="titlepage.mode"/></p> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:copyright" mode="titlepage.mode"> + + <xsl:if test="generate-id() = generate-id(//d:refentryinfo/d:copyright[1]) and ($stylesheet.result.type = 'html' or $stylesheet.result.type = 'xhtml')"> + <h2>Copyright</h2> + </xsl:if> + + <p> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Copyright'"/> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:call-template name="dingbat"> + <xsl:with-param name="dingbat">copyright</xsl:with-param> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:call-template name="copyright.years"> + <xsl:with-param name="years" select="d:year"/> + <xsl:with-param name="print.ranges" select="$make.year.ranges"/> + <xsl:with-param name="single.year.ranges" select="$make.single.year.ranges"/> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:apply-templates select="d:holder" mode="titlepage.mode"/> + </p> +</xsl:template> + +<xsl:template match="d:year" mode="titlepage.mode"> + <xsl:choose> + <xsl:when test="$show.revisionflag != 0 and @revisionflag"> + <span class="{@revisionflag}"> + <xsl:apply-templates mode="titlepage.mode"/> + </span> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:holder" mode="titlepage.mode"> + <xsl:choose> + <xsl:when test="$show.revisionflag != 0 and @revisionflag"> + <span class="{@revisionflag}"> + <xsl:apply-templates mode="titlepage.mode"/> + </span> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="position() < last()"> + <xsl:text>, </xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match="d:corpauthor" mode="titlepage.mode"> + <h3> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + </h3> +</xsl:template> + +<xsl:template match="d:corpcredit" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:corpname" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:date" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:edition" mode="titlepage.mode"> + <p> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <xsl:call-template name="gentext.space"/> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Edition'"/> + </xsl:call-template> + </p> +</xsl:template> + +<xsl:template match="d:email" mode="titlepage.mode"> + <!-- use the normal e-mail handling code --> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="d:firstname" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:graphic" mode="titlepage.mode"> + <!-- use the normal graphic handling code --> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="d:honorific" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:isbn" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:issn" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:biblioid" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:itermset" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="d:invpartnumber" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:issuenum" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:jobtitle" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:keywordset" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="d:legalnotice" mode="titlepage.mode"> + <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + + <xsl:choose> + <xsl:when test="$generate.legalnotice.link != 0"> + + <!-- Compute name of legalnotice file --> + <xsl:variable name="file"> + <xsl:call-template name="ln.or.rh.filename"/> + </xsl:variable> + + <xsl:variable name="filename"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir" select="$chunk.base.dir"/> + <xsl:with-param name="base.name" select="$file"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="title"> + <xsl:apply-templates select="." mode="title.markup"/> + </xsl:variable> + + <a href="{$file}"> + <xsl:copy-of select="$title"/> + </a> + + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename" select="$filename"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + <xsl:with-param name="content"> + <xsl:call-template name="user.preroot"/> + <html> + <head> + <xsl:call-template name="system.head.content"/> + <xsl:call-template name="head.content"/> + <xsl:call-template name="user.head.content"/> + </head> + <body> + <xsl:call-template name="body.attributes"/> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"> + <xsl:with-param name="conditional" select="0"/> + </xsl:call-template> + <xsl:apply-templates mode="titlepage.mode"/> + </div> + </body> + </html> + <xsl:value-of select="$chunk.append"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"> + <xsl:with-param name="conditional" select="0"/> + </xsl:call-template> + <xsl:call-template name="anchor"> + <xsl:with-param name="conditional" select="0"/> + </xsl:call-template> + <xsl:apply-templates mode="titlepage.mode"/> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:legalnotice/d:title" mode="titlepage.mode"> + <p class="legalnotice-title"><strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong></p> +</xsl:template> + +<xsl:template match="d:lineage" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:modespec" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="d:orgdiv" mode="titlepage.mode"> + <xsl:if test="preceding-sibling::*[1][self::d:orgname]"> + <xsl:text> </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:orgname" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:othercredit" mode="titlepage.mode"> +<xsl:choose> + <xsl:when test="not($othercredit.like.author.enabled = 0)"> + <xsl:variable name="contrib" select="string(d:contrib)"/> + <xsl:choose> + <xsl:when test="d:contrib"> + <xsl:if test="not(preceding-sibling::d:othercredit[string(d:contrib)=$contrib])"> + <xsl:call-template name="paragraph"> + <xsl:with-param name="class" select="local-name(.)"/> + <xsl:with-param name="content"> + <xsl:apply-templates mode="titlepage.mode" select="d:contrib"/> + <xsl:text>: </xsl:text> + <xsl:call-template name="person.name"/> + <xsl:apply-templates mode="titlepage.mode" select="d:affiliation"/> + <xsl:apply-templates select="following-sibling::d:othercredit[string(d:contrib)=$contrib]" mode="titlepage.othercredits"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="paragraph"> + <xsl:with-param name="class" select="local-name(.)"/> + <xsl:with-param name="content"> + <xsl:call-template name="person.name"/> + </xsl:with-param> + </xsl:call-template> + <xsl:apply-templates mode="titlepage.mode" select="d:affiliation"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="credits.div"/> + </xsl:otherwise> +</xsl:choose> +</xsl:template> + +<xsl:template match="d:othercredit" mode="titlepage.othercredits"> + <xsl:text>, </xsl:text> + <xsl:call-template name="person.name"/> +</xsl:template> + +<xsl:template match="d:othername" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:pagenums" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:printhistory" mode="titlepage.mode"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + </div> +</xsl:template> + +<xsl:template match="d:productname" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:productnumber" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:pubdate" mode="titlepage.mode"> + <xsl:call-template name="paragraph"> + <xsl:with-param name="class" select="local-name(.)"/> + <xsl:with-param name="content"> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template match="d:publisher" mode="titlepage.mode"> + <xsl:call-template name="paragraph"> + <xsl:with-param name="class" select="local-name(.)"/> + <xsl:with-param name="content"> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template match="d:publishername" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:pubsnumber" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:releaseinfo" mode="titlepage.mode"> + <xsl:call-template name="paragraph"> + <xsl:with-param name="class" select="local-name(.)"/> + <xsl:with-param name="content"> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template match="d:revhistory" mode="titlepage.mode"> + <xsl:variable name="numcols"> + <xsl:choose> + <xsl:when test=".//d:authorinitials|.//d:author">3</xsl:when> + <xsl:otherwise>2</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + + <xsl:variable name="title"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">RevHistory</xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="contents"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <table> + <xsl:if test="$css.decoration != 0"> + <xsl:attribute name="style"> + <xsl:text>border-style:solid; width:100%;</xsl:text> + </xsl:attribute> + </xsl:if> + <!-- include summary attribute if not HTML5 --> + <xsl:if test="$div.element != 'section'"> + <xsl:attribute name="summary"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">revhistory</xsl:with-param> + </xsl:call-template> + </xsl:attribute> + </xsl:if> + <tr> + <th align="{$direction.align.start}" valign="top" colspan="{$numcols}"> + <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'RevHistory'"/> + </xsl:call-template> + </strong> + </th> + </tr> + <xsl:apply-templates mode="titlepage.mode"> + <xsl:with-param name="numcols" select="$numcols"/> + </xsl:apply-templates> + </table> + </div> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$generate.revhistory.link != 0"> + + <!-- Compute name of revhistory file --> + <xsl:variable name="file"> + <xsl:call-template name="ln.or.rh.filename"> + <xsl:with-param name="is.ln" select="false()"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="filename"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir" select="$chunk.base.dir"/> + <xsl:with-param name="base.name" select="$file"/> + </xsl:call-template> + </xsl:variable> + + <a href="{$file}"> + <xsl:copy-of select="$title"/> + </a> + + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename" select="$filename"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + <xsl:with-param name="content"> + <xsl:call-template name="user.preroot"/> + <html> + <head> + <xsl:call-template name="system.head.content"/> + <xsl:call-template name="head.content"> + <xsl:with-param name="title"> + <xsl:value-of select="$title"/> + <xsl:if test="../../d:title"> + <xsl:value-of select="concat(' (', ../../d:title, ')')"/> + </xsl:if> + </xsl:with-param> + </xsl:call-template> + <xsl:call-template name="user.head.content"/> + </head> + <body> + <xsl:call-template name="body.attributes"/> + <xsl:copy-of select="$contents"/> + </body> + </html> + <xsl:text> +</xsl:text> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$contents"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:revhistory/d:revision" mode="titlepage.mode"> + <xsl:param name="numcols" select="'3'"/> + <xsl:variable name="revnumber" select="d:revnumber"/> + <xsl:variable name="revdate" select="d:date"/> + <xsl:variable name="revauthor" select="d:authorinitials|d:author"/> + <xsl:variable name="revremark" select="d:revremark|d:revdescription"/> + <tr> + <td align="{$direction.align.start}"> + <xsl:if test="$revnumber"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Revision'"/> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/> + </xsl:if> + </td> + <td align="{$direction.align.start}"> + <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/> + </td> + <xsl:choose> + <xsl:when test="$revauthor"> + <td align="{$direction.align.start}"> + <xsl:for-each select="$revauthor"> + <xsl:apply-templates select="." mode="titlepage.mode"/> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + </td> + </xsl:when> + <xsl:when test="$numcols > 2"> + <td> </td> + </xsl:when> + <xsl:otherwise/> + </xsl:choose> + </tr> + <xsl:if test="$revremark"> + <tr> + <td align="{$direction.align.start}" colspan="{$numcols}"> + <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/> + </td> + </tr> + </xsl:if> +</xsl:template> + +<xsl:template match="d:revision/d:revnumber" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:revision/d:date" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:revision/d:authorinitials" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:revision/d:author" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:revision/d:revremark" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:revision/d:revdescription" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="d:seriesvolnums" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:shortaffil" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:subjectset" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="d:subtitle" mode="titlepage.mode"> + <h2> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + </h2> +</xsl:template> + +<xsl:template match="d:surname" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="d:title" mode="titlepage.mode"> + <xsl:variable name="id"> + <xsl:choose> + <!-- if title is in an *info wrapper, get the grandparent --> + <xsl:when test="contains(local-name(..), 'info')"> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="../.."/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select=".."/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <h1> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:choose> + <xsl:when test="$generate.id.attributes = 0"> + <a id="{$id}"/> + </xsl:when> + <xsl:otherwise> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="$show.revisionflag != 0 and @revisionflag"> + <span class="{@revisionflag}"> + <xsl:apply-templates mode="titlepage.mode"/> + </span> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:otherwise> + </xsl:choose> + </h1> +</xsl:template> + +<xsl:template match="d:titleabbrev" mode="titlepage.mode"> + <!-- nop; title abbreviations don't belong on the title page! --> +</xsl:template> + +<xsl:template match="d:volumenum" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<!-- This template computes the filename for legalnotice and revhistory chunks --> +<xsl:template name="ln.or.rh.filename"> + <xsl:param name="node" select="."/> + <xsl:param name="is.ln" select="true()"/> + + <xsl:variable name="dbhtml-filename"> + <xsl:call-template name="pi.dbhtml_filename"> + <xsl:with-param name="node" select="$node"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <!-- 1. If there is a dbhtml_filename PI, use that --> + <xsl:when test="$dbhtml-filename != ''"> + <xsl:value-of select="$dbhtml-filename"/> + </xsl:when> + <xsl:when test="($node/@id or $node/@xml:id) and not($use.id.as.filename = 0)"> + <!-- * 2. If this legalnotice/revhistory has an ID, then go ahead and use --> + <!-- * just the value of that ID as the basename for the file --> + <!-- * (that is, without prepending an "ln-" or "rh-" to it) --> + <xsl:value-of select="($node/@id|$node/@xml:id)[1]"/> + <xsl:value-of select="$html.ext"/> + </xsl:when> + <xsl:when test="not ($node/@id or $node/@xml:id) or $use.id.as.filename = 0"> + <!-- * 3. Otherwise, if this legalnotice/revhistory does not have an ID, or --> + <!-- * if $use.id.as.filename = 0 --> + <!-- * then we generate an ID... --> + <xsl:variable name="id"> + <xsl:value-of select="generate-id($node)"/> + </xsl:variable> + <!-- * ...and then we take that generated ID, prepend a --> + <!-- * prefix to it, and use that as the basename for the file --> + <xsl:choose> + <xsl:when test="$is.ln"> + <xsl:value-of select="concat('ln-',$id,$html.ext)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('rh-',$id,$html.ext)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml/toc.xsl b/DOCBOOK/xhtml/toc.xsl new file mode 100755 index 0000000..73f1ffe --- /dev/null +++ b/DOCBOOK/xhtml/toc.xsl @@ -0,0 +1,334 @@ +<?xml version="1.0" encoding="ASCII"?> +<!--This file was created automatically by html2xhtml--> +<!--from the HTML stylesheets.--> +<xsl:stylesheet exclude-result-prefixes="d" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" +xmlns="http://www.w3.org/1999/xhtml" version="1.0"> + +<!-- ******************************************************************** + $Id: toc.xsl 9297 2012-04-22 03:56:16Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="d:set/d:toc | d:book/d:toc | d:part/d:toc"> + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="node" select="parent::*"/> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <!-- Do not output the toc element if one is already generated + by the use of $generate.toc parameter, or if + generating a source toc is turned off --> + <xsl:if test="not(contains($toc.params, 'toc')) and ($process.source.toc != 0 or $process.empty.source.toc != 0)"> + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <xsl:apply-templates/> + </xsl:when> + <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0"> + <!-- trick to switch context node to parent element --> + <xsl:for-each select="parent::*"> + <xsl:choose> + <xsl:when test="self::d:set"> + <xsl:call-template name="set.toc"> + <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="self::d:book"> + <xsl:call-template name="division.toc"> + <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="self::d:part"> + <xsl:call-template name="division.toc"> + <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> + </xsl:for-each> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:if test="string-length(normalize-space($content)) != 0"> + <xsl:copy-of select="$content"/> + </xsl:if> + </xsl:if> +</xsl:template> + +<xsl:template match="d:chapter/d:toc | d:appendix/d:toc | d:preface/d:toc | d:article/d:toc"> + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="node" select="parent::*"/> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <!-- Do not output the toc element if one is already generated + by the use of $generate.toc parameter, or if + generating a source toc is turned off --> + <xsl:if test="not(contains($toc.params, 'toc')) and ($process.source.toc != 0 or $process.empty.source.toc != 0)"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates select="d:title"/> + <dl> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="*[not(self::d:title)]"/> + </dl> + </div> + <xsl:call-template name="component.toc.separator"/> + </xsl:when> + <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0"> + <!-- trick to switch context node to section element --> + <xsl:for-each select="parent::*"> + <xsl:call-template name="component.toc"> + <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:for-each> + <xsl:call-template name="component.toc.separator"/> + </xsl:when> + </xsl:choose> + </xsl:if> +</xsl:template> + +<xsl:template match="d:section/d:toc |d:sect1/d:toc |d:sect2/d:toc |d:sect3/d:toc |d:sect4/d:toc |d:sect5/d:toc"> + + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="node" select="parent::*"/> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <!-- Do not output the toc element if one is already generated + by the use of $generate.toc parameter, or if + generating a source toc is turned off --> + <xsl:if test="not(contains($toc.params, 'toc')) and ($process.source.toc != 0 or $process.empty.source.toc != 0)"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates select="d:title"/> + <dl> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="*[not(self::d:title)]"/> + </dl> + </div> + <xsl:call-template name="section.toc.separator"/> + </xsl:when> + <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0"> + <!-- trick to switch context node to section element --> + <xsl:for-each select="parent::*"> + <xsl:call-template name="section.toc"> + <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:for-each> + <xsl:call-template name="section.toc.separator"/> + </xsl:when> + </xsl:choose> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="d:tocpart|d:tocchap |d:toclevel1|d:toclevel2|d:toclevel3|d:toclevel4|d:toclevel5"> + <xsl:variable name="sub-toc"> + <xsl:if test="d:tocchap|d:toclevel1|d:toclevel2|d:toclevel3|d:toclevel4|d:toclevel5"> + <xsl:choose> + <xsl:when test="$toc.list.type = 'dl'"> + <dd> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="d:tocchap|d:toclevel1|d:toclevel2| d:toclevel3|d:toclevel4|d:toclevel5"/> + </xsl:element> + </dd> + </xsl:when> + <xsl:otherwise> + <xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="d:tocchap|d:toclevel1|d:toclevel2| d:toclevel3|d:toclevel4|d:toclevel5"/> + </xsl:element> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:variable> + + <xsl:apply-templates select="d:tocentry[position() != last()]"/> + + <xsl:choose> + <xsl:when test="$toc.list.type = 'dl'"> + <dt> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="d:tocentry[position() = last()]"/> + </dt> + <xsl:copy-of select="$sub-toc"/> + </xsl:when> + <xsl:otherwise> + <li> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="d:tocentry[position() = last()]"/> + <xsl:copy-of select="$sub-toc"/> + </li> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:tocentry|d:tocdiv|d:lotentry|d:tocfront|d:tocback"> + <xsl:choose> + <xsl:when test="$toc.list.type = 'dl'"> + <dt> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="tocentry-content"/> + </dt> + </xsl:when> + <xsl:otherwise> + <li> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="tocentry-content"/> + </li> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:tocentry[position() = last()]" priority="2"> + <xsl:call-template name="tocentry-content"/> +</xsl:template> + +<xsl:template name="tocentry-content"> + <xsl:variable name="targets" select="key('id',@linkend)"/> + <xsl:variable name="target" select="$targets[1]"/> + + <xsl:choose> + <xsl:when test="@linkend"> + <xsl:call-template name="check.id.unique"> + <xsl:with-param name="linkend" select="@linkend"/> + </xsl:call-template> + <a> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$target"/> + </xsl:call-template> + </xsl:attribute> + <xsl:apply-templates/> + </a> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:toc/d:title"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="d:toc/d:subtitle"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="d:toc/d:titleabbrev"> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- A lot element must have content, because there is no attribute + to select what kind of list should be generated --> +<xsl:template match="d:book/d:lot | d:part/d:lot"> + <!-- Don't generate a page sequence unless there is content --> + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> + </xsl:when> + <xsl:when test="not(child::*) and $process.empty.source.toc != 0"> + <xsl:call-template name="process.empty.lot"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:if test="string-length(normalize-space($content)) != 0"> + <xsl:copy-of select="$content"/> + </xsl:if> +</xsl:template> + +<xsl:template match="d:chapter/d:lot | d:appendix/d:lot | d:preface/d:lot | d:article/d:lot"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> + <xsl:call-template name="component.toc.separator"/> + </xsl:when> + <xsl:when test="not(child::*) and $process.empty.source.toc != 0"> + <xsl:call-template name="process.empty.lot"/> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:section/d:lot |d:sect1/d:lot |d:sect2/d:lot |d:sect3/d:lot |d:sect4/d:lot |d:sect5/d:lot"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> + <xsl:call-template name="section.toc.separator"/> + </xsl:when> + <xsl:when test="not(child::*) and $process.empty.source.toc != 0"> + <xsl:call-template name="process.empty.lot"/> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template name="process.empty.lot"> + <!-- An empty lot element does not provide any information to indicate + what should be included in it. You can customize this + template to generate a lot based on @role or something --> + <xsl:message> + <xsl:text>Warning: don't know what to generate for </xsl:text> + <xsl:text>lot that has no children.</xsl:text> + </xsl:message> +</xsl:template> + +<xsl:template match="d:lot/d:title"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="d:lot/d:subtitle"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="d:lot/d:titleabbrev"> +</xsl:template> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml/verbatim.xsl b/DOCBOOK/xhtml/verbatim.xsl new file mode 100755 index 0000000..824f0ad --- /dev/null +++ b/DOCBOOK/xhtml/verbatim.xsl @@ -0,0 +1,389 @@ +<?xml version="1.0" encoding="ASCII"?> +<!--This file was created automatically by html2xhtml--> +<!--from the HTML stylesheets.--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" +xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="sverb xverb lxslt exsl d" version="1.0"> + +<!-- ******************************************************************** + $Id: verbatim.xsl 9589 2012-09-02 20:52:15Z tom_schr $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- XSLTHL highlighting is turned off by default. See highlighting/README + for instructions on how to turn on XSLTHL --> +<xsl:template name="apply-highlighting"> + <xsl:apply-templates/> +</xsl:template> + +<lxslt:component prefix="xverb" functions="numberLines"/> + +<xsl:template match="d:programlisting|d:screen|d:synopsis"> + <xsl:param name="suppress-numbers" select="'0'"/> + + <xsl:call-template name="anchor"/> + + <xsl:variable name="div.element">pre</xsl:variable> + + <xsl:if test="$shade.verbatim != 0"> + <xsl:message> + <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text> + <xsl:text>Use CSS instead,</xsl:text> + </xsl:message> + <xsl:message> + <xsl:text>for example: pre.</xsl:text> + <xsl:value-of select="local-name(.)"/> + <xsl:text> { background-color: #E0E0E0; }</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'"> + <xsl:variable name="rtf"> + <xsl:choose> + <xsl:when test="$highlight.source != 0"> + <xsl:call-template name="apply-highlighting"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:element name="{$div.element}" namespace="http://www.w3.org/1999/xhtml"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:if test="@width != ''"> + <xsl:attribute name="width"> + <xsl:value-of select="@width"/> + </xsl:attribute> + </xsl:if> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </xsl:element> + </xsl:when> + <xsl:otherwise> + <xsl:element name="{$div.element}" namespace="http://www.w3.org/1999/xhtml"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:if test="@width != ''"> + <xsl:attribute name="width"> + <xsl:value-of select="@width"/> + </xsl:attribute> + </xsl:if> + <xsl:choose> + <xsl:when test="$highlight.source != 0"> + <xsl:call-template name="apply-highlighting"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:element> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:literallayout"> + <xsl:param name="suppress-numbers" select="'0'"/> + + <xsl:variable name="rtf"> + <xsl:apply-templates/> + </xsl:variable> + + <xsl:if test="$shade.verbatim != 0 and @class='monospaced'"> + <xsl:message> + <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text> + <xsl:text>Use CSS instead,</xsl:text> + </xsl:message> + <xsl:message> + <xsl:text>for example: pre.</xsl:text> + <xsl:value-of select="local-name(.)"/> + <xsl:text> { background-color: #E0E0E0; }</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'"> + <xsl:choose> + <xsl:when test="@class='monospaced'"> + <pre> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </pre> + </xsl:when> + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <p> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </p> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="@class='monospaced'"> + <pre> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:copy-of select="$rtf"/> + </pre> + </xsl:when> + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <p> + <xsl:call-template name="make-verbatim"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </p> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:address"> + <xsl:param name="suppress-numbers" select="'0'"/> + + <xsl:variable name="rtf"> + <xsl:apply-templates/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <p> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </p> + </div> + </xsl:when> + + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <p> + <xsl:call-template name="make-verbatim"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </p> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="number.rtf.lines"> + <xsl:param name="rtf" select="''"/> + <xsl:param name="pi.context" select="."/> + + <!-- Save the global values --> + <xsl:variable name="global.linenumbering.everyNth" select="$linenumbering.everyNth"/> + + <xsl:variable name="global.linenumbering.separator" select="$linenumbering.separator"/> + + <xsl:variable name="global.linenumbering.width" select="$linenumbering.width"/> + + <!-- Extract the <?dbhtml linenumbering.*?> PI values --> + <xsl:variable name="pi.linenumbering.everyNth"> + <xsl:call-template name="pi.dbhtml_linenumbering.everyNth"> + <xsl:with-param name="node" select="$pi.context"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="pi.linenumbering.separator"> + <xsl:call-template name="pi.dbhtml_linenumbering.separator"> + <xsl:with-param name="node" select="$pi.context"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="pi.linenumbering.width"> + <xsl:call-template name="pi.dbhtml_linenumbering.width"> + <xsl:with-param name="node" select="$pi.context"/> + </xsl:call-template> + </xsl:variable> + + <!-- Construct the 'in-context' values --> + <xsl:variable name="linenumbering.everyNth"> + <xsl:choose> + <xsl:when test="$pi.linenumbering.everyNth != ''"> + <xsl:value-of select="$pi.linenumbering.everyNth"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$global.linenumbering.everyNth"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="linenumbering.separator"> + <xsl:choose> + <xsl:when test="$pi.linenumbering.separator != ''"> + <xsl:value-of select="$pi.linenumbering.separator"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$global.linenumbering.separator"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="linenumbering.width"> + <xsl:choose> + <xsl:when test="$pi.linenumbering.width != ''"> + <xsl:value-of select="$pi.linenumbering.width"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$global.linenumbering.width"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="linenumbering.startinglinenumber"> + <xsl:choose> + <xsl:when test="$pi.context/@startinglinenumber"> + <xsl:value-of select="$pi.context/@startinglinenumber"/> + </xsl:when> + <xsl:when test="$pi.context/@continuation='continues'"> + <xsl:variable name="lastLine"> + <xsl:choose> + <xsl:when test="$pi.context/self::d:programlisting"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" select="preceding::d:programlisting[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$pi.context/self::d:screen"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" select="preceding::d:screen[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$pi.context/self::d:literallayout"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" select="preceding::d:literallayout[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$pi.context/self::d:address"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" select="preceding::d:address[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$pi.context/self::d:synopsis"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" select="preceding::d:synopsis[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Unexpected verbatim environment: </xsl:text> + <xsl:value-of select="local-name($pi.context)"/> + </xsl:message> + <xsl:value-of select="0"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:value-of select="$lastLine + 1"/> + </xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="function-available('sverb:numberLines')"> + <xsl:copy-of select="sverb:numberLines($rtf)"/> + </xsl:when> + <xsl:when test="function-available('xverb:numberLines')"> + <xsl:copy-of select="xverb:numberLines($rtf)"/> + </xsl:when> + <xsl:otherwise> + <xsl:message terminate="yes"> + <xsl:text>No numberLines function available.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="make-verbatim"> + <xsl:param name="rtf"/> + + <!-- I want to make this RTF verbatim. There are two possibilities: either + I have access to the exsl:node-set extension function and I can "do it right" + or I have to rely on CSS. --> + + <xsl:choose> + <xsl:when test="$exsl.node.set.available != 0"> + <xsl:apply-templates select="exsl:node-set($rtf)" mode="make.verbatim.mode"/> + </xsl:when> + <xsl:otherwise> + <span style="white-space: pre;"> + <xsl:copy-of select="$rtf"/> + </span> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ======================================================================== --> + +<xsl:template name="lastLineNumber"> + <xsl:param name="listings"/> + <xsl:param name="number" select="0"/> + + <xsl:variable name="lines"> + <xsl:call-template name="countLines"> + <xsl:with-param name="listing" select="string($listings[1])"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="not($listings)"> + <xsl:value-of select="$number"/> + </xsl:when> + <xsl:when test="$listings[1]/@startinglinenumber"> + <xsl:value-of select="$number + $listings[1]/@startinglinenumber + $lines - 1"/> + </xsl:when> + <xsl:when test="$listings[1]/@continuation='continues'"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" select="$listings[position() > 1]"/> + <xsl:with-param name="number" select="$number + $lines"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$lines"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="countLines"> + <xsl:param name="listing"/> + <xsl:param name="count" select="1"/> + + <xsl:choose> + <xsl:when test="contains($listing, ' ')"> + <xsl:call-template name="countLines"> + <xsl:with-param name="listing" select="substring-after($listing, ' ')"/> + <xsl:with-param name="count" select="$count + 1"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$count"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml/xref.xsl b/DOCBOOK/xhtml/xref.xsl new file mode 100755 index 0000000..02fb1ad --- /dev/null +++ b/DOCBOOK/xhtml/xref.xsl @@ -0,0 +1,1257 @@ +<?xml version="1.0" encoding="ASCII"?> +<!--This file was created automatically by html2xhtml--> +<!--from the HTML stylesheets.--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" +xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" xmlns:exsl="http://exslt.org/common" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="suwl exsl xlink d" version="1.0"> + +<!-- ******************************************************************** + $Id: xref.xsl 9713 2013-01-22 22:08:30Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- Use internal variable for olink xlink role for consistency --> +<xsl:variable name="xolink.role">http://docbook.org/xlink/role/olink</xsl:variable> + +<!-- ==================================================================== --> + +<xsl:template match="d:anchor"> + <xsl:choose> + <xsl:when test="$generate.id.attributes = 0"> + <xsl:call-template name="anchor"/> + </xsl:when> + <xsl:otherwise> + <span> + <xsl:call-template name="id.attribute"/> + </span> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="d:xref" name="xref"> + <xsl:param name="xhref" select="@xlink:href"/> + <!-- is the @xlink:href a local idref link? --> + <xsl:param name="xlink.idref"> + <xsl:if test="starts-with($xhref,'#') and (not(contains($xhref,'(')) or starts-with($xhref, '#xpointer(id('))"> + <xsl:call-template name="xpointer.idref"> + <xsl:with-param name="xpointer" select="$xhref"/> + </xsl:call-template> + </xsl:if> + </xsl:param> + <xsl:param name="xlink.targets" select="key('id',$xlink.idref)"/> + <xsl:param name="linkend.targets" select="key('id',@linkend)"/> + <xsl:param name="target" select="($xlink.targets | $linkend.targets)[1]"/> + + <xsl:variable name="xrefstyle"> + <xsl:choose> + <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0"> + <xsl:value-of select="@role"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@xrefstyle"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:call-template name="anchor"/> + + <xsl:variable name="content"> + <xsl:choose> + + <xsl:when test="@endterm"> + <xsl:variable name="etargets" select="key('id',@endterm)"/> + <xsl:variable name="etarget" select="$etargets[1]"/> + <xsl:choose> + <xsl:when test="count($etarget) = 0"> + <xsl:message> + <xsl:value-of select="count($etargets)"/> + <xsl:text>Endterm points to nonexistent ID: </xsl:text> + <xsl:value-of select="@endterm"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$etarget" mode="endterm"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + + <xsl:when test="$target/@xreflabel"> + <xsl:call-template name="xref.xreflabel"> + <xsl:with-param name="target" select="$target"/> + </xsl:call-template> + </xsl:when> + + <xsl:when test="$target"> + <xsl:if test="not(parent::d:citation)"> + <xsl:apply-templates select="$target" mode="xref-to-prefix"/> + </xsl:if> + + <xsl:apply-templates select="$target" mode="xref-to"> + <xsl:with-param name="referrer" select="."/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + </xsl:apply-templates> + + <xsl:if test="not(parent::d:citation)"> + <xsl:apply-templates select="$target" mode="xref-to-suffix"/> + </xsl:if> + </xsl:when> + + <xsl:otherwise> + <xsl:message> + <xsl:text>ERROR: xref linking to </xsl:text> + <xsl:value-of select="@linkend|@xlink:href"/> + <xsl:text> has no generated link text.</xsl:text> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:call-template name="simple.xlink"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + +</xsl:template> + +<!-- ==================================================================== --> + +<!-- biblioref handled largely like an xref --> +<!-- To be done: add support for begin, end, and units attributes --> +<xsl:template match="d:biblioref"> + <xsl:variable name="targets" select="key('id',@linkend)"/> + <xsl:variable name="target" select="$targets[1]"/> + <xsl:variable name="refelem" select="local-name($target)"/> + + <xsl:call-template name="check.id.unique"> + <xsl:with-param name="linkend" select="@linkend"/> + </xsl:call-template> + + <xsl:call-template name="anchor"/> + + <xsl:choose> + <xsl:when test="count($target) = 0"> + <xsl:message> + <xsl:text>XRef to nonexistent id: </xsl:text> + <xsl:value-of select="@linkend"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + + <xsl:when test="@endterm"> + <xsl:variable name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$target"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="etargets" select="key('id',@endterm)"/> + <xsl:variable name="etarget" select="$etargets[1]"/> + <xsl:choose> + <xsl:when test="count($etarget) = 0"> + <xsl:message> + <xsl:value-of select="count($etargets)"/> + <xsl:text>Endterm points to nonexistent ID: </xsl:text> + <xsl:value-of select="@endterm"/> + </xsl:message> + <a href="{$href}"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:text>???</xsl:text> + </a> + </xsl:when> + <xsl:otherwise> + <a href="{$href}"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:apply-templates select="$etarget" mode="endterm"/> + </a> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + + <xsl:when test="$target/@xreflabel"> + <a> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$target"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="xref.xreflabel"> + <xsl:with-param name="target" select="$target"/> + </xsl:call-template> + </a> + </xsl:when> + + <xsl:otherwise> + <xsl:variable name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$target"/> + </xsl:call-template> + </xsl:variable> + + <xsl:if test="not(parent::d:citation)"> + <xsl:apply-templates select="$target" mode="xref-to-prefix"/> + </xsl:if> + + <a href="{$href}"> + <xsl:apply-templates select="." mode="class.attribute"/> + <xsl:if test="$target/d:title or $target/d:info/d:title"> + <xsl:attribute name="title"> + <xsl:apply-templates select="$target" mode="xref-title"/> + </xsl:attribute> + </xsl:if> + <xsl:apply-templates select="$target" mode="xref-to"> + <xsl:with-param name="referrer" select="."/> + <xsl:with-param name="xrefstyle"> + <xsl:choose> + <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0"> + <xsl:value-of select="@role"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@xrefstyle"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </a> + + <xsl:if test="not(parent::d:citation)"> + <xsl:apply-templates select="$target" mode="xref-to-suffix"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="endterm"> + <!-- Process the children of the endterm element --> + <xsl:variable name="endterm"> + <xsl:apply-templates select="child::node()" mode="no.anchor.mode"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$exsl.node.set.available != 0"> + <xsl:apply-templates select="exsl:node-set($endterm)" mode="remove-ids"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$endterm"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="remove-ids"> + <xsl:choose> + <!-- handle html or xhtml --> + <xsl:when test="local-name(.) = 'a' and (namespace-uri(.) = '' or namespace-uri(.) = 'http://www.w3.org/1999/xhtml')"> + <xsl:choose> + <xsl:when test="(@name and count(@*) = 1) or (@id and count(@*) = 1) or (@xml:id and count(@*) = 1) or (@xml:id and @name and count(@*) = 2) or (@id and @name and count(@*) = 2)"> + <xsl:message>suppress anchor</xsl:message> + <!-- suppress the whole thing --> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:for-each select="@*"> + <xsl:choose> + <xsl:when test="local-name(.) != 'name' and local-name(.) != 'id'"> + <xsl:copy/> + </xsl:when> + <xsl:otherwise> + <xsl:message>removing <xsl:value-of select="local-name(.)"/></xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:copy> + <xsl:apply-templates mode="remove-ids"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:for-each select="@*"> + <xsl:choose> + <xsl:when test="local-name(.) != 'id'"> + <xsl:copy/> + </xsl:when> + <xsl:otherwise> + <xsl:message>removing <xsl:value-of select="local-name(.)"/></xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + <xsl:apply-templates mode="remove-ids"/> + </xsl:copy> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="xref-to-prefix"/> +<xsl:template match="*" mode="xref-to-suffix"/> + +<xsl:template match="*" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:if test="$verbose"> + <xsl:message> + <xsl:text>Don't know what gentext to create for xref to: "</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:text>", ("</xsl:text> + <xsl:value-of select="(@id|@xml:id)[1]"/> + <xsl:text>")</xsl:text> + </xsl:message> + </xsl:if> + <xsl:text>???</xsl:text> +</xsl:template> + +<xsl:template match="d:title" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <!-- if you xref to a title, xref to the parent... --> + <xsl:choose> + <!-- FIXME: how reliable is this? --> + <xsl:when test="contains(local-name(parent::*), 'info')"> + <xsl:apply-templates select="parent::*[2]" mode="xref-to"> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="parent::*" mode="xref-to"> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:abstract|d:authorblurb|d:personblurb|d:bibliodiv|d:bibliomset |d:biblioset|d:blockquote|d:calloutlist|d:caution|d:colophon |d:constraintdef|d:formalpara|d:glossdiv|d:important|d:indexdiv |d:itemizedlist|d:legalnotice|d:lot|d:msg|d:msgexplan|d:msgmain |d:msgrel|d:msgset|d:msgsub|d:note|d:orderedlist|d:partintro |d:productionset|d:qandadiv|d:refsynopsisdiv|d:screenshot|d:segmentedlist |d:set|d:setindex|d:sidebar|d:tip|d:toc|d:variablelist|d:warning" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <!-- catch-all for things with (possibly optional) titles --> + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:author|d:editor|d:othercredit|d:personname" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:call-template name="person.name"/> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:call-template name="person.name.list"/> +</xsl:template> + +<xsl:template match="d:figure|d:example|d:table|d:equation" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:procedure" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:task" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:cmdsynopsis" mode="xref-to"> + <xsl:apply-templates select="(.//d:command)[1]" mode="xref"/> +</xsl:template> + +<xsl:template match="d:funcsynopsis" mode="xref-to"> + <xsl:apply-templates select="(.//d:function)[1]" mode="xref"/> +</xsl:template> + +<xsl:template match="d:dedication|d:acknowledgements|d:preface|d:chapter|d:appendix|d:article" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:bibliography" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:biblioentry|d:bibliomixed" mode="xref-to-prefix"> + <xsl:text>[</xsl:text> +</xsl:template> + +<xsl:template match="d:biblioentry|d:bibliomixed" mode="xref-to-suffix"> + <xsl:text>]</xsl:text> +</xsl:template> + +<xsl:template match="d:biblioentry|d:bibliomixed" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <!-- handles both biblioentry and bibliomixed --> + <xsl:choose> + <xsl:when test="string(.) = ''"> + <xsl:variable name="bib" select="document($bibliography.collection,.)"/> + <xsl:variable name="id" select="(@id|@xml:id)[1]"/> + <xsl:variable name="entry" select="$bib/d:bibliography/ *[@id=$id or @xml:id=$id][1]"/> + <xsl:choose> + <xsl:when test="$entry"> + <xsl:choose> + <xsl:when test="$bibliography.numbered != 0"> + <xsl:number from="d:bibliography" count="d:biblioentry|d:bibliomixed" level="any" format="1"/> + </xsl:when> + <xsl:when test="local-name($entry/*[1]) = 'abbrev'"> + <xsl:apply-templates select="$entry/*[1]" mode="no.anchor.mode"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>No bibliography entry: </xsl:text> + <xsl:value-of select="$id"/> + <xsl:text> found in </xsl:text> + <xsl:value-of select="$bibliography.collection"/> + </xsl:message> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$bibliography.numbered != 0"> + <xsl:number from="d:bibliography" count="d:biblioentry|d:bibliomixed" level="any" format="1"/> + </xsl:when> + <xsl:when test="local-name(*[1]) = 'abbrev'"> + <xsl:apply-templates select="*[1]" mode="no.anchor.mode"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:glossary" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:glossentry" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + <xsl:choose> + <xsl:when test="$glossentry.show.acronym = 'primary'"> + <xsl:choose> + <xsl:when test="d:acronym|d:abbrev"> + <xsl:apply-templates select="(d:acronym|d:abbrev)[1]" mode="no.anchor.mode"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="d:glossterm[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="d:glossterm[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:glossterm|d:firstterm" mode="xref-to"> + <xsl:apply-templates mode="no.anchor.mode"/> +</xsl:template> + +<xsl:template match="d:index" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:listitem" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:section|d:simplesect |d:sect1|d:sect2|d:sect3|d:sect4|d:sect5 |d:refsect1|d:refsect2|d:refsect3|d:refsection" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + <!-- FIXME: What about "in Chapter X"? --> +</xsl:template> + +<xsl:template match="d:topic" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:bridgehead" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + <!-- FIXME: What about "in Chapter X"? --> +</xsl:template> + +<xsl:template match="d:qandaset" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:qandaentry" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="d:question[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:question|d:answer" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:choose> + <xsl:when test="string-length(d:label) != 0"> + <xsl:apply-templates select="." mode="label.markup"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:part|d:reference" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:refentry" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:choose> + <xsl:when test="d:refmeta/d:refentrytitle"> + <xsl:apply-templates select="d:refmeta/d:refentrytitle" mode="no.anchor.mode"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="d:refnamediv/d:refname[1]" mode="no.anchor.mode"/> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates select="d:refmeta/d:manvolnum" mode="no.anchor.mode"/> +</xsl:template> + +<xsl:template match="d:refnamediv" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="d:refname[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:refname" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates mode="xref-to"/> +</xsl:template> + +<xsl:template match="d:step" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Step'"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:apply-templates select="." mode="number"/> +</xsl:template> + +<xsl:template match="d:varlistentry" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="d:term[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="d:primary|d:secondary|d:tertiary" mode="xref-to"> + <xsl:value-of select="."/> +</xsl:template> + +<xsl:template match="d:indexterm" mode="xref-to"> + <xsl:value-of select="d:primary"/> +</xsl:template> + +<xsl:template match="d:varlistentry/d:term" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:apply-templates mode="no.anchor.mode"/> +</xsl:template> + +<xsl:template match="d:co" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:apply-templates select="." mode="callout-bug"/> +</xsl:template> + +<xsl:template match="d:area|d:areaset" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:call-template name="callout-bug"> + <xsl:with-param name="conum"> + <xsl:apply-templates select="." mode="conumber"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template match="d:book" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<!-- These are elements for which no link text exists, so an xref to one + uses the xrefstyle attribute if specified, or if not it falls back + to the container element's link text --> +<xsl:template match="d:para|d:phrase|d:simpara|d:anchor|d:quote" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:variable name="context" select="(ancestor::d:simplesect |ancestor::d:section |ancestor::d:sect1 |ancestor::d:sect2 |ancestor::d:sect3 |ancestor::d:sect4 |ancestor::d:sect5 |ancestor::d:topic |ancestor::d:refsection |ancestor::d:refsect1 |ancestor::d:refsect2 |ancestor::d:refsect3 |ancestor::d:chapter |ancestor::d:appendix |ancestor::d:preface |ancestor::d:partintro |ancestor::d:dedication |ancestor::d:acknowledgements |ancestor::d:colophon |ancestor::d:bibliography |ancestor::d:index |ancestor::d:glossary |ancestor::d:glossentry |ancestor::d:listitem |ancestor::d:varlistentry)[last()]"/> + + <xsl:choose> + <xsl:when test="$xrefstyle != ''"> + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$context" mode="xref-to"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="xref-title"> + <xsl:variable name="title"> + <xsl:apply-templates select="." mode="object.title.markup"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template match="d:author" mode="xref-title"> + <xsl:variable name="title"> + <xsl:call-template name="person.name"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template match="d:authorgroup" mode="xref-title"> + <xsl:variable name="title"> + <xsl:call-template name="person.name.list"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template match="d:cmdsynopsis" mode="xref-title"> + <xsl:variable name="title"> + <xsl:apply-templates select="(.//d:command)[1]" mode="xref"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template match="d:funcsynopsis" mode="xref-title"> + <xsl:variable name="title"> + <xsl:apply-templates select="(.//d:function)[1]" mode="xref"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template match="d:biblioentry|d:bibliomixed" mode="xref-title"> + <!-- handles both biblioentry and bibliomixed --> + <xsl:variable name="title"> + <xsl:text>[</xsl:text> + <xsl:choose> + <xsl:when test="local-name(*[1]) = 'abbrev'"> + <xsl:apply-templates select="*[1]" mode="no.anchor.mode"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>]</xsl:text> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template match="d:step" mode="xref-title"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Step'"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:apply-templates select="." mode="number"/> +</xsl:template> + +<xsl:template match="d:step[not(./d:title)]" mode="title.markup"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Step'"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:apply-templates select="." mode="number"/> +</xsl:template> + +<xsl:template match="d:co" mode="xref-title"> + <xsl:variable name="title"> + <xsl:apply-templates select="." mode="callout-bug"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="d:link" name="link"> + <xsl:param name="linkend" select="@linkend"/> + <xsl:param name="a.target"/> + <xsl:param name="xhref" select="@xlink:href"/> + + <xsl:variable name="content"> + <xsl:call-template name="anchor"/> + <xsl:choose> + <xsl:when test="count(child::node()) > 0"> + <!-- If it has content, use it --> + <xsl:apply-templates mode="no.anchor.mode"/> + </xsl:when> + <!-- else look for an endterm --> + <xsl:when test="@endterm"> + <xsl:variable name="etargets" select="key('id',@endterm)"/> + <xsl:variable name="etarget" select="$etargets[1]"/> + <xsl:choose> + <xsl:when test="count($etarget) = 0"> + <xsl:message> + <xsl:value-of select="count($etargets)"/> + <xsl:text>Endterm points to nonexistent ID: </xsl:text> + <xsl:value-of select="@endterm"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$etarget" mode="endterm"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <!-- Use the xlink:href if no other text --> + <xsl:when test="@xlink:href"> + <xsl:value-of select="@xlink:href"/> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Link element has no content and no Endterm. </xsl:text> + <xsl:text>Nothing to show in the link to </xsl:text> + <xsl:value-of select="(@xlink:href|@linkend)[1]"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:call-template name="simple.xlink"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="linkend" select="$linkend"/> + <xsl:with-param name="content" select="$content"/> + <xsl:with-param name="a.target" select="$a.target"/> + <xsl:with-param name="xhref" select="$xhref"/> + </xsl:call-template> + +</xsl:template> + +<xsl:template match="d:ulink" name="ulink"> + <xsl:param name="url" select="@url"/> + <xsl:variable name="link"> + <a> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="@id or @xml:id"> + <xsl:choose> + <xsl:when test="$generate.id.attributes = 0"> + <xsl:attribute name="id"> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="id"> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:attribute> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + <xsl:attribute name="href"><xsl:value-of select="$url"/></xsl:attribute> + <xsl:if test="$ulink.target != ''"> + <xsl:attribute name="target"> + <xsl:value-of select="$ulink.target"/> + </xsl:attribute> + </xsl:if> + <xsl:choose> + <xsl:when test="count(child::node())=0"> + <xsl:value-of select="$url"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="no.anchor.mode"/> + </xsl:otherwise> + </xsl:choose> + </a> + </xsl:variable> + + <xsl:choose> + <xsl:when test="function-available('suwl:unwrapLinks')"> + <xsl:copy-of select="suwl:unwrapLinks($link)"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$link"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:olink" name="olink"> + <!-- olink content may be passed in from xlink olink --> + <xsl:param name="content" select="NOTANELEMENT"/> + + <xsl:call-template name="anchor"/> + + <xsl:choose> + <!-- olinks resolved by stylesheet and target database --> + <xsl:when test="@targetdoc or @targetptr or (@xlink:role=$xolink.role and contains(@xlink:href, '#') )"> + + <xsl:variable name="targetdoc.att"> + <xsl:choose> + <xsl:when test="@targetdoc != ''"> + <xsl:value-of select="@targetdoc"/> + </xsl:when> + <xsl:when test="@xlink:role=$xolink.role and contains(@xlink:href, '#')"> + <xsl:value-of select="substring-before(@xlink:href, '#')"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="targetptr.att"> + <xsl:choose> + <xsl:when test="@targetptr != ''"> + <xsl:value-of select="@targetptr"/> + </xsl:when> + <xsl:when test="@xlink:role=$xolink.role and contains(@xlink:href, '#')"> + <xsl:value-of select="substring-after(@xlink:href, '#')"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="olink.lang"> + <xsl:call-template name="l10n.language"> + <xsl:with-param name="xref-context" select="true()"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="target.database.filename"> + <xsl:call-template name="select.target.database"> + <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> + <xsl:with-param name="targetptr.att" select="$targetptr.att"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="target.database" select="document($target.database.filename,/)"/> + + <xsl:if test="$olink.debug != 0"> + <xsl:message> + <xsl:text>Olink debug: root element of target.database '</xsl:text> + <xsl:value-of select="$target.database.filename"/> + <xsl:text>' is '</xsl:text> + <xsl:value-of select="local-name($target.database/*[1])"/> + <xsl:text>'.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:variable name="olink.key"> + <xsl:call-template name="select.olink.key"> + <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> + <xsl:with-param name="targetptr.att" select="$targetptr.att"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:variable> + + <xsl:if test="string-length($olink.key) = 0"> + <xsl:message> + <xsl:text>Error: unresolved olink: </xsl:text> + <xsl:text>targetdoc/targetptr = '</xsl:text> + <xsl:value-of select="$targetdoc.att"/> + <xsl:text>/</xsl:text> + <xsl:value-of select="$targetptr.att"/> + <xsl:text>'.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:variable name="href"> + <xsl:call-template name="make.olink.href"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="hottext"> + <xsl:choose> + <xsl:when test="string-length($content) != 0"> + <xsl:copy-of select="$content"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="olink.hottext"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="olink.docname.citation"> + <xsl:call-template name="olink.document.citation"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="target.database" select="$target.database"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="olink.page.citation"> + <xsl:call-template name="olink.page.citation"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="target.database" select="$target.database"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$href != ''"> + <a href="{$href}"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="id.attribute"/> + <xsl:copy-of select="$hottext"/> + </a> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> + </xsl:when> + <xsl:otherwise> + <span class="olink"> + <xsl:call-template name="id.attribute"/> + <xsl:copy-of select="$hottext"/> + </span> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> + </xsl:otherwise> + </xsl:choose> + + </xsl:when> + + <xsl:otherwise> + <xsl:choose> + <xsl:when test="@linkmode or @targetdocent or @localinfo"> + <!-- old olink mechanism --> + <xsl:message> + <xsl:text>ERROR: olink using obsolete attributes </xsl:text> + <xsl:text>@linkmode, @targetdocent, @localinfo are </xsl:text> + <xsl:text>not supported.</xsl:text> + </xsl:message> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>ERROR: olink is missing linking attributes.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="pagenumber.markup"> + <!-- no-op in HTML --> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="xref.xreflabel"> + <!-- called to process an xreflabel...you might use this to make --> + <!-- xreflabels come out in the right font for different targets, --> + <!-- for example. --> + <xsl:param name="target" select="."/> + <xsl:value-of select="$target/@xreflabel"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="d:title" mode="xref"> + <xsl:apply-templates mode="no.anchor.mode"/> +</xsl:template> + +<xsl:template match="d:command" mode="xref"> + <xsl:call-template name="inline.boldseq"/> +</xsl:template> + +<xsl:template match="d:function" mode="xref"> + <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="insert.title.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="title"/> + + <xsl:choose> + <xsl:when test="$purpose = 'xref'"> + <xsl:copy-of select="$title"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$title"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="d:chapter|d:appendix" mode="insert.title.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="title"/> + + <xsl:choose> + <xsl:when test="$purpose = 'xref'"> + <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform"> + <xsl:copy-of select="$title"/> + </em> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$title"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="insert.subtitle.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="subtitle"/> + + <xsl:copy-of select="$subtitle"/> +</xsl:template> + +<xsl:template match="*" mode="insert.label.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="label"/> + + <xsl:copy-of select="$label"/> +</xsl:template> + +<xsl:template match="*" mode="insert.pagenumber.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="pagenumber"/> + + <xsl:copy-of select="$pagenumber"/> +</xsl:template> + +<xsl:template match="*" mode="insert.direction.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="direction"/> + + <xsl:copy-of select="$direction"/> +</xsl:template> + +<xsl:template match="*" mode="insert.olink.docname.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="docname"/> + + <span class="olinkdocname"> + <xsl:copy-of select="$docname"/> + </span> + +</xsl:template> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml5/README b/DOCBOOK/xhtml5/README new file mode 100755 index 0000000..c0db6b7 --- /dev/null +++ b/DOCBOOK/xhtml5/README @@ -0,0 +1,61 @@ +DocBook stylesheets for HTML5 output +============================================= + +This directory contains XSL stylesheets +for generating HTML5 output from DocBook content. +For information on HTML5, see: + +http://dev.w3.org/html5/spec/Overview.html + +Note that there is no schema available for HTML5, by design. + +The output of these stylesheets is the XML serialization of +HTML5. There is no provision for generating the HTML +serialization of HTML5 with these stylesheets. + +These HTML5 stylesheets are also used by the EPUB3 +stylesheets included in this distribution. + +These stylesheets are customizations of the +existing stylesheets in the "xhtml/" directory. +Using a customization layer enables the HTML5 +stylesheets to inherit all the features of the +XHTML stylesheets while making the minimum changes +for them to produce valid HTML5. + +If you are processing DocBook 5 document, you should use +the namespaced version of the stylesheets, with "-ns-" +in the directory name. + + +Usage +----------- +You should be able to apply any of these stylesheet files +to a DocBook document as with any other DocBook stylesheet: + +xhtml5/docbook.xsl - Single file output. +xhtml5/chunk.xsl - Chunked output. +xhtml5/profile-docbook.xsl - Profiled single file output. +xhtml5/profile-chunk.xsl - Profiled chunk output. +xhtml5/chunkfast.xsl - Chunked output with precomputed chunks. + +Do not attempt to directly use the following two stylesheet files: + +xhtml-docbook.xsl +xhtml-profile-docbook.xsl + +Those are copies of the corresponding files in the +xhtml/ directory, modified to remove the doctype +declarations in the xsl:output elements. They were also +modified to import from the original xhtml/ directory. +They will produce xhtml output, not HTML5 output. +They are imported by the xhtml5 stylesheet files. + +Testing +-------------- + +The HTML5 output of these stylesheets should pass the +W3C online validator, available here: + +http://validator.w3.org/ + diff --git a/DOCBOOK/xhtml5/chunk.xsl b/DOCBOOK/xhtml5/chunk.xsl new file mode 100755 index 0000000..4d047af --- /dev/null +++ b/DOCBOOK/xhtml5/chunk.xsl @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:d="http://docbook.org/ns/docbook" +xmlns:exsl="http://exslt.org/common" + xmlns="http://www.w3.org/1999/xhtml" + exclude-result-prefixes="exsl d" + version="1.0"> + +<!-- $Id: chunk.xsl,v 1.1 2011-09-16 21:43:59 bobs Exp $ --> + +<!-- This is the main driver stylesheet file. It imports or +includes all the components that it needs. --> + +<!-- Import the module that customizes docbook elements --> +<!-- Put any customizations of element content in this module. --> +<xsl:import href="docbook.xsl"/> + +<xsl:import href="../xhtml/chunk-common.xsl"/> + +<xsl:include href="../xhtml/chunk-code.xsl"/> + +<!-- The following module has templates that override the stock + xhtml templates for HTML5 output. + It contains match templates with priority="1" attributes, + and named templates. These override any templates that + handle chunking behavior --> +<xsl:include href="html5-chunk-mods.xsl"/> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml5/chunkfast.xsl b/DOCBOOK/xhtml5/chunkfast.xsl new file mode 100755 index 0000000..6686ab7 --- /dev/null +++ b/DOCBOOK/xhtml5/chunkfast.xsl @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="ASCII"?> +<!--This file was created automatically by html2xhtml--> +<!--from the HTML stylesheets.--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" +xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="cf exsl d"> + +<!-- ******************************************************************** + $Id: chunkfast.xsl,v 1.1 2011-09-16 21:44:00 bobs Exp $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:import href="chunk.xsl"/> +<xsl:param name="chunk.fast" select="1"/> + +<xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/> + +<!-- ==================================================================== --> + +<xsl:template name="process-chunk-element"> + <xsl:choose> + <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0"> + <xsl:variable name="genid" select="generate-id()"/> + + <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/> + + <xsl:variable name="prevdiv" select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/> + <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/> + + <xsl:variable name="nextdiv" select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/> + <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/> + + <xsl:choose> + <xsl:when test="$onechunk != 0 and parent::*"> + <xsl:apply-imports/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="process-chunk"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$onechunk != 0 and not(parent::*)"> + <xsl:call-template name="chunk-all-sections"/> + </xsl:when> + <xsl:when test="$onechunk != 0"> + <xsl:apply-imports/> + </xsl:when> + <xsl:when test="$chunk.first.sections = 0"> + <xsl:call-template name="chunk-first-section-with-parent"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="chunk-all-sections"/> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml5/docbook.css.xml b/DOCBOOK/xhtml5/docbook.css.xml new file mode 100755 index 0000000..9587979 --- /dev/null +++ b/DOCBOOK/xhtml5/docbook.css.xml @@ -0,0 +1,104 @@ +<?xml version="1.0"?> +<style> + +/********************************/ +/* start of styles in block.xsl */ + +.formalpara-title { + font-weight: bold; +} + +div.blockquote-title { + font-weight: bold; + margin-top: 1em; + margin-bottom: 1em; +} + +span.msgmain-title { + font-weight: bold; +} + +span.msgsub-title { + font-weight: bold; +} + +span.msgrel-title { + font-weight: bold; +} + +div.msglevel, div.msgorig, div.msgaud { + margin-top: 1em; + margin-bottom: 1em; +} + +span.msglevel-title, span.msgorig-title, span.msgaud-title { + font-weight: bold; +} + +div.msgexplan { + margin-top: 1em; + margin-bottom: 1em; +} + +span.msgexplan-title { + font-weight: bold; +} + +/* end of styles in block.xsl */ +/********************************/ + +/********************************/ +/* start of styles in autotoc.xsl */ + + +/* end of styles in autotoc.xsl */ +/********************************/ + +/********************************/ +/* start of styles in formal.xsl */ + +div.figure-title { + font-weight: bold; +} + +div.example-title { + font-weight: bold; +} + +div.equation-title { + font-weight: bold; +} + +div.table-title { + font-weight: bold; +} + +div.sidebar-title { + font-weight: bold; +} + + +/* end of styles in formal.xsl */ +/********************************/ + +/********************************/ +/* start of styles in verbatim.xsl */ + +div.programlisting { + white-space: pre; + font-family: monospace; +} + +div.screen { + white-space: pre; + font-family: monospace; +} + +div.synopsis { + white-space: pre; + font-family: monospace; +} + +/* end of styles in verbatim.xsl */ +/********************************/ +</style> diff --git a/DOCBOOK/xhtml5/docbook.xsl b/DOCBOOK/xhtml5/docbook.xsl new file mode 100755 index 0000000..cf87205 --- /dev/null +++ b/DOCBOOK/xhtml5/docbook.xsl @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE xsl:stylesheet [ +]> +<xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:d="http://docbook.org/ns/docbook" +xmlns:exsl="http://exslt.org/common" + xmlns="http://www.w3.org/1999/xhtml" + xmlns:stbl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Table" + xmlns:xtbl="xalan://com.nwalsh.xalan.Table" + xmlns:lxslt="http://xml.apache.org/xslt" + xmlns:ptbl="http://nwalsh.com/xslt/ext/xsltproc/python/Table" + exclude-result-prefixes="exsl stbl xtbl lxslt ptbl d" + version="1.0"> + +<!-- $Id: docbook.xsl,v 1.2 2011-09-18 17:47:28 bobs Exp $ --> +<xsl:import href="xhtml-docbook.xsl"/> +<xsl:include href="html5-element-mods.xsl"/> + +<xsl:output method="xml" encoding="UTF-8" /> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml5/html5-chunk-mods.xsl b/DOCBOOK/xhtml5/html5-chunk-mods.xsl new file mode 100755 index 0000000..ea1e1f7 --- /dev/null +++ b/DOCBOOK/xhtml5/html5-chunk-mods.xsl @@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:d="http://docbook.org/ns/docbook" +xmlns:exsl="http://exslt.org/common" + xmlns="http://www.w3.org/1999/xhtml" + exclude-result-prefixes="exsl d" + version="1.0"> + +<!-- $Id: html5-chunk-mods.xsl,v 1.1 2011-09-16 21:44:00 bobs Exp $ --> + +<!-- call HTML5 header and footer templates for navigation --> +<xsl:template name="chunk-element-content"> + <xsl:param name="prev"/> + <xsl:param name="next"/> + <xsl:param name="nav.context"/> + <xsl:param name="content"> + <xsl:apply-imports/> + </xsl:param> + + <xsl:call-template name="user.preroot"/> + + <html> + <xsl:call-template name="root.attributes"/> + <xsl:call-template name="html.head"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + </xsl:call-template> + + <body> + <xsl:call-template name="body.attributes"/> + + <xsl:call-template name="html5.header.navigation"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/> + </xsl:call-template> + + <xsl:call-template name="user.header.content"/> + + <xsl:copy-of select="$content"/> + + <xsl:call-template name="user.footer.content"/> + + <xsl:call-template name="html5.footer.navigation"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/> + </xsl:call-template> + + </body> + </html> + <xsl:value-of select="$chunk.append"/> +</xsl:template> + +<!-- Add HTML5 <header> wrapper, and convert some attributes to styles --> +<xsl:template name="html5.header.navigation"> + <xsl:param name="prev" select="/d:foo"/> + <xsl:param name="next" select="/d:foo"/> + <xsl:param name="nav.context"/> + + <xsl:variable name="content"> + <header> + <xsl:call-template name="user.header.navigation"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/> + </xsl:call-template> + + <xsl:call-template name="header.navigation"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/> + </xsl:call-template> + </header> + </xsl:variable> + + <!-- And fix up any style atts --> + <xsl:call-template name="convert.styles"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> +</xsl:template> + +<!-- Add HTML5 <footer> wrapper, and convert some attributes to styles --> +<xsl:template name="html5.footer.navigation"> + <xsl:param name="prev" select="/d:foo"/> + <xsl:param name="next" select="/d:foo"/> + <xsl:param name="nav.context"/> + + <xsl:variable name="content"> + <footer> + <xsl:call-template name="user.footer.navigation"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/> + </xsl:call-template> + + <xsl:call-template name="footer.navigation"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/> + </xsl:call-template> + </footer> + </xsl:variable> + + <!-- And fix up any style atts --> + <xsl:call-template name="convert.styles"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> +</xsl:template> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml5/html5-element-mods.xsl b/DOCBOOK/xhtml5/html5-element-mods.xsl new file mode 100755 index 0000000..71f0a4e --- /dev/null +++ b/DOCBOOK/xhtml5/html5-element-mods.xsl @@ -0,0 +1,791 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY % common.entities SYSTEM "../common/entities.ent"> +%common.entities; +]> +<xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:d="http://docbook.org/ns/docbook" +xmlns:exsl="http://exslt.org/common" + xmlns="http://www.w3.org/1999/xhtml" + xmlns:stbl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Table" + xmlns:xtbl="xalan://com.nwalsh.xalan.Table" + xmlns:lxslt="http://xml.apache.org/xslt" + xmlns:ptbl="http://nwalsh.com/xslt/ext/xsltproc/python/Table" + exclude-result-prefixes="exsl stbl xtbl lxslt ptbl d" + version="1.0"> + +<!-- $Id: html5-element-mods.xsl,v 1.2 2011-09-18 17:47:28 bobs Exp $ --> + +<!--==============================================================--> +<!-- DocBook XSL Parameter settings --> +<!--==============================================================--> +<!-- Set these to blank so can output special HTML5 empty DOCTYPE --> +<xsl:param name="chunker.output.doctype-system" select="''"/> +<xsl:param name="chunker.output.doctype-public" select="''"/> + +<xsl:param name="table.borders.with.css" select="1"/> +<xsl:param name="html.ext">.xhtml</xsl:param> +<xsl:param name="toc.list.type">ul</xsl:param> +<xsl:param name="css.decoration" select="1"/> +<xsl:param name="make.clean.html" select="1"/> +<xsl:param name="generate.id.attributes" select="1"/> +<xsl:variable name="div.element">section</xsl:variable> + +<!--==============================================================--> +<!-- Customized templates --> +<!--==============================================================--> + +<!-- HTML5: needs special doctype --> +<xsl:template name="user.preroot"> + <xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text> +</xsl:template> + +<!-- HTML5: Replace HTML acronum with abbr for HTML 5 --> +<xsl:template match="d:acronym"> + <xsl:call-template name="inline.charseq"> + <xsl:with-param name="wrapper-name">abbr</xsl:with-param> + </xsl:call-template> +</xsl:template> + +<!-- HTML5: replace border="0" with border="" --> +<!-- HTML5: No @summary allowed --> +<!-- HTML5: replace many table atts with CSS styles --> +<xsl:template match="d:tgroup" name="tgroup"> + <xsl:if test="not(@cols) or @cols = '' or string(number(@cols)) = 'NaN'"> + <xsl:message terminate="yes"> + <xsl:text>Error: CALS tables must specify the number of columns.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:variable name="summary"> + <xsl:call-template name="pi.dbhtml_table-summary"/> + </xsl:variable> + + <xsl:variable name="cellspacing"> + <xsl:call-template name="pi.dbhtml_cellspacing"/> + </xsl:variable> + + <xsl:variable name="cellpadding"> + <xsl:call-template name="pi.dbhtml_cellpadding"/> + </xsl:variable> + + <!-- First generate colgroup with attributes --> + <xsl:variable name="colgroup.with.attributes"> + <colgroup> + <xsl:call-template name="generate.colgroup"> + <xsl:with-param name="cols" select="@cols"/> + </xsl:call-template> + </colgroup> + </xsl:variable> + + <!-- then modify colgroup attributes with extension --> + <xsl:variable name="colgroup.with.extension"> + <xsl:choose> + <xsl:when test="$use.extensions != 0 + and $tablecolumns.extension != 0"> + <xsl:choose> + <xsl:when test="function-available('stbl:adjustColumnWidths')"> + <xsl:copy-of select="stbl:adjustColumnWidths($colgroup.with.attributes)"/> + </xsl:when> + <xsl:when test="function-available('xtbl:adjustColumnWidths')"> + <xsl:copy-of select="xtbl:adjustColumnWidths($colgroup.with.attributes)"/> + </xsl:when> + <xsl:when test="function-available('ptbl:adjustColumnWidths')"> + <xsl:copy-of select="ptbl:adjustColumnWidths($colgroup.with.attributes)"/> + </xsl:when> + <xsl:otherwise> + <xsl:message terminate="yes"> + <xsl:text>No adjustColumnWidths function available.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$colgroup.with.attributes"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <!-- Now convert to @style --> + <xsl:variable name="colgroup"> + <xsl:call-template name="colgroup.with.style"> + <xsl:with-param name="colgroup" select="$colgroup.with.extension"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="explicit.table.width"> + <xsl:call-template name="pi.dbhtml_table-width"> + <xsl:with-param name="node" select=".."/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="table.width.candidate"> + <xsl:choose> + <xsl:when test="$explicit.table.width != ''"> + <xsl:value-of select="$explicit.table.width"/> + </xsl:when> + <xsl:when test="$default.table.width = ''"> + <xsl:text>100%</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$default.table.width"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + + <xsl:variable name="table.width"> + <xsl:if test="$default.table.width != '' + or $explicit.table.width != ''"> + <xsl:choose> + <xsl:when test="contains($table.width.candidate, '%')"> + <xsl:value-of select="$table.width.candidate"/> + </xsl:when> + <xsl:when test="$use.extensions != 0 + and $tablecolumns.extension != 0"> + <xsl:choose> + <xsl:when test="function-available('stbl:convertLength')"> + <xsl:value-of select="stbl:convertLength($table.width.candidate)"/> + </xsl:when> + <xsl:when test="function-available('xtbl:convertLength')"> + <xsl:value-of select="xtbl:convertLength($table.width.candidate)"/> + </xsl:when> + <xsl:otherwise> + <xsl:message terminate="yes"> + <xsl:text>No convertLength function available.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$table.width.candidate"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:variable> + + <!-- assemble a table @style --> + <xsl:variable name="table.style"> + + <xsl:if test="$cellspacing != '' or $html.cellspacing != ''"> + <xsl:text>cellspacing: </xsl:text> + <xsl:choose> + <xsl:when test="$cellspacing != ''"> + <xsl:value-of select="$cellspacing"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$html.cellspacing"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>; </xsl:text> + </xsl:if> + + <xsl:if test="$cellpadding != '' or $html.cellpadding != ''"> + <xsl:text>cellpadding: </xsl:text> + <xsl:choose> + <xsl:when test="$cellpadding != ''"> + <xsl:value-of select="$cellpadding"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$html.cellpadding"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>; </xsl:text> + </xsl:if> + + <xsl:choose> + <xsl:when test="string-length($table.width) != 0"> + <xsl:text>width: </xsl:text> + <xsl:value-of select="$table.width"/> + <xsl:text>; </xsl:text> + </xsl:when> + <xsl:when test="../@pgwide=1 or local-name(.) = 'entrytbl'"> + <xsl:text>width: 100%; </xsl:text> + </xsl:when> + <xsl:otherwise> + </xsl:otherwise> + </xsl:choose> + + <xsl:choose> + <xsl:when test="../@frame='all' or (not(../@frame) and $default.table.frame='all')"> + <xsl:text>border-collapse: collapse; </xsl:text> + <xsl:call-template name="border"> + <xsl:with-param name="side" select="'top'"/> + <xsl:with-param name="style" select="$table.frame.border.style"/> + <xsl:with-param name="color" select="$table.frame.border.color"/> + <xsl:with-param name="thickness" select="$table.frame.border.thickness"/> + </xsl:call-template> + <xsl:call-template name="border"> + <xsl:with-param name="side" select="'bottom'"/> + <xsl:with-param name="style" select="$table.frame.border.style"/> + <xsl:with-param name="color" select="$table.frame.border.color"/> + <xsl:with-param name="thickness" select="$table.frame.border.thickness"/> + </xsl:call-template> + <xsl:call-template name="border"> + <xsl:with-param name="side" select="'left'"/> + <xsl:with-param name="style" select="$table.frame.border.style"/> + <xsl:with-param name="color" select="$table.frame.border.color"/> + <xsl:with-param name="thickness" select="$table.frame.border.thickness"/> + </xsl:call-template> + <xsl:call-template name="border"> + <xsl:with-param name="side" select="'right'"/> + <xsl:with-param name="style" select="$table.frame.border.style"/> + <xsl:with-param name="color" select="$table.frame.border.color"/> + <xsl:with-param name="thickness" select="$table.frame.border.thickness"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="../@frame='topbot' or (not(../@frame) and $default.table.frame='topbot')"> + <xsl:text>border-collapse: collapse;</xsl:text> + <xsl:call-template name="border"> + <xsl:with-param name="side" select="'top'"/> + <xsl:with-param name="style" select="$table.frame.border.style"/> + <xsl:with-param name="color" select="$table.frame.border.color"/> + <xsl:with-param name="thickness" select="$table.frame.border.thickness"/> + </xsl:call-template> + <xsl:call-template name="border"> + <xsl:with-param name="side" select="'bottom'"/> + <xsl:with-param name="style" select="$table.frame.border.style"/> + <xsl:with-param name="color" select="$table.frame.border.color"/> + <xsl:with-param name="thickness" select="$table.frame.border.thickness"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="../@frame='top' or (not(../@frame) and $default.table.frame='top')"> + <xsl:text>border-collapse: collapse;</xsl:text> + <xsl:call-template name="border"> + <xsl:with-param name="side" select="'top'"/> + <xsl:with-param name="style" select="$table.frame.border.style"/> + <xsl:with-param name="color" select="$table.frame.border.color"/> + <xsl:with-param name="thickness" select="$table.frame.border.thickness"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="../@frame='bottom' or (not(../@frame) and $default.table.frame='bottom')"> + <xsl:text>border-collapse: collapse;</xsl:text> + <xsl:call-template name="border"> + <xsl:with-param name="side" select="'bottom'"/> + <xsl:with-param name="style" select="$table.frame.border.style"/> + <xsl:with-param name="color" select="$table.frame.border.color"/> + <xsl:with-param name="thickness" select="$table.frame.border.thickness"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="../@frame='sides' or (not(../@frame) and $default.table.frame='sides')"> + <xsl:text>border-collapse: collapse;</xsl:text> + <xsl:call-template name="border"> + <xsl:with-param name="side" select="'left'"/> + <xsl:with-param name="style" select="$table.frame.border.style"/> + <xsl:with-param name="color" select="$table.frame.border.color"/> + <xsl:with-param name="thickness" select="$table.frame.border.thickness"/> + </xsl:call-template> + <xsl:call-template name="border"> + <xsl:with-param name="side" select="'right'"/> + <xsl:with-param name="style" select="$table.frame.border.style"/> + <xsl:with-param name="color" select="$table.frame.border.color"/> + <xsl:with-param name="thickness" select="$table.frame.border.thickness"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="../@frame='none'"> + <xsl:text>border: none;</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>border-collapse: collapse;</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <table> + <!-- HTML5: no table summary allowed --> + <xsl:if test="string-length($table.style) != 0"> + <xsl:attribute name="style"> + <xsl:value-of select="$table.style"/> + </xsl:attribute> + </xsl:if> + + + <xsl:copy-of select="$colgroup"/> + + <xsl:apply-templates select="d:thead"/> + <xsl:apply-templates select="d:tfoot"/> + <xsl:apply-templates select="d:tbody"/> + + <xsl:if test=".//d:footnote|../d:title//d:footnote"> + <tbody class="footnotes"> + <tr> + <td colspan="{@cols}"> + <xsl:apply-templates select=".//d:footnote|../d:title//d:footnote" mode="table.footnote.mode"/> + </td> + </tr> + </tbody> + </xsl:if> + </table> +</xsl:template> + +<!-- HTML5: convert col attributes to col CSS styles --> +<xsl:template name="colgroup.with.style"> + <xsl:param name="colgroup"/> + + <xsl:variable name="colgroup.nodeset" select="exsl:node-set($colgroup)"/> + <xsl:apply-templates select="$colgroup.nodeset" mode="convert.to.style"/> +</xsl:template> + +<xsl:template match="d:colgroup" mode="convert.to.style"> + <xsl:copy> + <xsl:copy-of select="@*"/> + <xsl:apply-templates mode="convert.to.style"/> + </xsl:copy> +</xsl:template> + +<!-- HTML5: converts obsolete HTML attributes to CSS styles --> +<xsl:template match="*" mode="convert.to.style"> + + <xsl:variable name="element" select="local-name(.)"/> + + <xsl:variable name="style.from.atts"> + <xsl:for-each select="@*"> + + <xsl:choose> + <!-- width and height attributes are ok for img element --> + <xsl:when test="local-name() = 'width' and $element != 'img'"> + <xsl:text>width: </xsl:text> + <xsl:value-of select="."/> + <xsl:text>; </xsl:text> + </xsl:when> + + <xsl:when test="local-name() = 'height' and $element != 'img'"> + <xsl:text>height </xsl:text> + <xsl:value-of select="."/> + <xsl:text>; </xsl:text> + </xsl:when> + + <xsl:when test="local-name() = 'align'"> + <xsl:text>text-align: </xsl:text> + <xsl:value-of select="."/> + <xsl:text>; </xsl:text> + </xsl:when> + + <xsl:when test="local-name() = 'valign'"> + <xsl:text>vertical-align: </xsl:text> + <xsl:value-of select="."/> + <xsl:text>; </xsl:text> + </xsl:when> + + <xsl:when test="local-name() = 'border'"> + <xsl:text>border: </xsl:text> + <xsl:value-of select="."/> + <xsl:text>; </xsl:text> + </xsl:when> + + <xsl:when test="local-name() = 'cellspacing'"> + <xsl:text>border-spacing: </xsl:text> + <xsl:value-of select="."/> + <xsl:text>; </xsl:text> + </xsl:when> + + <xsl:when test="local-name() = 'cellpadding'"> + <xsl:text>padding: </xsl:text> + <xsl:value-of select="."/> + <xsl:text>; </xsl:text> + </xsl:when> + </xsl:choose> + </xsl:for-each> + </xsl:variable> + + <!-- merge existing styles with these new styles --> + <xsl:variable name="style"> + <xsl:value-of select="concat($style.from.atts, @style)"/> + </xsl:variable> + + <!-- HTML5: reserved for element name conversion if needed --> + <xsl:variable name="element.name"> + <xsl:value-of select="local-name(.)"/> + </xsl:variable> + + <xsl:element name="{$element.name}"> + <xsl:if test="string-length($style) != 0"> + <xsl:attribute name="style"> + <xsl:value-of select="$style"/> + </xsl:attribute> + </xsl:if> + <!-- skip converted atts, and also skip disallowed summary attribute --> + <xsl:for-each select="@*"> + <xsl:choose> + <xsl:when test="local-name(.) = 'width' and $element != 'img'"/> + <xsl:when test="local-name(.) = 'height' and $element != 'img'"/> + <xsl:when test="local-name(.) = 'summary'"/> + <xsl:when test="local-name(.) = 'border'"/> + <xsl:when test="local-name(.) = 'cellspacing'"/> + <xsl:when test="local-name(.) = 'cellpadding'"/> + <xsl:when test="local-name(.) = 'style'"/> + <xsl:when test="local-name(.) = 'align'"/> + <xsl:when test="local-name(.) = 'valign'"/> + <xsl:otherwise> + <xsl:copy-of select="."/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + <xsl:apply-templates mode="convert.to.style"/> + </xsl:element> +</xsl:template> + +<!-- HTML5: convert some attributes to CSS style attribute --> +<xsl:template match="d:entry|d:entrytbl"> + <xsl:param name="col"> + <xsl:choose> + <xsl:when test="@revisionflag"> + <xsl:number from="d:row"/> + </xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:param> + + <xsl:param name="spans"/> + + + <!-- Process with stock template --> + <xsl:variable name="cell"> + <xsl:call-template name="entry"> + <xsl:with-param name="col" select="$col"/> + <xsl:with-param name="spans" select="$spans"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="cell.nodes" select="exsl:node-set($cell)"/> + + <xsl:apply-templates select="$cell.nodes" mode="convert.to.style"/> + +</xsl:template> + +<xsl:template match="d:mediaobject|d:inlinemediaobject"> + <xsl:call-template name="convert.styles"/> +</xsl:template> + +<xsl:template match="d:qandaset"> + <xsl:call-template name="convert.styles"/> +</xsl:template> + +<xsl:template match="d:calloutlist|d:revhistory|d:footnote|d:figure|d:co"> + <xsl:call-template name="convert.styles"/> +</xsl:template> + +<xsl:template match="d:revhistory" mode="titlepage.mode"> + <xsl:call-template name="convert.styles"/> +</xsl:template> + +<xsl:template match="d:variablelist"> + <xsl:call-template name="convert.styles"/> +</xsl:template> + +<xsl:template match="d:orderedlist[@inheritnum = 'inherit']"> + <xsl:call-template name="convert.styles"/> +</xsl:template> + +<xsl:template match="d:simplelist"> + <xsl:call-template name="convert.styles"/> +</xsl:template> + +<xsl:template match="d:blockquote"> + <xsl:call-template name="convert.styles"/> +</xsl:template> + +<xsl:template match="d:note|d:important|d:warning|d:caution|d:tip"> + <xsl:call-template name="convert.styles"/> +</xsl:template> + +<xsl:template match="d:funcprototype" mode="ansi-tabular"> + <xsl:call-template name="convert.styles"/> +</xsl:template> + +<xsl:template match="d:funcprototype" mode="kr-tabular"> + <xsl:call-template name="convert.styles"/> +</xsl:template> + +<xsl:template name="convert.styles"> + <xsl:param name="content"> + <xsl:apply-imports/> + </xsl:param> + <xsl:variable name="nodes" select="exsl:node-set($content)"/> + + <xsl:apply-templates mode="convert.to.style" select="$nodes"/> +</xsl:template> + +<!-- HTML5: link rel="home" is not permitted --> +<!-- Add support for attributes on <html> element --> +<xsl:template match="*" mode="process.root"> + <xsl:variable name="doc" select="self::*"/> + + <xsl:call-template name="user.preroot"/> + <xsl:call-template name="root.messages"/> + + <html> + <xsl:call-template name="root.attributes"/> + <head> + <xsl:call-template name="system.head.content"> + <xsl:with-param name="node" select="$doc"/> + </xsl:call-template> + <xsl:call-template name="head.content"> + <xsl:with-param name="node" select="$doc"/> + </xsl:call-template> + <xsl:call-template name="user.head.content"> + <xsl:with-param name="node" select="$doc"/> + </xsl:call-template> + </head> + <body> + <xsl:call-template name="body.attributes"/> + <xsl:call-template name="user.header.content"> + <xsl:with-param name="node" select="$doc"/> + </xsl:call-template> + <xsl:apply-templates select="."/> + <xsl:call-template name="user.footer.content"> + <xsl:with-param name="node" select="$doc"/> + </xsl:call-template> + </body> + </html> + <xsl:value-of select="$html.append"/> + + <!-- Generate any css files only once, not once per chunk --> + <xsl:call-template name="generate.css.files"/> +</xsl:template> + +<xsl:template name="root.attributes"> +</xsl:template> + +<!-- HTML5: uses <ul> instead of <dl> for TOC --> +<xsl:template match="d:question" mode="qandatoc.mode"> + <xsl:variable name="firstch"> + <!-- Use a titleabbrev or title if available --> + <xsl:choose> + <xsl:when test="../d:blockinfo/d:titleabbrev"> + <xsl:apply-templates select="../d:blockinfo/d:titleabbrev[1]/node()"/> + </xsl:when> + <xsl:when test="../d:blockinfo/d:title"> + <xsl:apply-templates select="../d:blockinfo/d:title[1]/node()"/> + </xsl:when> + <xsl:when test="../d:info/d:titleabbrev"> + <xsl:apply-templates select="../d:info/d:titleabbrev[1]/node()"/> + </xsl:when> + <xsl:when test="../d:titleabbrev"> + <xsl:apply-templates select="../d:titleabbrev[1]/node()"/> + </xsl:when> + <xsl:when test="../d:info/d:title"> + <xsl:apply-templates select="../d:info/d:title[1]/node()"/> + </xsl:when> + <xsl:when test="../d:title"> + <xsl:apply-templates select="../d:title[1]/node()"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="(*[local-name(.)!='label'])[1]/node()"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="deflabel"> + <xsl:choose> + <xsl:when test="ancestor-or-self::*[@defaultlabel]"> + <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()] + /@defaultlabel"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$qanda.defaultlabel"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <li> + <a> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select=".."/> + </xsl:call-template> + </xsl:attribute> + <xsl:apply-templates select="." mode="label.markup"/> + <xsl:if test="contains($deflabel,'number') and not(d:label)"> + <xsl:apply-templates select="." mode="intralabel.punctuation"/> + </xsl:if> + <xsl:text> </xsl:text> + <xsl:value-of select="$firstch"/> + </a> + <!-- * include nested qandaset/qandaentry in TOC if user wants it --> + + <xsl:if test="not($qanda.nested.in.toc = 0)"> + <xsl:apply-templates select="following-sibling::d:answer" mode="qandatoc.mode"/> + </xsl:if> + </li> +</xsl:template> + +<xsl:template match="d:answer" mode="qandatoc.mode"> + <xsl:if test="descendant::d:question"> + <xsl:call-template name="process.qanda.toc"/> + </xsl:if> +</xsl:template> + +<!-- html5 uses <ul> instead of <dl> for toc --> +<xsl:template name="process.qanda.toc"> + <ul> + <xsl:apply-templates select="d:qandadiv" mode="qandatoc.mode"/> + <xsl:apply-templates select="d:qandaset|d:qandaentry" mode="qandatoc.mode"/> + </ul> +</xsl:template> + +<xsl:template match="d:qandadiv" mode="qandatoc.mode"> + <!-- + <dt><xsl:apply-templates select="d:title" mode="qandatoc.mode"/></dt> + <dd><xsl:call-template name="process.qanda.toc"/></dd> + --> + <li> + <xsl:apply-templates select="d:title" mode="qandatoc.mode"/> + <xsl:call-template name="process.qanda.toc"/> + </li> +</xsl:template> + +<xsl:template match="d:audiodata"> + <xsl:variable name="filename"> + <xsl:call-template name="mediaobject.filename"> + <xsl:with-param name="object" select=".."/> + </xsl:call-template> + </xsl:variable> + + <audio> + <xsl:call-template name="common.html.attributes"/> + + <xsl:attribute name="src"> + <xsl:value-of select="$filename"/> + </xsl:attribute> + + <xsl:apply-templates select="@*"/> + <xsl:apply-templates select="../d:multimediaparam"/> + + <!-- add any fallback content --> + <xsl:call-template name="audio.fallback"/> + </audio> +</xsl:template> + +<!-- generate <video> element for html5 --> +<xsl:template match="d:videodata"> + <xsl:variable name="filename"> + <xsl:call-template name="mediaobject.filename"> + <xsl:with-param name="object" select=".."/> + </xsl:call-template> + </xsl:variable> + + <video> + <xsl:call-template name="common.html.attributes"/> + + <xsl:attribute name="src"> + <xsl:value-of select="$filename"/> + </xsl:attribute> + + <xsl:call-template name="video.poster"/> + + <xsl:apply-templates select="@*[local-name() != 'fileref']"/> + <xsl:apply-templates select="../d:multimediaparam"/> + + <!-- add any fallback content --> + <xsl:call-template name="video.fallback"/> + </video> +</xsl:template> + +<!-- use only an imageobject with @role = 'poster' --> +<xsl:template name="video.poster"> + <xsl:variable name="imageobject" select="../../d:imageobject[@role = 'poster'][1]"/> + <xsl:if test="$imageobject"> + <xsl:attribute name="poster"> + <xsl:value-of select="$imageobject/d:imagedata/@fileref"/> + </xsl:attribute> + </xsl:if> +</xsl:template> + +<xsl:template match="d:videodata/@fileref"> + <!-- already handled by videodata template --> +</xsl:template> + +<xsl:template match="d:audiodata/@fileref"> + <!-- already handled by audiodata template --> +</xsl:template> + +<xsl:template match="d:videodata/@contentwidth"> + <xsl:attribute name="width"> + <xsl:value-of select="."/> + </xsl:attribute> +</xsl:template> + +<xsl:template match="d:videodata/@contentdepth"> + <xsl:attribute name="height"> + <xsl:value-of select="."/> + </xsl:attribute> +</xsl:template> + +<xsl:template match="d:videodata/@depth"> + <xsl:attribute name="height"> + <xsl:value-of select="."/> + </xsl:attribute> +</xsl:template> + +<!-- pass through these attributes --> +<xsl:template match="d:videodata/@autoplay | + d:videodata/@controls | + d:audiodata/@autoplay | + d:audiodata/@controls"> + <xsl:copy-of select="."/> +</xsl:template> + +<xsl:template match="d:videodata/@*" priority="-1"> + <!-- Do nothing with the rest of the attributes --> +</xsl:template> + +<xsl:template match="d:audiodata/@*" priority="-1"> + <!-- Do nothing with the rest of the attributes --> +</xsl:template> + +<xsl:template match="d:multimediaparam"> + <xsl:call-template name="process.multimediaparam"> + <xsl:with-param name="object" select=".."/> + <xsl:with-param name="param.name" select="@name"/> + <xsl:with-param name="param.value" select="@value"/> + </xsl:call-template> +</xsl:template> + +<!-- Determines the best value of a media attribute from the + attributes and multimediaparam elements --> +<xsl:template name="process.multimediaparam"> + <xsl:param name="object" select="NOTANELEMENT"/> + <xsl:param name="param.name"/> + <xsl:param name="param.value"/> + + <xsl:choose> + <xsl:when test="$object/*/@*[local-name(.) = $param.name]"> + <!-- explicit attribute with that name takes precedence --> + <xsl:attribute name="{$param.name}"> + <xsl:value-of select="$object/*/@*[local-name(.) = $param.name]"/> + </xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="{$param.name}"> + <xsl:value-of select="$param.value"/> + </xsl:attribute> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="video.fallback"> + <xsl:param name="videodata" select="."/> + <xsl:variable name="textobject" select="$videodata/../../d:textobject"/> + + <xsl:apply-templates select="$textobject" mode="fallback"/> +</xsl:template> + +<xsl:template name="audio.fallback"> + <xsl:param name="audiodata" select="."/> + <xsl:variable name="textobject" select="$audiodata/../../d:textobject"/> + + <xsl:apply-templates select="$textobject" mode="fallback"/> +</xsl:template> + +<xsl:template match="d:textobject" mode="fallback"> + <div> + <xsl:apply-templates select="." mode="class.attribute"/> + <xsl:apply-templates/> + </div> +</xsl:template> + +<!-- HTML5: no body attributes --> +<xsl:template name="body.attributes"/> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml5/onechunk.xsl b/DOCBOOK/xhtml5/onechunk.xsl new file mode 100755 index 0000000..79f1a7d --- /dev/null +++ b/DOCBOOK/xhtml5/onechunk.xsl @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="ASCII"?> +<!--This file was created automatically by html2xhtml--> +<!--from the HTML stylesheets.--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" +xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc d"> + +<!-- ******************************************************************** + $Id: onechunk.xsl,v 1.1 2011-09-16 21:44:00 bobs Exp $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:import href="chunk.xsl"/> + +<!-- Ok, using the onechunk parameter makes this all work again. --> +<!-- It does have the disadvantage that it only works for documents that have --> +<!-- a root element that is considered a chunk by the chunk.xsl stylesheet. --> +<!-- Ideally, onechunk would let anything be a chunk. But not today. --> + +<xsl:param name="onechunk" select="1"/> +<xsl:param name="suppress.navigation">1</xsl:param> + +<xsl:template name="href.target.uri"> + <xsl:param name="object" select="."/> + <xsl:text>#</xsl:text> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> +</xsl:template> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml5/profile-chunk.xsl b/DOCBOOK/xhtml5/profile-chunk.xsl new file mode 100755 index 0000000..ab3e538 --- /dev/null +++ b/DOCBOOK/xhtml5/profile-chunk.xsl @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="ASCII"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" +xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl d"> + +<!-- ******************************************************************** + $Id: profile-chunk.xsl,v 1.1 2011-09-16 21:44:00 bobs Exp $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- First import the non-chunking templates that format elements + within each chunk file. In a customization, you should + create a separate non-chunking customization layer such + as mydocbook.xsl that imports the original docbook.xsl and + customizes any presentation templates. Then your chunking + customization should import mydocbook.xsl instead of + docbook.xsl. --> +<xsl:import href="docbook.xsl"/> + +<!-- chunk-common.xsl contains all the named templates for chunking. + In a customization file, you import chunk-common.xsl, then + add any customized chunking templates of the same name. + They will have import precedence over the original + chunking templates in chunk-common.xsl. --> +<xsl:import href="../xhtml/chunk-common.xsl"/> + +<!-- The manifest.xsl module is no longer imported because its + templates were moved into chunk-common and chunk-code --> + +<!-- chunk-code.xsl contains all the chunking templates that use + a match attribute. In a customization it should be referenced + using <xsl:include> instead of <xsl:import>, and then add + any customized chunking templates with match attributes. But be sure + to add a priority="1" to such customized templates to resolve + its conflict with the original, since they have the + same import precedence. + + Using xsl:include prevents adding another layer + of import precedence, which would cause any + customizations that use xsl:apply-imports to wrongly + apply the chunking version instead of the original + non-chunking version to format an element. --> +<xsl:include href="../xhtml/profile-chunk-code.xsl"/> + +<xsl:include href="html5-chunk-mods.xsl"/> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml5/profile-docbook.xsl b/DOCBOOK/xhtml5/profile-docbook.xsl new file mode 100755 index 0000000..636782a --- /dev/null +++ b/DOCBOOK/xhtml5/profile-docbook.xsl @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="ASCII"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" +xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exsl="http://exslt.org/common" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="db ng exsl exslt exslt d" version="1.0"> + + +<!-- ******************************************************************** + $Id: profile-docbook.xsl,v 1.2 2011-09-18 17:47:28 bobs Exp $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:import href="xhtml-profile-docbook.xsl"/> + +<xsl:include href="html5-element-mods.xsl"/> + +<xsl:output method="xml" encoding="UTF-8" indent="no"/> + +</xsl:stylesheet> diff --git a/DOCBOOK/xhtml5/xhtml-docbook.xsl b/DOCBOOK/xhtml5/xhtml-docbook.xsl new file mode 100755 index 0000000..7785468 --- /dev/null +++ b/DOCBOOK/xhtml5/xhtml-docbook.xsl @@ -0,0 +1,533 @@ +<?xml version="1.0"?> + +<!--This file was created automatically by xhtml2xhtml5.xsl from the xhtml stylesheet.--> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" +xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exsl="http://exslt.org/common" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="db ng exsl exslt d" version="1.0"> + +<!--Same as xhtml but with doctypes removed from xsl:output --> +<!--and including from ../xhtml directory --> +<xslo:output xmlns:xslo="http://www.w3.org/1999/XSL/Transform" method="xml" encoding="UTF-8" indent="no"/> + +<!-- ******************************************************************** + $Id: docbook.xsl 9605 2012-09-18 10:48:54Z tom_schr $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:include href="../VERSION.xsl"/> +<xsl:include href="../xhtml/param.xsl"/> +<xsl:include href="../lib/lib.xsl"/> +<xsl:include href="../common/l10n.xsl"/> +<xsl:include href="../common/common.xsl"/> +<xsl:include href="../common/utility.xsl"/> +<xsl:include href="../common/labels.xsl"/> +<xsl:include href="../common/titles.xsl"/> +<xsl:include href="../common/subtitles.xsl"/> +<xsl:include href="../common/gentext.xsl"/> +<xsl:include href="../common/targets.xsl"/> +<xsl:include href="../common/olink.xsl"/> +<xsl:include href="../common/pi.xsl"/> +<xsl:include href="../xhtml/autotoc.xsl"/> +<xsl:include href="../xhtml/autoidx.xsl"/> +<xsl:include href="../xhtml/lists.xsl"/> +<xsl:include href="../xhtml/callout.xsl"/> +<xsl:include href="../xhtml/verbatim.xsl"/> +<xsl:include href="../xhtml/graphics.xsl"/> +<xsl:include href="../xhtml/xref.xsl"/> +<xsl:include href="../xhtml/formal.xsl"/> +<xsl:include href="../xhtml/table.xsl"/> +<xsl:include href="../xhtml/htmltbl.xsl"/> +<xsl:include href="../xhtml/sections.xsl"/> +<xsl:include href="../xhtml/inline.xsl"/> +<xsl:include href="../xhtml/footnote.xsl"/> +<xsl:include href="../xhtml/html.xsl"/> +<xsl:include href="../xhtml/info.xsl"/> +<xsl:include href="../xhtml/keywords.xsl"/> +<xsl:include href="../xhtml/division.xsl"/> +<xsl:include href="../xhtml/toc.xsl"/> +<xsl:include href="../xhtml/index.xsl"/> +<xsl:include href="../xhtml/refentry.xsl"/> +<xsl:include href="../xhtml/math.xsl"/> +<xsl:include href="../xhtml/admon.xsl"/> +<xsl:include href="../xhtml/component.xsl"/> +<xsl:include href="../xhtml/biblio.xsl"/> +<xsl:include href="../xhtml/biblio-iso690.xsl"/> +<xsl:include href="../xhtml/glossary.xsl"/> +<xsl:include href="../xhtml/block.xsl"/> +<xsl:include href="../xhtml/task.xsl"/> +<xsl:include href="../xhtml/qandaset.xsl"/> +<xsl:include href="../xhtml/synop.xsl"/> +<xsl:include href="../xhtml/titlepage.xsl"/> +<xsl:include href="../xhtml/titlepage.templates.xsl"/> +<xsl:include href="../xhtml/pi.xsl"/> +<xsl:include href="../xhtml/ebnf.xsl"/> +<xsl:include href="../xhtml/chunker.xsl"/> +<xsl:include href="../xhtml/html-rtf.xsl"/> +<xsl:include href="../xhtml/annotations.xsl"/> +<xsl:include href="../common/addns.xsl"/> + +<xsl:param name="stylesheet.result.type" select="'xhtml'"/> +<xsl:param name="htmlhelp.output" select="0"/> + +<!-- ==================================================================== --> + +<xsl:key name="id" match="*" use="@id|@xml:id"/> +<xsl:key name="gid" match="*" use="generate-id()"/> + +<!-- ==================================================================== --> + +<xsl:template match="*"> + <xsl:message> + <xsl:text>Element </xsl:text> + <xsl:value-of select="local-name(.)"/> + <xsl:text> in namespace '</xsl:text> + <xsl:value-of select="namespace-uri(.)"/> + <xsl:text>' encountered</xsl:text> + <xsl:if test="parent::*"> + <xsl:text> in </xsl:text> + <xsl:value-of select="name(parent::*)"/> + </xsl:if> + <xsl:text>, but no template matches.</xsl:text> + </xsl:message> + + <span style="color: red"> + <xsl:text><</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:text>></xsl:text> + <xsl:apply-templates/> + <xsl:text></</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:text>></xsl:text> + </span> +</xsl:template> + +<xsl:template match="text()"> + <xsl:value-of select="."/> +</xsl:template> + +<xsl:template name="body.attributes"><xslo:if xmlns:xslo="http://www.w3.org/1999/XSL/Transform" test="starts-with($writing.mode, 'rl')"><xslo:attribute name="dir">rtl</xslo:attribute></xslo:if> +<!-- no apply-templates; make it empty except for dir for rtl--> +</xsl:template> + +<xsl:template name="head.content.base"> + <xsl:param name="node" select="."/> + <base href="{$html.base}"/> +</xsl:template> + +<xsl:template name="head.content.abstract"> + <xsl:param name="node" select="."/> + <xsl:variable name="info" select="(d:articleinfo |d:bookinfo |d:prefaceinfo |d:chapterinfo |d:appendixinfo |d:sectioninfo |d:sect1info |d:sect2info |d:sect3info |d:sect4info |d:sect5info |d:referenceinfo |d:refentryinfo |d:partinfo |d:info |d:docinfo)[1]"/> + <xsl:if test="$info and $info/d:abstract"> + <meta name="description"> + <xsl:attribute name="content"> + <xsl:for-each select="$info/d:abstract[1]/*"> + <xsl:value-of select="normalize-space(.)"/> + <xsl:if test="position() < last()"> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:attribute> + </meta> + </xsl:if> +</xsl:template> + +<xsl:template name="head.content.link.made"> + <xsl:param name="node" select="."/> + + <link rev="made" href="{$link.mailto.url}"/> +</xsl:template> + +<xsl:template name="head.content.generator"> + <xsl:param name="node" select="."/> + <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/> +</xsl:template> + +<xsl:template name="head.content.style"> + <xsl:param name="node" select="."/> + <style type="text/css"><xsl:text> +body { background-image: url('</xsl:text> +<xsl:value-of select="$draft.watermark.image"/><xsl:text>'); + background-repeat: no-repeat; + background-position: top left; + /* The following properties make the watermark "fixed" on the page. */ + /* I think that's just a bit too distracting for the reader... */ + /* background-attachment: fixed; */ + /* background-position: center center; */ + }</xsl:text> + </style> +</xsl:template> + +<xsl:template name="head.content"> + <xsl:param name="node" select="."/> + <xsl:param name="title"> + <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/> + </xsl:param> + + <xsl:call-template name="user.head.title"> + <xsl:with-param name="title" select="$title"/> + <xsl:with-param name="node" select="$node"/> + </xsl:call-template> + + <xsl:if test="$html.base != ''"> + <xsl:call-template name="head.content.base"> + <xsl:with-param name="node" select="$node"/> + </xsl:call-template> + </xsl:if> + + <!-- Insert links to CSS files or insert literal style elements --> + <xsl:call-template name="generate.css"/> + + <xsl:if test="$html.stylesheet != ''"> + <xsl:call-template name="output.html.stylesheets"> + <xsl:with-param name="stylesheets" select="normalize-space($html.stylesheet)"/> + </xsl:call-template> + </xsl:if> + + <xsl:if test="$html.script != ''"> + <xsl:call-template name="output.html.scripts"> + <xsl:with-param name="scripts" select="normalize-space($html.script)"/> + </xsl:call-template> + </xsl:if> + + <xsl:if test="$link.mailto.url != ''"> + <xsl:call-template name="head.content.link.made"> + <xsl:with-param name="node" select="$node"/> + </xsl:call-template> + </xsl:if> + + <xsl:call-template name="head.content.generator"> + <xsl:with-param name="node" select="$node"/> + </xsl:call-template> + + <xsl:if test="$generate.meta.abstract != 0"> + <xsl:call-template name="head.content.abstract"> + <xsl:with-param name="node" select="$node"/> + </xsl:call-template> + </xsl:if> + + <xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''"> + <xsl:call-template name="head.content.style"> + <xsl:with-param name="node" select="$node"/> + </xsl:call-template> + </xsl:if> + <xsl:apply-templates select="." mode="head.keywords.content"/> +</xsl:template> + +<xsl:template name="output.html.stylesheets"> + <xsl:param name="stylesheets" select="''"/> + + <xsl:choose> + <xsl:when test="contains($stylesheets, ' ')"> + <xsl:variable name="css.filename" select="substring-before($stylesheets, ' ')"/> + + <xsl:call-template name="make.css.link"> + <xsl:with-param name="css.filename" select="$css.filename"/> + </xsl:call-template> + + <xsl:call-template name="output.html.stylesheets"> + <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$stylesheets != ''"> + <xsl:call-template name="make.css.link"> + <xsl:with-param name="css.filename" select="$stylesheets"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template name="output.html.scripts"> + <xsl:param name="scripts" select="''"/> + + <xsl:choose> + <xsl:when test="contains($scripts, ' ')"> + <xsl:variable name="script.filename" select="substring-before($scripts, ' ')"/> + + <xsl:call-template name="make.script.link"> + <xsl:with-param name="script.filename" select="$script.filename"/> + </xsl:call-template> + + <xsl:call-template name="output.html.scripts"> + <xsl:with-param name="scripts" select="substring-after($scripts, ' ')"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$scripts != ''"> + <xsl:call-template name="make.script.link"> + <xsl:with-param name="script.filename" select="$scripts"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> +</xsl:template> + +<!-- ============================================================ --> + +<xsl:template match="*" mode="head.keywords.content"> + <xsl:apply-templates select="d:chapterinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:appendixinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:prefaceinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:bookinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:setinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:articleinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:artheader/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:sect1info/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:sect2info/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:sect3info/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:sect4info/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:sect5info/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:sectioninfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:refsect1info/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:refsect2info/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:refsect3info/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:bibliographyinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:glossaryinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:indexinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:refentryinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:partinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:referenceinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:docinfo/d:keywordset" mode="html.header"/> + <xsl:apply-templates select="d:info/d:keywordset" mode="html.header"/> + + <xsl:if test="$inherit.keywords != 0 and parent::*"> + <xsl:apply-templates select="parent::*" mode="head.keywords.content"/> + </xsl:if> +</xsl:template> + +<!-- ============================================================ --> + +<xsl:template name="system.head.content"> + <xsl:param name="node" select="."/> + + <!-- FIXME: When chunking, only the annotations actually used + in this chunk should be referenced. I don't think it + does any harm to reference them all, but it adds + unnecessary bloat to each chunk. --> + <xsl:if test="$annotation.support != 0 and //d:annotation"> + <xsl:call-template name="add.annotation.links"/> + <script type="text/javascript"> + <xsl:text> +// Create PopupWindow objects</xsl:text> + <xsl:for-each select="//d:annotation"> + <xsl:text> +var popup_</xsl:text> + <xsl:value-of select="generate-id(.)"/> + <xsl:text> = new PopupWindow("popup-</xsl:text> + <xsl:value-of select="generate-id(.)"/> + <xsl:text>"); +</xsl:text> + <xsl:text>popup_</xsl:text> + <xsl:value-of select="generate-id(.)"/> + <xsl:text>.offsetY = 15; +</xsl:text> + <xsl:text>popup_</xsl:text> + <xsl:value-of select="generate-id(.)"/> + <xsl:text>.autoHide(); +</xsl:text> + </xsl:for-each> + </script> + + <style type="text/css"> + <xsl:value-of select="$annotation.css"/> + </style> + </xsl:if> + + <!-- system.head.content is like user.head.content, except that + it is called before head.content. This is important because it + means, for example, that <style> elements output by system.head.content + have a lower CSS precedence than the users stylesheet. --> +</xsl:template> + +<!-- ============================================================ --> + +<xsl:template name="user.preroot"> + <!-- Pre-root output, can be used to output comments and PIs. --> + <!-- This must not output any element content! --> +</xsl:template> + +<xsl:template name="user.head.title"> + <xsl:param name="node" select="."/> + <xsl:param name="title"/> + + <title> + <xsl:copy-of select="$title"/> + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note + + + namesp. add + + + added namespace before processing + + + + + + + + + + + Note + + + namesp. add + + + added namespace before processing + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/DOCBOOK/xhtml5/xhtml-profile-docbook.xsl b/DOCBOOK/xhtml5/xhtml-profile-docbook.xsl new file mode 100755 index 0000000..42e3209 --- /dev/null +++ b/DOCBOOK/xhtml5/xhtml-profile-docbook.xsl @@ -0,0 +1,407 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Element + + in namespace ' + + ' encountered + + in + + + , but no template matches. + + + + < + + > + + </ + + > + + + + + + + +rtl + + + + + + + + + + + <xsl:copy-of select="$title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adding DocBook namespace to version 4 DocBook document + + + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/DOCBOOK/xhtml5/xhtml2xhtml5.xsl b/DOCBOOK/xhtml5/xhtml2xhtml5.xsl new file mode 100755 index 0000000..45d65bd --- /dev/null +++ b/DOCBOOK/xhtml5/xhtml2xhtml5.xsl @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + Same as xhtml but with doctypes removed from xsl:output + + and including from ../xhtml directory + + + + + + + + + + + + + + + + + + + + This file was created automatically by xhtml2xhtml5.xsl from the xhtml stylesheet. + + + + + + + + diff --git a/Vorlagen/DocBookTemplate.stw b/Vorlagen/DocBookTemplate.stw new file mode 100755 index 0000000000000000000000000000000000000000..b6e0e19bc075dbe69fe6c5345f73e44e1f561aaa GIT binary patch literal 6656 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 literal 0 HcmV?d00001 diff --git a/Vorlagen/OOO2SDBK.BAU b/Vorlagen/OOO2SDBK.BAU new file mode 100755 index 0000000000000000000000000000000000000000..c54317ebdd05325971f97f92410ec83c1b91864c GIT binary patch literal 8971 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%0AIA1niA)nK8~QS?XhGbIm73d=jEYBS2`hT2>d z%+F<5Z*`8>v^^X(d{jDuhqll#9`e4`&p1AR*X$7F)(<_|j!8tn#IQDc3}!|ntQnJ4 zooBdR$1!)&$TOQlSW_^;xsb##;%`*lgCDV%zF^CsuDtR=J#5`AUqhO*&J9qXcH(OY z<5@OX%VW*ONiX$3^PEX!)~;cZ%~!rw6&gy# zrk%;cxYVrk)5S7-8p`U52&==V`sDzQ`aVaeW5Syxe(rr+f|df;Av&&6+){;-7x8Sh zKW|s_+E%4=miL+`^U9i@hv%FN2ZJOg8*n|0^CWI<$l#1Xv#Q3@d{Oj0>nTE4*ac z_BqE>?$UKpbU1EoIMhY z(%c}zLHZrq5MyPC6dGr!GKU3E$*70rLqSIMgcY47j)IX`>00l%RnJf^e&b-{CezeT z%eXOFng)D(J{`~1DSNZ#HLhd4;nZ`-#9M+{U2TSA>()ok@pLX3_KxSK*yxUk>&R8^L-j1y84d4P(wcUr%ey%|C=8RblbL5abnXk-Ysfhl{GQx4Dywl{ zuc56uxpe9xqw@7;x})H}YHDA&lP!%HQV4n2!b%{*1;vpo6zZ`&2gybXeIwT|y3H4r zZS?z*4zPWuB6oUFvYhNwUegck2$rLLU|S0jZfxdd5Hc2kb#Q2ua_LYhH*@NE^c`R$ zu%t=(T=8{f{qRZ~wMyx-Z)voT%O#03lA|3%v)_&yG3IB~$EJ~m-&hbyDyx3YTs-5m z?eb2ghjYA+vA>Dj-CI9j2BU=-QdoaV`OuyO4H2=SXQx(=ktUyqw=}%D?8R;&x5U|L zNwoZUzCV8>J|5aG@3oCIJHzo2zx`^8=abmd)XBG;ot=P>0Bb#57X>!;u)wrH&-&9H z#|nLH7~@biWxvbiARWP=r{#8lzC~s>Osxdo$M@ALFe-i94+zc<6sV_*9dAQPdYb@>C(c@NLF>)N+0scgW zptcL!GcBJZL9j0{?I6%(j|&66txCBSm^ccVo_lvZRd!`{#kSp@66~$5pR&j$+reHN zMJ7D<4UQqKuts3}+YIke^RZ>zBzIw)-iB)%5KGUAC#z&3G!0Obs0Dmf3KnOSv}D7~ zkIk^R7%$FMa~)Q7u~Ml5xq(28roWf1FqcJ2Bdy*6Xa!xAZ_j5oBBf@W)vKb|?F-Ef z=>EnEU;LGlM}){=e4NqAkOufd%d%iEN9X;|RugfydN*L28{-pVX#RlzWft2=!bMbu zY+vBFYg(F!H^kkc)YP%I%rVPhG_7J*R`I29x^=2IK0fV;pK7bj2UYE;F<$tZv%u6! zl->{8hj*yizoIPx3SS3dzrcP*C6T72OvZ}TO0ji$l-!UC*XdPPRDA9Y$%=Pt+3>Z{ zKEPEEOT5V8qZXzMv-qICe?WjnqYh3U zWK$1xw=`N~Y1Z}DWZf{%x)+>u4#yiyb6Ia)N+( + + + + + CoverImage + + + + +
                  cover.jpg
                  + + diff --git a/Vorlagen/epub3/cover/cover.jpg b/Vorlagen/epub3/cover/cover.jpg new file mode 100755 index 0000000000000000000000000000000000000000..111d9dbb073e1aa0147adfb519a06b11a5c8cea8 GIT binary patch literal 38210 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 literal 0 HcmV?d00001 diff --git a/Vorlagen/epub3/images/annot-close.png b/Vorlagen/epub3/images/annot-close.png new file mode 100755 index 0000000000000000000000000000000000000000..b9e1a0d5271d46b85a25b0e2d631a53d82850515 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1SIo6Pjm-y3Opi<85p>QL70(Y)*K0-AbW|Y zuPgf%PA(ofgF7J&vw=dgC9V-A&iT2ysd*&~&PAz-C8;S2<(VZJ3LzP(3hti10q;{( z^MDFnJzX3_DsGkbALM0F;9#C;QDVLz`S*bwYNv2{e$w)78&qol`;+071$@H2?qr literal 0 HcmV?d00001 diff --git a/Vorlagen/epub3/images/annot-open.png b/Vorlagen/epub3/images/annot-open.png new file mode 100755 index 0000000000000000000000000000000000000000..71040ec80afcf4fcea6abc5d275668a9e827d081 GIT binary patch literal 837 zcmV-L1G@Z)P)nz$G=}+U)$K*0RaK2sj2(?@K;+}#Kgq&^YDFreX6Re zJv}|+=GXW4^Tox*dwY9^G%Ni4{A6Tg+T`f%^7LnCXW*;>hK7dV>Ffaj0O#%SnauzF z{r!rHhScEYtwjJD8yfum{rdX)^7i-l`ub~YYXSfRYiw+4YHI)g%m4raTwGk!)6>t~ z;mpitWtsl+^75>#th2MTWSD2Lu&}YQvA({(0RaPPX=(lc{KCS**Vxj@*xk|5(fCO?d|QPq@@4-{%mY)%gf8CsHk#sa=5s-rlg<%0s!>%^ox~?|H}hm zVPVY5%XW5l0RsYNm}R!MwgdzQ(8|u<-ri_vXn=Hd|Nj4)%>QJW|NZ;?!_?Y_eQ||_ zh57mU0ssO1|Ni~``@_S-&d$#N|NH;W0A-o~udT1#+}yRbwVafT{r>;Q$H#Mabi~BW zZ*On^|NU-mZnCnn!@art{PNhM1YTZVXqsiq%gMUBx@~Q3)z#J4*VjTyO4rxV%F4?A z{Qb1Fw3*NTzrVi#0R_Fiz3%Sr|NsBEOlwI1000SaNLh0L01FcU01FcV0GgZ_00007 zbV*G`2h<224jL3?q?}j)002!%L_t(|+9i##5da|!!`Q?X=Y{Cf(lZ46{5%@x4X9Fl ziPMmSENG}-RM%%%8ZU<|J)hqeemmU~lHx1r!40P)jk$>XeBky_qbf7}d%!9N(qQPR P00000NkvXXu0mjf``6wy literal 0 HcmV?d00001 diff --git a/Vorlagen/epub3/images/blank.png b/Vorlagen/epub3/images/blank.png new file mode 100755 index 0000000000000000000000000000000000000000..764bf4f0c3bb4a09960b04b6fa9c9024bca703bc GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRdwrEa{HEjtmSN`?>!lvNA9*>Uz33 zhE&XXd(lylL4oIh!GZnHecj|txT>yO8>^qY%(y?B;Tppl#t7yOYze#vq#8^aMzDZb YLK^d5CO(feU_df>y85}Sb4q9e0BevqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP literal 0 HcmV?d00001 diff --git a/Vorlagen/epub3/images/draft.png b/Vorlagen/epub3/images/draft.png new file mode 100755 index 0000000000000000000000000000000000000000..59673fe1cc03356ff609f90fc9939349890f996a GIT binary patch literal 16150 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 bUK6;u6T3XxO2`8j-C^fUkY~z`F5dn>b4tm9 literal 0 HcmV?d00001 diff --git a/Vorlagen/epub3/images/home.png b/Vorlagen/epub3/images/home.png new file mode 100755 index 0000000000000000000000000000000000000000..cbb711de712dcf06597a3a8a3d95f6fefda1f245 GIT binary patch literal 1156 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG|!3-oLGuzY{7?>FXd_r6WdIS`E6g8)48qP6v zn&afP)GK*ya`E2cmc1=K$9krmo3ixW(yjNl9=mt!-1BqS-d}tE{`vdw@Bfd2(GVCG zA@J$l5_e#hU`+CMcVXyYmGuB}CVRR#hE&{I8+eiLumVSprtq8v761QlTpYPgC-&05 zDJ{&8o?4V1EYqU7+)vOI#yLg7ec#$`gxH85}f}H9d0^ z(^GvD(=(H^6-@Mu^ehxCE%gm7^bHIZl8Z8nODY|5D~n4qll4-I^-@X;^7BgclJj#X z?o!+VG)@a_TxNP+Vo52`JVR3xV`HP#G)t4DL{lRpBV!ZeBojj;vlKG}W79NC!#D3= nHUM?;fpi4`tz|GatuQpzHqbT@s&o4Ulwt66^>bP0l+XkK0lack literal 0 HcmV?d00001 diff --git a/Vorlagen/epub3/images/important.png b/Vorlagen/epub3/images/important.png new file mode 100755 index 0000000000000000000000000000000000000000..12c90f607a1b27ddde0a7d922ae255e8c90e883e GIT binary patch literal 722 zcmV;@0xkWCP)Gdz_qOoSb{LwMwNgp7=gl$4aErG%}mjHRWNrKOy`y@b8JoTa6ut*xc4t*y1SwY|N)#>U3Z&d%1> z*52OU=jZ3|@9+2b_y7O@tTMkk%M`~Kg@u8&dg_P^_0l3yQb639!jLZt^Lx<-O17UeeJ z-|=!77W(jGx&e#?FOku-gKofoU0$~4M+dhLFueEauP`}l7LV=;lsOdn%WHure=x;k`m0(bF&MU#) z-qv#^n8(MjB|ykioqII#+`g4no-MU=BK|Sahu_3M_-d*=7hq=~t?^}A)G7 zbairN0An*{V`DL9V>K}|HDobmIW;*pIW=W9HaTQ6F*7kTGI9=S@Bjb+07*qoM6N<$ Ef=i}M4FCWD literal 0 HcmV?d00001 diff --git a/Vorlagen/epub3/images/next.png b/Vorlagen/epub3/images/next.png new file mode 100755 index 0000000000000000000000000000000000000000..45835bf89ac0eca3ad69c4d8397cd5edad2f8782 GIT binary patch literal 1150 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG|!3-oLGuzY{7?>FXd_r6qS{MX+1QdG|HK%AA z&M|bFA9tAudUsBZ|kvp$Id-JckTVP=kK4t z|Nj2}C>RZap&SB+ixVCKvjk(3x4R2N2dk_Hkkjkw;uunKYwyH|T!$5ST0$SiY~H5U zR{cLbR)lT!-5c|b6rGCX%N?2P<`-xxUu`gZx87&*3!~4wH@%p0)WuYX}UBIC~8cAiK_+plk!-xP|nq~%Rem@g?39waS$dFIAw`2be&`&H`~ zup7N@y!g@N+18CSR#dLnIlgB9pXN>WRz-=n38I0oRnmeW@(a^WRPZVkYb)}kZ6%y pT0bWnsEZGzD*$LMgRyCap{cfkwt-Nc+b5t5gQu&X%Q~loCIEjWXuALa literal 0 HcmV?d00001 diff --git a/Vorlagen/epub3/images/note.png b/Vorlagen/epub3/images/note.png new file mode 100755 index 0000000000000000000000000000000000000000..d0c3c645ab9af6318035b026dd86944b9ddc9114 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_FXd_r6qS{MX+1QdG|HK%AA z&M|bFA9tAudO|H@7THL=dQiK_Wb?x_ut?D z9|fZ!FvLS(&zmEwfLVeu$=lt9p@UV{1IVfNba4!+xV3fSLB2x#g-7SkiDHi<0%5c709k4@>c%U5PUn6XiNrQ7+$BX-K(BEj>;XDjvwZcIF~ zikDl%a$|T|&B@5M-I14sdv^1r*gkp|z3k=crb$1i`yH45`zBpRc(KYI-u^rPzjiy@ zGH(5%+Qq}Yvm59P=MvY5lHmNblJdl&R0anPWlhiA#Pn3(#PrPMYy}fNBRvZROG|wN z3w;Aah2)~l;*v^-+{)sT%w)aPV!f2og8aM^z2yAdiMtec0FBcE8<&}$msnB?G|wQ- z!aOlC%^=CZB-O|yDbdi(G|ec{Bq=S?EGaqB)I9sbjHy6fd>~x`Kx-L{O)CsdwGFfl UgzDTr0c99GUHx3vIVCg!0Q2->tpET3 literal 0 HcmV?d00001 diff --git a/Vorlagen/epub3/images/tip.png b/Vorlagen/epub3/images/tip.png new file mode 100755 index 0000000000000000000000000000000000000000..5c4aab3bb3543191c360387c4af9a3cbaa051345 GIT binary patch literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoM0VEi-?r};1DW)WEcNYeRRlUkaK;CUn7srr_ zTcwkB3m#VBagbEhuIO1a$!w|j^feEHv@=+|woj32oF*6|l<3XH$!T}Lao)e6jJhoQ z_vr?OZVprC|7iZ8xaicUR0b&zR-JdP408=+?zC0Rn8IN&QLTWhMIcU0X8P7uUN4WB zR_?a_;&p>ll{>(OzfJ4N{OX={Q&zNgO}j31DC;|ya^r9Fjd348&p+!^cT+^sws+=& zCu*T*mRNK3PE;$BNx$Fa_9(Y=&DoXLMFRd#U31O)<`W^F&-o=xbIqK-c?mr!bmn>! zky6TW;ML~4nXw$T{yra=OteL6G!=B;0=?;6;u=vBoS#-wo>-L1;Gm(b>6x3Dp6Z*J zo|&AjV4`QFXQ5zesc&GRZ(yj9T$EW{Qt6OeSzMBtte0A>mr`1gpI4%noS!>!m*Ngk zP=bxiOwUU!DFvFBnrfM1VQy}0X_lO7WM-b2nq**TZkb|inr2~`WR#dJWc*7VsEZGz hD*$LMgOO>4k%_i}w!yxSoa=!y44$rjF6*2UngF(YpwIvS literal 0 HcmV?d00001 diff --git a/Vorlagen/epub3/images/toc-blank.png b/Vorlagen/epub3/images/toc-blank.png new file mode 100755 index 0000000000000000000000000000000000000000..6ffad17a0c7a78deaae58716e8071cc40cb0b8e0 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!VDzk7iOmbDT4r?5LY1G0LBeqssYGrXgF}- zKtn^rf1vn(hW}s+NCR0w;4iG^2^42c@^*J&=wOxg0CMC!T^vIyZYBTtzyH6zKuy9A zentg0F+qV0g#~P97#OBpaJrNsxA6f`rE`gEL`iUdT1k0gQ7VIjhO(w-Zen_>Z(@38 za<+nro{^q~f~BRtfrY+-p+a&|W^qZSLvCepNoKNMYO!8QX+eHoiC%Jk?!;Y+JAlS% zfsM;d&r2*R1)7&;o@#7ik&>8{Vv?F>U|?x(ZfKHZYGz`bmXczeoR*Z-Hs=yh7cWRx f0MJ?nL(>XNZ3Ars^Rf>h;}|?${an^LB{Ts5OHX0g literal 0 HcmV?d00001 diff --git a/Vorlagen/epub3/images/toc-minus.png b/Vorlagen/epub3/images/toc-minus.png new file mode 100755 index 0000000000000000000000000000000000000000..abbb020c8e2d6705ebc2f0fc17deed30f2977a46 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q4-G!sMP)HD-wQzH`-1CumMgJctv6pLi@6hos# qqtv?{|7HPo@q%;(0Ig*(G_A1IHqbUOFZ%#8j=|H_&t;ucLK6V~f=xvL literal 0 HcmV?d00001 diff --git a/Vorlagen/epub3/images/toc-plus.png b/Vorlagen/epub3/images/toc-plus.png new file mode 100755 index 0000000000000000000000000000000000000000..941312ce0dab168e0efcc5b572e387259880e541 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q49T#T`K7w7|w?rspM=lmg95OfodLFfd9rOi4*hH8wIdOfpPPHA_l1 vPBO4aOiebg{FXd_r6qS{MX+1QdG|HK%AA z&M|bF#=*s&OJYO?ftdq@1MW_{{H_c7!85p5(1lc z&#VJx3C1LEcNc~ZR#^`qC(YBvF{I+w)Ct~v2NXD1b6>NwI=-vFd2Ozz_LBUAZ6_V# z0_-2ED|^IRKipvRGe~yg+2{$+0#aW-GMHneR${}Twfy{=Zu8*Wewig#Kj<-8yG4i7iAWgR668V7MElu>!lX!rIZ%r=auLs=jTq` zrMLrVoEF%)%=Em(l2V{~M&{;5#umm#78a?N$;qjPhKZ(zMyW=L7Ktfo#^y-|**sf- lni%*%x&naKG8mgy7@BGuXd4LCxqSjjdAj{!F!o39xr+d_Vw5fMTEwpb-s#9q<5Nzz6gIepyU?Lctpr{ZK zVzWaWPAC)#17S8h%;AIuf(Q_yeIybEqS0s^i1YdJcsv0ln9M{Xkpz;-I_^=P))~D~!!Hvpq{Dl8O{rN@cECkt>#DncX%I(O&3i_YgL-$m$VU zT3cLBLS%M1`o{TBX}S|Tbhc)vk!Yp)%rdDd&my(RPsxl%lU$)tC?(1~WuEwClUQn! n$Q8O{Mxt@ukkcT{K0> literal 0 HcmV?d00001 diff --git a/Vorlagen/ooo2sbk.ott b/Vorlagen/ooo2sbk.ott new file mode 100755 index 0000000000000000000000000000000000000000..4dec9118aa9245313442de3d90983df3df28c0cd GIT binary patch literal 15294 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 A?EnA( literal 0 HcmV?d00001 diff --git a/Webhelp/CreateWebHelp.bat b/Webhelp/CreateWebHelp.bat new file mode 100755 index 0000000..f3a6f7b --- /dev/null +++ b/Webhelp/CreateWebHelp.bat @@ -0,0 +1,29 @@ +@echo off +@setlocal +SET PATH=..\java\bin;%PATH% +SET JAVA_HOME=..\java +SET ANT_HOME=../apache-ant +SET CLASSPATH=../lib/saxon.jar;../lib/resolver.jar +SET OUTDIR=%1 +SET SRCFILE=%2 +REM parametes-Dadmon.graphics=1 -Dsuppress.footer.navigation=0 +if ""%1""=="""" goto error_outputdir +if ""%2""=="""" goto error_src +call ..\apache-ant\bin\ant webhelp %3 %4 %5 %6 %7 %8 %9 -Doutput-dir=%OUTDIR% -Dinput-xml=%SRCFILE% +goto end + +:error_src +echo. +echo Fehler: Keine Quelldatei angegeben +echo. +goto end + +:error_outputdir +echo. +echo Fehler: Keine Ausgabeverzeichnis angegeben +echo. +goto end + +:end + + diff --git a/Webhelp/build.xml b/Webhelp/build.xml new file mode 100755 index 0000000..eb4e65c --- /dev/null +++ b/Webhelp/build.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Webhelp/template/common/browserDetect.js b/Webhelp/template/common/browserDetect.js new file mode 100755 index 0000000..c6a2c73 --- /dev/null +++ b/Webhelp/template/common/browserDetect.js @@ -0,0 +1,116 @@ +var BrowserDetect = { + init: function () { + this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; + this.version = this.searchVersion(navigator.userAgent) + || this.searchVersion(navigator.appVersion) + || "an unknown version"; + this.OS = this.searchString(this.dataOS) || "an unknown OS"; + }, + searchString: function (data) { + for (var i=0;ip{ font-weight: bold; } + +p.breadcrumbs { + display: inline; + margin-bottom: 0px; + margin-top: 33px; +} + +p.breadcrumbs a { + padding-right: 12px; + margin-right: 5px; + text-decoration: none; + color: #575757; + text-transform: uppercase; + font-size: 10px; +} + +p.breadcrumbs a:first-child {background: url(../images/breadcrumb-arrow-white.png) no-repeat right center;} + +p.breadcrumbs a:hover {text-decoration: underline;} + +#star ul.star { + LIST-STYLE: none; + MARGIN: 0; + PADDING: 0; + WIDTH: 85px; + /* was 100 */ + HEIGHT: 20px; + LEFT: 1px; + TOP: -5px; + POSITION: relative; + FLOAT: right; + BACKGROUND: url('../images/starsSmall.png') repeat-x 0 -25px; +} +#star li { + PADDING: 0; + MARGIN: 0; + FLOAT: right; + DISPLAY: block; + WIDTH: 85px; + /* was 100 */ + HEIGHT: 20px; + TEXT-DECORATION: none; + text-indent: -9000px; + Z-INDEX: 20; + POSITION: absolute; + PADDING: 0; +} +#star li.curr { + BACKGROUND: url('../images/starsSmall.png') left 25px; + FONT-SIZE: 1px; +} + +table.navLinks {margin-right: 20px;} + +table.navLinks td a { + text-decoration: none; + text-transform: uppercase; + color: black; + font-size: 11px; +} + +a.navLinkPrevious { + padding-left: 12px; + background: url(../images/previous-arrow.png) no-repeat left center; +} + +a.navLinkNext { + padding-right: 12px; + background: url(../images/next-arrow.png) no-repeat right center; +} + +a#showHideButton { + padding-left: 20px; + background: url(../images/sidebar.png) no-repeat left center; +} + + +.filetree li span a { color: #777; } + +#treediv { -webkit-box-shadow: #CCC 0px 1px 2px 0px inset; } + +.legal, .legal *{ + color: #555; + text-align: center; + padding-bottom: 10px; +} + +.internal { color : #0000CC;} + +.writeronly {color : red;} + +.remark, .remark .added, .remark .changed, .remark .deleted{ background: yellow;} + +tr th, tr th .internal, tr th .added, tr th .changed { + background: #00589E; + color: white; + font-weight: bold; + text-align: left; +} + +.statustext{ + position:fixed; + top:105px; + width: 0%; + height: 0%; + opacity: .3; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -o-transform: rotate(90deg); + white-space: nowrap; + color: red; + font-weight: bold; + font-size: 2em; + margin-top: 30px; +} + +#toolbar { + width: 100%; + height: 33px; + position: fixed; + top: 93px; + z-index: 99; + left: 280px; + color: #333; + line-height: 28px; + padding-left: 10px; +} + +#toolbar-left { + position: relative; + left: 0px; +} + +body p.breadcrumbs { + margin: 0px; + padding: 0px; + line-height: 28px; +} + +/*body #content { + position: static; + margin-top: 126px; + top: 0px; +}*/ + +body.sidebar #toolbar{left: 0px;} + +body.sidebar #toolbar-left{left: 0px;} + +div#toolbar-left img {vertical-align: text-top;} + +div.note *, div.caution *, div.important *, div.tip *, div.warning * { + background: inherit !important; + color: inherit !important; + border: inherit !important; +} + +#content table thead, #content table th{ + background: gray; + color: white; + font-weight: bold; +} + +#content table caption{font-weight: bold;} + +#content table td, #content table {border: 1px solid black;} + +#content table td, #content table th { padding: 5px;} + +#content table {margin-bottom: 20px;} + +*[align = 'center']{ text-align: center;} + +#content .qandaset>table, #content .qandaset>table td, #content .calloutlist table, #content .calloutlist table td, #content .navfooter table, #content .navfooter table td { + border: 0px solid; +} + +#sidebar { display: none } + +@media print { + + body * { + visibility: hidden; + } + + #content, #content * { + visibility: visible; + } + + #sidebar, .navfooter { + display: none; + } + + #content { + margin: 0 0 0 0; + } + +} + diff --git a/Webhelp/template/common/images/Thumbs.db b/Webhelp/template/common/images/Thumbs.db new file mode 100755 index 0000000000000000000000000000000000000000..8f7da04cc125c960dc7c6f0f1740b01c3bb78005 GIT binary patch literal 6656 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

                  WX%>_$%y6S|Y|Hx>Oyqs~mbvp@%7*nZsH zSD=BT8=h7rV-i%}mM0l=ok%_g@LZ`iq$Z67&v7Oxb#Cxhx0%wleXm{>Uv*tiZqyqq zvu~b`jLI1N#%KH$MT?XG0YkLN>aP|J?=9Ya`u?E~Pg7niUpsW*nHl*Op$XHv@Ipf5 zl>KFa-yc@$jno~HFPHlFTy2=l|9GbS_kX@EwW@hF{I)mzXHWf|_4ng!4`f_i)QqAN zGe5|?U7lsu`E~c{w&drB+X%f1KN2q1Oq-J>Zj&ck*YjPRbIO*g9IvGpZEl@vNJzo_ zu{at>2{PigNR6Ki`|Vbt$k3vTs+h&;UMEuwjizjuml{q?xje&LD3=y-JGOy*M)$P) zyG83%{ZnyZ?a4Zd&q5}CEYU1%hM^V5G)YXGHYHX4?3QI9?8c2B@@rzD*E~m8cLXiJ zn`miey6vv*YN7>BZL3jKAG)`{QV+HF*jd$*VZDgxN<$YdjRT{Zwi1D7ym+j&>*P`u z$gN!d?2bxZXjf?yFNPMKbN#J+*^N@^?oQ9ihpcp_=Ty%~XYB7Cs{Bdc-%)gf#}Y2o iCiaHS1JO&1IQGF#QtV*SO=MjBFB`!BZ0P)-KmA|n0c}?R literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/admon/caution.png b/Webhelp/template/common/images/admon/caution.png new file mode 100755 index 0000000000000000000000000000000000000000..5b7809ca4a9c8d778087522e5ce04b6e90099595 GIT binary patch literal 1250 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbQ|Pftew|C&U%V<=|it5MYpyU{F+K zFf?Rva$<;zVn|MA$j)XcE@r5%W@u>vqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/admon/important.png b/Webhelp/template/common/images/admon/important.png new file mode 100755 index 0000000000000000000000000000000000000000..12c90f607a1b27ddde0a7d922ae255e8c90e883e GIT binary patch literal 722 zcmV;@0xkWCP)Gdz_qOoSb{LwMwNgp7=gl$4aErG%}mjHRWNrKOy`y@b8JoTa6ut*xc4t*y1SwY|N)#>U3Z&d%1> z*52OU=jZ3|@9+2b_y7O@tTMkk%M`~Kg@u8&dg_P^_0l3yQb639!jLZt^Lx<-O17UeeJ z-|=!77W(jGx&e#?FOku-gKofoU0$~4M+dhLFueEauP`}l7LV=;lsOdn%WHure=x;k`m0(bF&MU#) z-qv#^n8(MjB|ykioqII#+`g4no-MU=BK|Sahu_3M_-d*=7hq=~t?^}A)G7 zbairN0An*{V`DL9V>K}|HDobmIW;*pIW=W9HaTQ6F*7kTGI9=S@Bjb+07*qoM6N<$ Ef=i}M4FCWD literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/admon/note.png b/Webhelp/template/common/images/admon/note.png new file mode 100755 index 0000000000000000000000000000000000000000..d0c3c645ab9af6318035b026dd86944b9ddc9114 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_ll{>(OzfJ4N{OX={Q&zNgO}j31DC;|ya^r9Fjd348&p+!^cT+^sws+=& zCu*T*mRNK3PE;$BNx$Fa_9(Y=&DoXLMFRd#U31O)<`W^F&-o=xbIqK-c?mr!bmn>! zky6TW;ML~4nXw$T{yra=OteL6G!=B;0=?;6;u=vBoS#-wo>-L1;Gm(b>6x3Dp6Z*J zo|&AjV4`QFXQ5zesc&GRZ(yj9T$EW{Qt6OeSzMBtte0A>mr`1gpI4%noS!>!m*Ngk zP=bxiOwUU!DFvFBnrfM1VQy}0X_lO7WM-b2nq**TZkb|inr2~`WR#dJWc*7VsEZGz hD*$LMgOO>4k%_i}w!yxSoa=!y44$rjF6*2UngF(YpwIvS literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/admon/warning.png b/Webhelp/template/common/images/admon/warning.png new file mode 100755 index 0000000000000000000000000000000000000000..1c33db8f34a8b42b373179b46a2d8d8a10e061a9 GIT binary patch literal 1241 zcmeHH+e?!H6#vDtmgHCxG{Q}12(7`~)|MMe^RnTlY0JD#q1sIwW1DTCqzzwWg@Q=t zBC2Iceu@w4LHM97Gb5%*E%9MN*%m}jvs!{N@Pd8$H}vS?TsRzlzr#5kPPe|YG%fXL zDu6VdR$WC$&Oc)^X#ZjK-7LU>{!F!o39xr+d_Vw5fMTEwpb-s#9q<5Nzz6gIepyU?Lctpr{ZK zVzWaWPAC)#17S8h%;AIuf(Q_yeIybEqS0s^i1YdJcsv0ln9M{Xkpz;-I_^=P))~D~!!Hvpq{Dl8O{rN@cECkt>#DncX%I(O&3i_YgL-$m$VU zT3cLBLS%M1`o{TBX}S|Tbhc)vk!Yp)%rdDd&my(RPsxl%lU$)tC?(1~WuEwClUQn! n$Q8O{Mxt@ukkcT{K0> literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/1.png b/Webhelp/template/common/images/callouts/1.png new file mode 100755 index 0000000000000000000000000000000000000000..de682c628feee885b97fd19e77b016518d833711 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=92~rKK68R45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWk%<(RmX6r@{8<}R!o-G--zwYdTlP5b5@8;1{=w*AcsQTNRLe=)iUl{`QE`z75pUXO@geCx4;f9R> literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/10.png b/Webhelp/template/common/images/callouts/10.png new file mode 100755 index 0000000000000000000000000000000000000000..96c6ce45275c754c86964f523e57bb2ca5507877 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%nMc45_%)J87f$VF!_8`x4j_g4RWzt>|@iO6xonCpLUuhigLc3Jb+U%Op*^%iLyO4_(X;pN6- z=a#Hm^`=rTB~q_P5)HwY|d8XT*w^=@u zSiV--p1!#&MsKHy@TcQO>_47BbD2s2LA=92~rKJj#M45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWC>mIVh^7_bp?vVw0Ac8FkGr=O>_47BbD2s2LA=930$iScxC45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWu;5ShzZF-HKw%&(Ci= zKi__F#+A#LnX{Q1Wv$B$B&4JcEs1e3ld7n!Y^>a~XOD#~N71)ON4pbaWYyS|806*U zoij5voeK*MV|bQ)WU}+UbmrcJAECGvBVZi8DU2$xScp!J|iq49efdw9T3& z6_BCi{Wh_2S%*lDpnd(nngWmgRbRREj-5Ec;l&{=c~OYLP(f@;Re~n_6uEq+jm!eY z4?T-!I_%-FU3*BV(lAJgz49qrkWxKEFbBgty{H#GlO<(=fzROS>gTe~DWM4fIlZ{! literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/13.png b/Webhelp/template/common/images/callouts/13.png new file mode 100755 index 0000000000000000000000000000000000000000..b4878f1a451337e8e34562ba148f4b8669dbbafc GIT binary patch literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$iT8AI45_%)J87f$;Q)bS`?pED9L)6<@taey*G&cvlxG%uf$~RZ!px!#yrs(!{N|KWn3Uov-5ZqPv zLGQ`bEpBhw_dhHwe}C`pZ?79y1Pi_A2up2ruQ;N8QQgipNi)2})8dF>*H_m&0{%5C zo^;LYWd5V~uFmmHXTR6CJ>sr`PZT&FSe&y8zHH*7Cd|XeyybRo#k_WnEVZdxqa~r7vo!eLJ*%Rovco*|#lmM%k0+X>Kp3Z{yj} zom19d!1vow!LQ@5y-vBWOO>_47BbD2s2LA=930$G4ynC45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWBqMPL8CfP}<}4avv(*kWU2Q#57OY#I+56h3lkd-N!&t^WVN#45%PeTI#kX1)LZ z{Y&6s{{R1fdO`}z@du(}8Bda~a)h?5<7D|};23;_o9z*!hN4f3i#NlOhKPVyjZ0+$ zs`hXm;d40CdVHCWLR`zdu*A+i5}Fg64?SQDQmSVN=3p>A>#6*xIoSgkq70s{elF{r G5}E)R1*_Zu literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/15.png b/Webhelp/template/common/images/callouts/15.png new file mode 100755 index 0000000000000000000000000000000000000000..f6a76d51667ed2ea608facddd705cb079d9150e0 GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%VAa45_%)JIT=daDc$^|DBCd8xsyR zsGbb6N-H?~OhI+a?8&k|8apgJ*x8rYFtG>AaLKxI#O^8)d?mF@lv8$#g2j>)(NC;< z#D9AQCA~b@|NY(F*mqCw#XH>V>(omWWZUR}rZaqzyNgZW36WT#{v(`SZ`*gM#?9C~ zUGr0?^Pl`Rzga)Jwp@Bu#ox6k!ECnU^{=JNbWTU;P1l%y`n9p6z`Tsg-OYLxSf&G|7V^1m;Mc0w&Kr6dteMOc)I$z JtaD0e0ssM<)1m+X literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/16.png b/Webhelp/template/common/images/callouts/16.png new file mode 100755 index 0000000000000000000000000000000000000000..c5ef6359aff17dae242a9f9b5b07d37492c5e2d5 GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$De`o245_%)JIOx#P=LtM{*BGkqO3z+ zOz0O-$=()Z)u9(O-ASYA#RbKZ7XdCut~zpb&9>MgVwGB;JwyM2zyzg*l3KD>B|27I z3%|3;`?@S;uY0)nPWiq2!paXWHgYr-cnqizE%Fd8zieDgW5l ze=>zBG}QIwrv|$$yZQW8D?_xBQk;!u9!W4bkhS$tfkn$>ittqpVD zf1h7XAn9?*^ohRPa@ljQmoC)k(m1>1>*KtssgV~-Z8Oq0M{e|;rn^@7O>_47BbD2s2LA=930$G4gbA45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gW?*}&7>JKP8>LQjxULeq0mxTLm?|WTXN6dy^?nI|9YG?f)^5jUtj}M6@4{d!ehO>_47BbD2s2LA=930$DfM)545_%)JIOx#P=LtM{`$6{S(g?% zwR`Myn9#*2I6cTZBz8;iw47M0DSWb4PmNg$3#LpnRlq>o})cD8xLPn<2RG#*B^`C5M#GZHV1}#5QrW zt5#B#YTt(FHNSa3`dX|k*t6Y7t@ur)oX+W}_d3&0OYpE|Y`>jhHoHKEec$`|pqG|s z&xL4Bed4#AIdWRE?ytXgCccMDtXdaoNbt3vNZYI)QsuR&+rU@&Yn5#GQKhsw=bv*l zHPo*U)7F{p9k?q=_I&nMsd௱J?yghEpb|-VpoRA}>5tWxeXQuIvD5d;Gpf0>c9xIYoipjdSHJpu$iFlY+O>_47BbD2s2LA=930$De`o245_%)JIOHPkb^|){7z@httA~7 z6gN8yth{mbWRR7}+&2oYE4pJBP2rQZvb17XH&@*nAiFEPpqy9H*+|6d%F&}u-gkce zf8?pO^2abg($Weo=AX(PI$`CEgN8G#7n!wh>srX9Dv= z^G6)@-TwO(?Kq?F#k{wj=_6M?kNvR0HfvMg!xc7eOM@C0X%xhY?|UCVDfL+8vKqVf zWxHcntdg=?bpQS0n>k5VbCo8aTyQsU@x_ce6Ta$vblwuBJH<;?XZq;?gV|@-IqTfs z7PvO7we;x0%}EAV?|Z#xu(oO>_47BbD2s2LA=930$G4gbA45_%)I?2$xH9+QQ|1|-{i2^qS z{QMqWc&5@~vSqi)jg)R@l`jf{`jM4 z@AGdp@pTq)^|)MeD(~sXLh~mUe4BI*Cv7}nz!Q9M``wL#*B>3;y!v{n?7Zh|)m1%( zx;M004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004_ zNkl3-r5QX2JA`%WOg@};C`jCi~jij)ModkqKNNHgqLBt~eKv9U2T9g=b zod`A->8!-&I4lepOcCT7AzE5UW)@CPNkRrbc9xmhncaO7j?GWp5!ZxDc!?P?BAUdf zohUhqG~$6c$Itdf6o_ZuxEw_~q2PDp?l;6cVY+#|L?Y2_G#XG<74!KVxm*sD$po=j z482|t;cytHX`)yxVmux{Qq3!OydMsSDNfGk^H?sIs8lLwwOXjx>u9&z$Ye62WjdY4 zU@+j$ZkZn<5{Y0sor>USG(t2Q6@Ds}5*^t(oeq-8q&;?$3oo4)iO1vUcDuq?6b1YJ zUiiD+4uL?xPE%!Pk$C4yT ze21><;yV_L1vE{AVHhlgsB|KL|JW_7$L_*O>_47BbD2s2LA=930$iScxC45_%)J87fW;Q*1g|4U?Dd_qr__Nog*S`iY2k5iL=zix>?%}Kg^qDT9ql*xg$<*x~|zy6W{WDR>vFSEu8_J2kJ|XUJ6!g ze`=_BuH*2m6L$spudbPO>_47BbD2s2LA=930$@$+0wo zD*JBcv>EUS9ygRKd3Wda2c@>dieam-=FL;_T=4qWyWPIaH{GaEvTHdWtvB6XF5>dm zzKR>~zZ=fzopr06Xx?WB>pF literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/23.png b/Webhelp/template/common/images/callouts/23.png new file mode 100755 index 0000000000000000000000000000000000000000..3909b9cd8fd0720f5672bbdaa4ae37ba82c4b72a GIT binary patch literal 589 zcmV-T0004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004` zNkl@;rh&}uquSANt<%`2sbVuys_h9v7;)!@rdAvv@QY;h-&@>IEX(AqvV>ld& zd!x~S-|vTE7)Yg3==b~ARMTa}i*~zx#L0<70^{)*xm*s_Y892&PDh+wE*F-|r5roTqwd>3gp;|m3{_RJSS&D~ z&xP`PXgumA!OCztoyh0&NG6k5uh$}Dv)Le<&5DUCl?uw`vUtt~_k8ery`qR0uv)FY zt#mLLz~}SHtHFhOG#VAlNT<`7OeP=6ykXufM>rftuh)~Wx@-XVbUJA>#!_KDAsB<%w{t-LO}Uqfd9lPyGN?9A0LSWV&@ObC5W4^UX><4x0#%OmuWM( bB@^EOG7*lLyH^aK00000NkvXXu0mjfdrk4= literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/24.png b/Webhelp/template/common/images/callouts/24.png new file mode 100755 index 0000000000000000000000000000000000000000..963a9e770cca4a2c7c7d0628a131848672c9bc83 GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$DfM)545_%)JIT=hP=LVk^%oAVP~8MvZ@g~%#R=Z-}gYXd}BmtEHUQf2FPej@wC zcP0`%ebH;heAI+5nDEA2Z;e`e%w>_rp#lpQ&qN`py_WozqO0O(Ne_%0(Y9 z++(O&#b@<6b7KU{@xleS->zfd9JSVrm8trmW$pWr(7n0aZzo8w=}bSpHs8^;&P7De z_v+```+6c=H;*PwT({>m$Gizf2kH+gd{;TAXunS}{lq`{xq5>3Z?7JCqLyB?>y&o- dr~Z`3=0&eE`Pvp`?*_&SgQu&X%Q~loCIDgE)%5@X literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/25.png b/Webhelp/template/common/images/callouts/25.png new file mode 100755 index 0000000000000000000000000000000000000000..458a91990be481a831161da501d993f1fb4fb9ac GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$>GpJS45_%)J86IRAqSD;`#Tx4HG>?z zj{3?pn^^4hXjhnNU8Nr? z=UeBJ?Y;klV)@Q$`*$BhH>|Y?RMl}(=j*V1DByc&y7*Lw3#x_gbCUMkam=oG;;SL> z#YN^}dEr;?M^g(-^YrJRH<#{ZD~WA?Ub!MfYlh$Qj-yEtdeb{xl` z+{xPWSpOF+ja#pNZPh9z8NO~l6JO`uciUd?s#)?m#GccyA;Y9AZ+myr#*VXTn?sc* zdL&rLbXj&RIby6o>7>f5uU0v?{|O$6T7TVR`Q;+(=MKkBd`qlkuVk4Tx~@E$)EJ`0 zIeg3KG*D!B_%t{6OB{an^LB{Ts5T43Ks literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/26.png b/Webhelp/template/common/images/callouts/26.png new file mode 100755 index 0000000000000000000000000000000000000000..74b2507390edc1d45140ac991b9e73a26657cbea GIT binary patch literal 596 zcmV-a0;~OrP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00052 zNklNP|PIxdf6<4i1k7aR_vB5gbx<5JZFw znjFOC4euWi5h6rP2pgW#7_NeJ&dnDusp!BD&g0(i-tV6GN%&qq;+i-kWWqsA35}=| zhPhF)h%Sj+!jGTpoluE;{;*j@55x(6FTVYPcp;wbY%d;<*K4&JWLd_1K1Vj2#b`8w z!{IkZQAeB;ehPxLHs zI-O{@+t_Zm!o_4V;U)RVDss78C=?3F=kuS_Ae(NtTfDj1Y>ETSV&Nku2$-$yEy5m2KJ`<O>_47BbD2s2LA=930$sq%Dj45_%)J85I~AqSE6`il)qMV9l4 z9z1wb(L+`yW{F4JnYph50*)+nejy;E#n|50zxUoUKHxt{h#t zqq}y!>Ll*mm(Bd|^xmJ2)wAbJnk%%u#ZBXg;6^2zLu&U9yJ;%L3i2P3tXs$Lq#iR* zMfs9&VblHY^8G4tobk^dhprC2y-7!-t4V?5Lf&@6`R6y@f6rRH{kG$@r|wdIKURF- z_kQ-;Fz)W7OtY3Py#9J&&`OS=%{N`NrXDJ=c(QWpgKiD6?s%c;&nq>idNoZs|NLTx ziBqR{>PMSfN345~Cp*gUu)QeTeNk0aaPHE}nI%@T5^aSM+9F&ho)*nGn|A1QM9nit zv)Qiu@3*geeIsvsdt23BzU!rr&G#f-3=S1te34^WX42j`ZrQC-yq8~^==uF9ztQ*j zPO8z&Cuy54Z6+>xpEKojs?PM&6#_Y$Vh#VVm@ZfM;d}nEb%#RV|BgGn507k?YP-|X jGRI!Eqvelo&L5VVV;QTDz7*I7j2Z?{S3j3^P6004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00050 zNkl3-r5QX1Gix7g9MMP_>Ln0O;f&{gQoumpvz{WyEQUr^DKR~chu@)hU z`2iMQVXvZMI4mwgFh!K>43;92nZ=WfBq0MI?B32}-pq}J?_nqIiEBb8PKha@5EbIX zNR&*XTcSi<;OF=xvP6?F7L(|iILGh7)o+M5LbbBJP$*O>m&=f48Jeacl}ceS7$6u7 zqFSwr@6+iNnM?+~Uav};E?0bPx7#sJPN&nD&*vx<3aHg;7>z~j|aoyQ25~luh%QitJMm--A_-hu`lPZ*2924^F2O#bOcJ zY!>VFT0C+KEaDiC$A=d9-?C7NMx$aF`FtLW#p2*#GMNam@V1}qKDxXB_T_S^I~)#+ z*|sD}aJ$`TwOT@~swxtR1ZJ}tFM?M(T7dt=9k*{(VGpmw6>;{*%B6{?<6SkD{K2&3 gJax^q004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00050 zNklcV7wL%}Lx4=Y&EW5C)+W55&6} zC|Q!Oh7ZJzvj0dqUG8|-YPBvnIF(9aGMS)QETUX4qup*Jolc`rC}6c(A)C!| z0q$(K@gjUa9|nVgm`B%jsH!S_{`Pu3;g3cm#9}dX>O>_47BbD2s2LA=930$3G{Sv45_%)I%%VKOM=9)`Noz?N>Wl% zvt;_6qxv5!EK=NYb>Yzm2UHcMm~PAD?b2oX&*+-Tb!6qjr)-vU^j@$PXJuIBdCY0O z=Wk-?x{ke0!S4Ow%a5pDR4?lk{pe*Qct13;J$sjuTxar@*X=u0WA;rn zwG9{D8^_=G*kM|#&UEh;tGZM?wW3qcT0gDOKjQe5#gXB#!GcUFv)R1ME@u`7tSmkx zcFKD02V-6~<}=SfKf3w7w#QBRo}G%^kx%YhyaZTY?BYBBdDb=7Y@6KdS7o~+)?fFy zEYh{eR2u<_B>$VGB9|$`njxgN@xNAoG!y< literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/30.png b/Webhelp/template/common/images/callouts/30.png new file mode 100755 index 0000000000000000000000000000000000000000..c4dc404bc1cfeadb3f6e80671196d292e8eda1ed GIT binary patch literal 597 zcmV-b0;>IqP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00053 zNkl+FR z${bd!72EAr==FLHhr=NgHASk;W&@kehFC0yLZKkm6h+zTj=V(d5l_a=Uatq2%O&(| zHiOx07MjQ9aw(7LoY)+VM$j}(toZ$Y?wru=b{o-XRA?S~{uQFD&x66>qEe|?LZOiO zR_^d>wZeEjMlP2_Hk%a}r&1|QCKEQox#^n${u5{H9_bwR;|p;_SpKlwB~khARcZ2T jgUR`KjSMD#lLtQmtF?>&>wXE800000NkvXXu0mjfFy-;> literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/4.png b/Webhelp/template/common/images/callouts/4.png new file mode 100755 index 0000000000000000000000000000000000000000..1e42fb376bf0da3014c1b71496a3027daf578487 GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$VeoWu45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWk%^r=YnIgE*Vor4#xN?x z@fMyo<2RAke=SI$GU0f98M_# zi3LlSwkn#MPJMWGw)u@Eu?|wa8*Uyubm&mQ>ub7ff`WoMQl&ErZiWR09&F%mSoGLL zV73DHzyJT`gB6vF&KSlpew@{~gKhdr1?LMUjR#oNGP)`bI@mC%wsiJna5hK?aC_OF zF)(NT=&Ml1kfdj0mdf-|>B|-_?0!c)I$z JtaD0e0s!H`mGl4r literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/5.png b/Webhelp/template/common/images/callouts/5.png new file mode 100755 index 0000000000000000000000000000000000000000..635e7f816277da13e909e96b832ac8bb5e7d50d5 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$arAU?45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWL$+hvz+Zh-b8y_w; zG&=OQgEcd)(Q3W)%?x&S_O{a3*9==)TN5`|8VS5lZ2INN7U>orKmXyQqumxUXA~HY zJXP3U!njdnQ_t+#(uXIj`%5fZyjZfSxmohueEahsetu3*QMFN!=DpC%!_S{?QTa*5 z+0&ELxxC!`@SUB-7pK11kWkz`YnIfU+UMtFH_X4tc;Xm056gk|@%t~dt}}2{7H7S) ztF+tE)s^*;nyhTwRPFFZ+BccG=A3qrVgF>{^X1CQU>@)3dZ{12e@{Q&N@ ze}AouoIH-qV&GsXU}{k14XE0~*;TFZ?9k*VMvWDMRZ*>~pOTii@Ns>W_UQb>=%dK+ Y`mKN0%RTQafg#M`>FVdQ&MBb@0Dv*H*8l(j literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/6.png b/Webhelp/template/common/images/callouts/6.png new file mode 100755 index 0000000000000000000000000000000000000000..521aedde2c46c55421e87a355b77c7d77238a929 GIT binary patch literal 526 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%eGb45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWij&rZ~=9KvP@ikAGBI4}o%6fQ-=VXbhs;UV~)th5j zH*FN^sGX2%Wo<2~<}>5Khfhzv+m`#!H##%JkU3H+#h9DhL?NJI#R?5(YisMncXk#_ z?yLLDWybO%Bt=zEVY$?T>_4BM^EY>OaXA+i867?~Rr}yMS7s}p8%_S+-rb2`UtLZ3 zc5$)0i$MIZr^U^ zjoh9myJ=Et&xIE|dSpJz$jI&f73kPzVZvfVI+ z*{k2Y@djhZ&JQX(eH7wa=7lA8?vc=(*!<`xTaZ#cLof$}O?6yAW0@5rFcug*UHx3v IIVCg!0PJ|aQUCw| literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/7.png b/Webhelp/template/common/images/callouts/7.png new file mode 100755 index 0000000000000000000000000000000000000000..0d4b876a8cc1905944042956cc2c8e47b060fe3d GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$;qi2F45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWS+VuTo*!!8G5L6qV+#E-vTdV&hF`XZZx!Ctg+2(K!+*LG zyf}n6sxdGz%wd?3n8)^Lw!<5SBQX_|V$=lmo%~mCaEa@ga>DWD8@3>&dWK*QhNZV1 VXB~Ynd=MB|44$rjF6*2UngBtSpxyug literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/8.png b/Webhelp/template/common/images/callouts/8.png new file mode 100755 index 0000000000000000000000000000000000000000..50fa94d16db8ef19ab376affc9da83e57521ee03 GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$3GsAs45_%)I?2%caDYgwe=>Wa0DC)+ zpJEBu(uGs_VqJK4q!+Gmc2|7#;K6x;<2tNIT{L!h7jP?;z{$vZO$J~+Srg9=`o3ATW<2sm`|TLKPrTl zTM4C0@wMNcJmZkTkrX4r)9gpqhUhL*y#IZBnwr_Ws=ayJ=WMe6Cs6xw^&$<9CWcKq zi*>xuq!~Y{yjSpT_qF3<$r5arOpaFAv^}<%;kUe3&g@n7?GwjR)Rt*v>2>?+&$9RHs^=a@+U0rJ3Szh4dsk!UJ}os#;LACNKZ~sxR($&5C?i~5 v@A7U^MNazE_CIbMmba_aTK-Hn|Hl-#D=GDt)vx2gKxgoD^>bP0l+XkKdAG}3 literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/callouts/9.png b/Webhelp/template/common/images/callouts/9.png new file mode 100755 index 0000000000000000000000000000000000000000..7190d5a9aaeccb11ce5c500d5eeadfb1299c78e8 GIT binary patch literal 537 zcmV+!0_OdRP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004S zNklHU+e8LN@ zwH$?bBM#-oFbrXu=5n0N<&eo_l66xSH+My|*$kFtfiZ?cp@2?jE#;NB;59 zCh$BDj^iK*0=TY=`Ft)L;VP9dz<+eX-6NdC{rEu~5!-)Q?wWW^dR3VGPBJ-vyg)Mf bmq`2tvJ+juyP*^?00000NkvXXu0mjfx%}Vp literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/header-bg.gif b/Webhelp/template/common/images/header-bg.gif new file mode 100755 index 0000000000000000000000000000000000000000..f9efa280225828f2ccfc6c051ffcb6d668967dc6 GIT binary patch literal 619 zcmZ?wbhEHb6k$kVxXQrr_wV2D-@pI*_51thH{ZT}d;j6X&tJdZzI*rO%a`B3e}Dh+ z?_@ZZ0GpFe+j^Y-nB4GQky?|**%@Z-z7FI5Wv|Nm#8B~bjy0ybU;M1uU}!1n(@e}RXNnDU7wMLU;R z%)gK^#d&Si`s=-Ar{9+8KG;xUvu?)u7bR8)^LF3QpHSns{yO`QJ$3uP|M=g~*eKi5 z+ScAK)z#h8+v_%A0^{TRT6o;hpwoH;@B=L;=bykzOp=_^*StzNTs-8zPin>KIR z!n=LP&Rx4C_U_w%;6TUW!;;62pE!AP;+eDOoR}_Nx_srzvg_C9-nzwp_ul;n4_F^R zdHU=b_sdtW-@J)?|DNO1=PzHsvi$h@>-TT2fBzYn*+QHrBy4SF*Vl+Su_4h}O+fM5 zEQ^VaN4q7A(|C?eT)d!P!MRJtZPSEJlhx%{#GKre>g{fjXgAw)^RlyPe8tanPJHH> z*)iY#A?Mwur5P7%=6t{_Ev$x8UUy{IJ*D< literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/header-bg.png b/Webhelp/template/common/images/header-bg.png new file mode 100755 index 0000000000000000000000000000000000000000..75202f9b37af36592e8f5bcb5badd5ac3f71d0d3 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^B0!wN!3HGTRtuZ~QWHE~978H@y*;y#_Yebv%f;Dk zjs`RM4lwB)U|@-!VA^p@iBqE~yUEE!RD!3;L@}q3=OVXb&Br&v8zZefTOJ>-47Kv? z-c>Ydn(tecwS3j;nbmeyp1Z$2QZe1WdUDCGa=)P8H5Q(Ce?L|EI{%<&3ofvqPkr;s d$^Y#CFcq0@`TrwZ))?qE22WQ%mvv4FO#lp^PX7P^ literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/highlight-blue.gif b/Webhelp/template/common/images/highlight-blue.gif new file mode 100755 index 0000000000000000000000000000000000000000..4fdabde69252ba43e8b658c74a72775caaf304f4 GIT binary patch literal 471 zcmZ?wbhEHb)L_tNI3mh0b>*rn_bz?>^5NvQ+|z#z(?15yRD zlY#Yrf@+_NCr7*Rnu7}!QgzNx-55}@F4$S|f`i~ggBz0NjqwI*2{Q9{vnE;=IjrB+ zDCD7$u;0?zfI%<#i1GTJdsHRM1Uh5*=AKsEeQ?SYjaMqdjg0|KjY4kRs^-=Wtu3wX zZqXd>y-od16RmlavwB*EXSDg-v-nSI_Fpi|n$>jqfB1PxT?^`t?fQfg*PWROT z?4=7Bj-NPj$bb8e1?SIiu}ay0;o4&VD^suExnz0EZN;6_?hnqjm6bhlW2}3)ao5bl z&nzEpx@W<5 literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/highlight-yellow.gif b/Webhelp/template/common/images/highlight-yellow.gif new file mode 100755 index 0000000000000000000000000000000000000000..3e847e7e01623b08e9a7e7d823fcb97104e76194 GIT binary patch literal 331 zcmV-R0kr-{Nk%w1VJrYF0HOc@`{bSf|Nr^cZTH48_|8oJ^wtd=`2yXqN@dAW)FA{*9 z0^lo>f-$0TSwVV~Os3NTjY>HMo^?sUEofV-pivzGA!zUjgNA5FQ#EN!ZcP>Pwa!Lg z*&TUsLwr0%X>V dfG2i6;P)aBqN^Dbjd|Rq0Yr!k5L_hy06YHIk5T{t literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/loading.gif b/Webhelp/template/common/images/loading.gif new file mode 100755 index 0000000000000000000000000000000000000000..085ccaecaf5fa5c34bc14cd2c2ed5cbbd8e25dcb GIT binary patch literal 1553 zcma)+TTl~c6vwlh>nb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/logo.png b/Webhelp/template/common/images/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..b111258c0ca80f948528d9fe96d1288b257c5a1d GIT binary patch literal 35061 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 literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/previous-arrow.png b/Webhelp/template/common/images/previous-arrow.png new file mode 100755 index 0000000000000000000000000000000000000000..347bc53474ce6f9246e45a2784623ac3c55203fa GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dF8<0HkD{mW+k}PqJC<)F_D=AMbN@Z|N$xljE z@XSq2PYp^(7*cU7>Bs;7_RM+{CQNw1Fo``;OomIOA;eyQoxxDq zqleYEkzs-s!=tK_vpODKLJPP=Hrzbak`ij8=UULpEv8e!aHP*6O-Z2sz)AtOhAwdi tO;?4yBLSV-6%OYZAAQ~MfRV$1!EulJ!>J6GyMcBxc)I$ztaD0e0sv`WKHvZV literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/search-icon.png b/Webhelp/template/common/images/search-icon.png new file mode 100755 index 0000000000000000000000000000000000000000..715f62d08b07f857b5866aadab38c9275c1c7513 GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6L!3HE_wj8emQjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sf9Y#@6Www1Qyw!k0S3F%DLp+YZ zy<+I?6ez>`Aztf}Sn4}APCv){3l|=>Yl)V3lbRE=XyLww>=g=mre-ad1o$;s=E~eD z+1Y%=dExh#rt)dr&+9GQtIt35Z{zvT^t|GLxm`j3W0RKkh6mMWWjy3Aj!_ZROK!09 ztNWn5M@?|QQ%lvEHI1z2$~vEH`%o!!e`u6{1-oD!M<4CsTk literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/showHideTreeIcons.png b/Webhelp/template/common/images/showHideTreeIcons.png new file mode 100755 index 0000000000000000000000000000000000000000..c1ec1f96a4c519610064feea6de06358e9f6e38a GIT binary patch literal 726 zcmV;{0xA88P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igY> z6BZ`#&b%i800LG?L_t(Y$L-b2ZW2)($MNr6N{|8D3Y1Hs4@EXeks5%$)hVFkKicx7iruNhXt=oZtVGoO9+s+TNG1A|i+gzW?(r z;&VCo>%25YWQu^ooPi>ZYKsMQ;c$770xZ9<{Y za&RV{W_@jq+J2p0|9r0P^L-zuT0<$HaIF053r`_&Cm&Q{H+i}n| zol>cYVHoql>ual|Qz?#HE!v&VQa5(ux>Ov8(8>zsVgXIlX2aP`n!#Ym;n8uR&t)_k zQLER9MlBNY8?)il(=L`3A(==7fXLs^cFj7>-y*CeEhVB^3=@cQL(EGFNSj+i#gA^xvn=?v5V2@-~JyT1jz=0 z-v`KkSQhRWhVf$AEbx3$xCy)l?!;ozMYp;QyaDb$+P#1H11-^gON17#t^fc407*qo IM6N<$g5CR900000 literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/sidebar.png b/Webhelp/template/common/images/sidebar.png new file mode 100755 index 0000000000000000000000000000000000000000..5492671871c1fdb7c149bf233e34ebddd074c777 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp@K+MU(1SHcW3~hmwWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8U{4pvkcwMLbBxo^O;mQ5C}5VBp8e!WN?S`y%iQnt-qwGU z>u7lMf5n5>*VhX;sx9C%(%2aC{q^zkm`nHf)ixVQbn@6YFfcQ; Xxf$LLJ^5Y}Xgq_btDnm{r-UW|fBilp literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/images/starsSmall.png b/Webhelp/template/common/images/starsSmall.png new file mode 100755 index 0000000000000000000000000000000000000000..490a27b9255075c8ce355aa3e36f89c82038b794 GIT binary patch literal 1032 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").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
                  a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="

                  "+""+"
                  ",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
                  t
                  ",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
                  ",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

                  ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
                  ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
                  ","
                  "],thead:[1,"","
                  "],tr:[2,"","
                  "],td:[3,"","
                  "],col:[2,"","
                  "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
                  ","
                  "]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
                  ").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/Webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js b/Webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js new file mode 100755 index 0000000..fec53e8 --- /dev/null +++ b/Webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js @@ -0,0 +1,321 @@ +/*! + * jQuery UI 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +(function(c){c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.2",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Widget + */ +(function(b){var j=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add(this).each(function(){b(this).triggerHandler("remove")});return j.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend({},c.options);b[e][a].prototype= +b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==undefined){h=i;return false}}):this.each(function(){var g= +b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){this.element=b(c).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create(); +this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===undefined)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/*! + * jQuery UI Mouse 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&& +this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault(); +return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&& +this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX- +a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Resizable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.resizable",d.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");d.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element, +_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&d.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(d('
                  ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!d(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var e=0;e
                  ');/sw|se|ne|nw/.test(g)&&f.css({zIndex:++a.zIndex});"se"==g&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[g]=".ui-resizable-"+g;this.element.append(f)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=d(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=d(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}d(this.handles[i])}};this._renderAxis(this.element);this._handles=d(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();d(this.element).addClass("ui-resizable-autohide").hover(function(){d(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){d(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){d(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(d(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +e=this.element;this.resizing=true;this.documentScroll={top:d(document).scrollTop(),left:d(document).scrollLeft()};if(e.is(".ui-draggable")||/absolute/.test(e.css("position")))e.css({position:"absolute",top:c.top,left:c.left});d.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var g=m(this.helper.css("top"));if(a.containment){c+=d(a.containment).scrollLeft()||0;g+=d(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:g};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:c,top:g};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=d(".ui-resizable-"+this.axis).css("cursor");d("body").css("cursor",a=="auto"?this.axis+"-resize":a);e.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,e=this._change[this.axis];if(!e)return false;c=e.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var e=this._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName);e=g&&d.ui.hasScroll(e[0],"left")?0:c.sizeDiff.height; +g={width:c.size.width-(g?0:c.sizeDiff.width),height:c.size.height-e};e=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var f=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(d.extend(g,{top:f,left:e}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}d("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,e=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(e=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(e=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,e=k(b.width)&&a.maxWidth&&a.maxWidthb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(f)b.width=a.minWidth;if(h)b.height=a.minHeight;if(e)b.width=a.maxWidth;if(g)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(f&&l)b.left=i-a.minWidth;if(e&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(g&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=d.browser.msie&&d.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return d.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return d.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){d.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});d.extend(d.ui.resizable, +{version:"1.8.2"});d.ui.plugin.add("resizable","alsoResize",{start:function(){var b=d(this).data("resizable").options,a=function(c){d(c).each(function(){d(this).data("resizable-alsoresize",{width:parseInt(d(this).width(),10),height:parseInt(d(this).height(),10),left:parseInt(d(this).css("left"),10),top:parseInt(d(this).css("top"),10)})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else d.each(b.alsoResize,function(c){a(c)}); +else a(b.alsoResize)},resize:function(){var b=d(this).data("resizable"),a=b.options,c=b.originalSize,e=b.originalPosition,g={height:b.size.height-c.height||0,width:b.size.width-c.width||0,top:b.position.top-e.top||0,left:b.position.left-e.left||0},f=function(h,i){d(h).each(function(){var j=d(this),l=d(this).data("resizable-alsoresize"),p={};d.each((i&&i.length?i:["width","height","top","left"])||["width","height","top","left"],function(n,o){if((n=(l[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(/relative/.test(j.css("position"))&& +d.browser.opera){b._revertToRelativePosition=true;j.css({position:"absolute",top:"auto",left:"auto"})}j.css(p)})};typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?d.each(a.alsoResize,function(h,i){f(h,i)}):f(a.alsoResize)},stop:function(){var b=d(this).data("resizable");if(b._revertToRelativePosition&&d.browser.opera){b._revertToRelativePosition=false;el.css({position:"relative"})}d(this).removeData("resizable-alsoresize-start")}});d.ui.plugin.add("resizable","animate",{stop:function(b){var a= +d(this).data("resizable"),c=a.options,e=a._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName),f=g&&d.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height;g={width:a.size.width-(g?0:a.sizeDiff.width),height:a.size.height-f};f=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(d.extend(g,h&&f?{top:h,left:f}:{}),{duration:c.animateDuration,easing:c.animateEasing, +step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&d(e[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});d.ui.plugin.add("resizable","containment",{start:function(){var b=d(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof d?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= +d(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:d(document),left:0,top:0,width:d(document).width(),height:d(document).height()||document.body.parentNode.scrollHeight}}else{var e=d(a),g=[];d(["Top","Right","Left","Bottom"]).each(function(i,j){g[i]=m(e.css("padding"+j))});b.containerOffset=e.offset();b.containerPosition=e.position();b.containerSize={height:e.innerHeight()-g[3],width:e.innerWidth()-g[1]};c=b.containerOffset; +var f=b.containerSize.height,h=b.containerSize.width;h=d.ui.hasScroll(a,"left")?a.scrollWidth:h;f=d.ui.hasScroll(a)?a.scrollHeight:f;b.parentData={element:a,left:c.left,top:c.top,width:h,height:f}}}},resize:function(b){var a=d(this).data("resizable"),c=a.options,e=a.containerOffset,g=a.position;b=a._aspectRatio||b.shiftKey;var f={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))f=e;if(g.left<(a._helper?e.left:0)){a.size.width+=a._helper?a.position.left-e.left: +a.position.left-f.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?e.left:0}if(g.top<(a._helper?e.top:0)){a.size.height+=a._helper?a.position.top-e.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?e.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-f.left:a.offset.left-f.left)+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-f.top:a.offset.top- +e.top)+a.sizeDiff.height);g=a.containerElement.get(0)==a.element.parent().get(0);f=/relative|absolute/.test(a.containerElement.css("position"));if(g&&f)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(e+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-e;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=d(this).data("resizable"),a=b.options,c=b.containerOffset,e=b.containerPosition, +g=b.containerElement,f=d(b.helper),h=f.offset(),i=f.outerWidth()-b.sizeDiff.width;f=f.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f});b._helper&&!a.animate&&/static/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f})}});d.ui.plugin.add("resizable","ghost",{start:function(){var b=d(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, +display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=d(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=d(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});d.ui.plugin.add("resizable","grid",{resize:function(){var b= +d(this).data("resizable"),a=b.options,c=b.size,e=b.originalSize,g=b.originalPosition,f=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-e.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-e.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a}else if(/^(ne)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}else{if(/^(sw)$/.test(f)){b.size.width=e.width+h;b.size.height= +e.height+a}else{b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}b.position.left=g.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +; +/* + * jQuery UI Selectable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
                  ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom").addClass("ui-autocomplete").appendTo("body",c).mousedown(function(){setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(d,b){b=b.item.data("item.autocomplete"); +false!==a._trigger("focus",null,{item:b})&&/^key/.test(d.originalEvent.type)&&a.element.val(b.value)},selected:function(d,b){b=b.item.data("item.autocomplete");false!==a._trigger("select",d,{item:b})&&a.element.val(b.value);a.close(d);d=a.previous;if(a.element[0]!==c.activeElement){a.element.focus();a.previous=d}a.selectedItem=b},blur:function(){a.menu.element.is(":visible")&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()}, +destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource()},_initSource:function(){var a,c;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(d,b){b(e.ui.autocomplete.filter(a,d.term))}}else if(typeof this.options.source=== +"string"){c=this.options.source;this.source=function(d,b){e.getJSON(c,d,b)}}else this.source=this.options.source},search:function(a,c){a=a!=null?a:this.element.val();if(a.length").data("item.autocomplete", +c).append(""+c.label+"").appendTo(a)},_move:function(a,c){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](c);else this.search(null,c)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")},filter:function(a,c){var d=new RegExp(e.ui.autocomplete.escapeRegex(c), +"i");return e.grep(a,function(b){return d.test(b.label||b.value||b)})}})})(jQuery); +(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(e(c.target).closest(".ui-menu-item a").length){c.preventDefault();a.select(c)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,b=this.element.attr("scrollTop"),f=this.element.height();if(d<0)this.element.attr("scrollTop",b+d);else d>f&&this.element.attr("scrollTop",b+d-f+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); +this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prev().length},last:function(){return this.active&&!this.active.next().length},move:function(a,c,d){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(d,a):this.activate(d,this.element.children(c))}else this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active|| +this.last())this.activate(a,this.element.children(":first"));else{var c=this.active.offset().top,d=this.element.height(),b=this.element.children("li").filter(function(){var f=e(this).offset().top-c-d+e(this).height();return f<10&&f>-10});b.length||(b=this.element.children(":last"));this.activate(a,b)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last")); +else{var c=this.active.offset().top,d=this.element.height();result=this.element.children("li").filter(function(){var b=e(this).offset().top-c+d-e(this).height();return b<10&&b>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":""));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");var a=this,b=a.options,d=b.title||a.originalTitle||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
                  ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
                  ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), +h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", +e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== +b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index", +c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== +f[0]&&e.shiftKey){g.focus(1);return false}}});c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false,e=c("
                  ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a, +function(g,f){g=c('').text(g).click(function(){f.apply(b.element[0],arguments)}).appendTo(e);c.fn.button&&g.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging"); +b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,position:f.position,size:f.size}}a=a===undefined?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position"); +a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop", +f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0];a=a||c.ui.dialog.prototype.options.position;if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(e,g){if(+b[e]===b[e]){d[e]=b[e];b[e]= +g}})}else if(typeof a==="object"){if("left"in a){b[0]="left";d[0]=a.left}else if("right"in a){b[0]="right";d[0]=-a.right}if("top"in a){b[1]="top";d[1]=a.top}else if("bottom"in a){b[1]="bottom";d[1]=-a.bottom}}(a=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position({my:b.join(" "),at:b.join(" "),offset:d.join(" "),of:window,collision:"fit",using:function(e){var g=c(this).css(e).offset().top;g<0&&c(this).css("top",e.top-g)}});a||this.uiDialog.hide()},_setOption:function(a, +b){var d=this,e=d.uiDialog,g=e.is(":data(resizable)"),f=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");break;case "draggable":b?d._makeDraggable():e.draggable("destroy");break; +case "height":f=true;break;case "maxHeight":g&&e.resizable("option","maxHeight",b);f=true;break;case "maxWidth":g&&e.resizable("option","maxWidth",b);f=true;break;case "minHeight":g&&e.resizable("option","minHeight",b);f=true;break;case "minWidth":g&&e.resizable("option","minWidth",b);f=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title", +d.uiDialogTitlebar).html(""+(b||" "));break;case "width":f=true;break}c.Widget.prototype._setOption.apply(d,arguments);f&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight", +this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.2",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&& +c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
                  ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&& +b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight, +document.body.offsetHeight);return a",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:'
                • #{label}
                • '},_create:function(){this._tabify(true)},_setOption:function(c,e){if(c=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[c]=e;this._tabify()}},_tabId:function(c){return c.title&&c.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+s()},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_cookie:function(){var c=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+v());return d.cookie.apply(null,[c].concat(d.makeArray(arguments)))},_ui:function(c,e){return{tab:c,panel:e,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var c= +d(this);c.html(c.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function e(g,f){g.css({display:""});!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);var a=this,b=this.options,h=/^#.+/;this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],p;if(l&&(l===location.toString().split("#")[0]|| +(p=d("base")[0])&&l===p.href)){j=f.hash;f.href=j}if(h.test(j))a.panels=a.panels.add(a._sanitizeSelector(j));else if(j!="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=a._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(b.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else b.disabled.push(g)});if(c){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(b.selected===undefined){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){b.selected=g;return false}});if(typeof b.selected!="number"&&b.cookie)b.selected=parseInt(a._cookie(),10);if(typeof b.selected!="number"&&this.lis.filter(".ui-tabs-selected").length)b.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));b.selected=b.selected||(this.lis.length?0:-1)}else if(b.selected===null)b.selected=-1;b.selected=b.selected>=0&&this.anchors[b.selected]||b.selected<0?b.selected:0;b.disabled=d.unique(b.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(b.selected,b.disabled)!=-1&&b.disabled.splice(d.inArray(b.selected,b.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(b.selected>=0&&this.anchors.length){this.panels.eq(b.selected).removeClass("ui-tabs-hide");this.lis.eq(b.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[b.selected],a.panels[b.selected]))});this.load(b.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else b.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[b.collapsible?"addClass": +"removeClass"]("ui-tabs-collapsible");b.cookie&&this._cookie(b.selected,b.cookie);c=0;for(var i;i=this.lis[c];c++)d(i)[d.inArray(c,b.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");b.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(b.event!="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs", +function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(b.fx)if(d.isArray(b.fx)){m=b.fx[0];o=b.fx[1]}else m=o=b.fx;var q=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show", +null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},r=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(b.event+".tabs", +function(){var g=this,f=d(this).closest("li"),j=a.panels.filter(":not(.ui-tabs-hide)"),l=d(a._sanitizeSelector(this.hash));if(f.hasClass("ui-tabs-selected")&&!b.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}b.selected=a.anchors.index(this);a.abort();if(b.collapsible)if(f.hasClass("ui-tabs-selected")){b.selected=-1;b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){r(g, +j)}).dequeue("tabs");this.blur();return false}else if(!j.length){b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this));this.blur();return false}b.cookie&&a._cookie(b.selected,b.cookie);if(l.length){j.length&&a.element.queue("tabs",function(){r(g,j)});a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs", +function(){return false})},destroy:function(){var c=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(b,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this, +"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});c.cookie&&this._cookie(null,c.cookie);return this},add:function(c,e,a){if(a===undefined)a=this.anchors.length;var b=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,e));c=!c.indexOf("#")?c.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs", +true);var i=d("#"+c);i.length||(i=d(h.panelTemplate).attr("id",c).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);i.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide"); +this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(c){var e=this.options,a=this.lis.eq(c).remove(),b=this.panels.eq(c).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(c+(c+1=c?--h:h});this._tabify();this._trigger("remove", +null,this._ui(a.find("a")[0],b[0]));return this},enable:function(c){var e=this.options;if(d.inArray(c,e.disabled)!=-1){this.lis.eq(c).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=c});this._trigger("enable",null,this._ui(this.anchors[c],this.panels[c]));return this}},disable:function(c){var e=this.options;if(c!=e.selected){this.lis.eq(c).addClass("ui-state-disabled");e.disabled.push(c);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}return this}, +select:function(c){if(typeof c=="string")c=this.anchors.index(this.anchors.filter("[href$="+c+"]"));else if(c===null)c=-1;if(c==-1&&this.options.collapsible)c=this.options.selected;this.anchors.eq(c).trigger(this.options.event+".tabs");return this},load:function(c){var e=this,a=this.options,b=this.anchors.eq(c)[0],h=d.data(b,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(b,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(c).addClass("ui-state-processing"); +if(a.spinner){var i=d("span",b);i.data("label.tabs",i.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(b.hash)).html(k);e._cleanup();a.cache&&d.data(b,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.error(k,n,c,b)}catch(m){}}}));e.element.dequeue("tabs");return this}}, +abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(c,e){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.2"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(c,e){var a=this,b=this.options,h=a._rotate||(a._rotate= +function(i){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=b.selected;a.select(++k").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"}); +c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=j.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c|| +typeof c=="number"||f.fx.speeds[c])return this._show.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c])return this._hide.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||typeof c=="boolean"||f.isFunction(c))return this.__toggle.apply(this, +arguments);else{var a=j.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+ +b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2, +10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)* +a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(b(this).offset()).appendTo("body")});return!0},_mouseStart:function(a){var c=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();b.ui.ddmanager&&(b.ui.ddmanager.current=this); +this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY= +a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);c.containment&&this._setContainment();if(!1===this._trigger("start",a))return this._clear(),!1;this._cacheHelperProportions();b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,!0);b.ui.ddmanager&&b.ui.ddmanager.dragStart(this,a);return!0},_mouseDrag:function(a,c){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +if(!c){var d=this._uiHash();if(!1===this._trigger("drag",a,d))return this._mouseUp({}),!1;this.position=d.position}if(!this.options.axis||"y"!=this.options.axis)this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||"x"!=this.options.axis)this.helper[0].style.top=this.position.top+"px";b.ui.ddmanager&&b.ui.ddmanager.drag(this,a);return!1},_mouseStop:function(a){var c=!1;b.ui.ddmanager&&!this.options.dropBehaviour&&(c=b.ui.ddmanager.drop(this,a));this.dropped&&(c=this.dropped,this.dropped= +!1);if((!this.element[0]||!this.element[0].parentNode)&&"original"==this.options.helper)return!1;if("invalid"==this.options.revert&&!c||"valid"==this.options.revert&&c||!0===this.options.revert||b.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;b(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",a)!==false&&d._clear()})}else!1!==this._trigger("stop",a)&&this._clear();return!1},_mouseUp:function(a){!0=== +this.options.iframeFix&&b("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});b.ui.ddmanager&&b.ui.ddmanager.dragStop(this,a);return b.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var c=!this.options.handle||!b(this.options.handle,this.element).length?!0:!1;b(this.options.handle,this.element).find("*").andSelf().each(function(){this==a.target&&(c= +!0)});return c},_createHelper:function(a){var c=this.options,a=b.isFunction(c.helper)?b(c.helper.apply(this.element[0],[a])):"clone"==c.helper?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo("parent"==c.appendTo?this.element[0].parentNode:c.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){"string"==typeof a&&(a=a.split(" "));b.isArray(a)&&(a={left:+a[0],top:+a[1]|| +0});"left"in a&&(this.offset.click.left=a.left+this.margins.left);"right"in a&&(this.offset.click.left=this.helperProportions.width-a.right+this.margins.left);"top"in a&&(this.offset.click.top=a.top+this.margins.top);"bottom"in a&&(this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();"absolute"==this.cssPosition&&(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0], +this.offsetParent[0]))&&(a.left+=this.scrollParent.scrollLeft(),a.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&"html"==this.offsetParent[0].tagName.toLowerCase()&&b.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"==this.cssPosition){var b=this.element.position();return{top:b.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(), +height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;"parent"==a.containment&&(a.containment=this.helper[0].parentNode);if("document"==a.containment||"window"==a.containment)this.containment=["document"==a.containment?0:b(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,"document"==a.containment?0:b(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,("document"==a.containment?0:b(window).scrollLeft())+b("document"==a.containment?document: +window).width()-this.helperProportions.width-this.margins.left,("document"==a.containment?0:b(window).scrollTop())+(b("document"==a.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var a=b(a.containment),c=a[0];if(c){a.offset();var d="hidden"!=b(c).css("overflow");this.containment=[(parseInt(b(c).css("borderLeftWidth"),10)||0)+(parseInt(b(c).css("paddingLeft"), +10)||0),(parseInt(b(c).css("borderTopWidth"),10)||0)+(parseInt(b(c).css("paddingTop"),10)||0),(d?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(b(c).css("borderLeftWidth"),10)||0)-(parseInt(b(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(d?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(b(c).css("borderTopWidth"),10)||0)-(parseInt(b(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom]; +this.relative_container=a}}else a.containment.constructor==Array&&(this.containment=a.containment)},_convertPositionTo:function(a,c){c||(c=this.position);var d="absolute"==a?1:-1,g="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(g[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition? +0:("fixed"==this.cssPosition?-this.scrollParent.scrollTop():h?0:g.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():h?0:g.scrollLeft())*d)}},_generatePosition:function(a){var c=this.options,d="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent, +g=/(html|body)/i.test(d[0].tagName),h=a.pageX,e=a.pageY;if(this.originalPosition){var f;this.containment&&(this.relative_container?(f=this.relative_container.offset(),f=[this.containment[0]+f.left,this.containment[1]+f.top,this.containment[2]+f.left,this.containment[3]+f.top]):f=this.containment,a.pageX-this.offset.click.leftf[2]&&(h=f[2]+this.offset.click.left), +a.pageY-this.offset.click.top>f[3]&&(e=f[3]+this.offset.click.top));c.grid&&(e=c.grid[1]?this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY,e=f?!(e-this.offset.click.topf[3])?e:!(e-this.offset.click.topf[2])?h:!(h-this.offset.click.left< +f[0])?h-c.grid[0]:h+c.grid[0]:h)}return{top:e-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollTop():g?0:d.scrollTop()),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollLeft():g?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"); +this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=!1},_trigger:function(a,c,d){d=d||this._uiHash();b.ui.plugin.call(this,a,[c,d]);"drag"==a&&(this.positionAbs=this._convertPositionTo("absolute"));return b.Widget.prototype._trigger.call(this,a,c,d)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});b.extend(b.ui.draggable,{version:"1.8.14"}); +b.ui.plugin.add("draggable","connectToSortable",{start:function(a,c){var d=b(this).data("draggable"),g=d.options,h=b.extend({},c,{item:d.element});d.sortables=[];b(g.connectToSortable).each(function(){var c=b.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",a,h))})},stop:function(a,c){var d=b(this).data("draggable"),g=b.extend({},c,{item:d.element});b.each(d.sortables,function(){this.instance.isOver? +(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(a),this.instance.options.helper=this.instance.options._helper,"original"==d.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",a,g))})},drag:function(a,c){var d=b(this).data("draggable"),g=this;b.each(d.sortables,function(){this.instance.positionAbs= +d.positionAbs;this.instance.helperProportions=d.helperProportions;this.instance.offset.click=d.offset.click;this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=b(g).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},a.target=this.instance.currentItem[0],this.instance._mouseCapture(a, +!0),this.instance._mouseStart(a,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",a),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(a)):this.instance.isOver&& +(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",a,this.instance._uiHash(this.instance)),this.instance._mouseStop(a,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",a),d.dropped=!1)})}});b.ui.plugin.add("draggable","cursor",{start:function(){var a=b("body"),c=b(this).data("draggable").options; +a.css("cursor")&&(c._cursor=a.css("cursor"));a.css("cursor",c.cursor)},stop:function(){var a=b(this).data("draggable").options;a._cursor&&b("body").css("cursor",a._cursor)}});b.ui.plugin.add("draggable","opacity",{start:function(a,c){var d=b(c.helper),g=b(this).data("draggable").options;d.css("opacity")&&(g._opacity=d.css("opacity"));d.css("opacity",g.opacity)},stop:function(a,c){var d=b(this).data("draggable").options;d._opacity&&b(c.helper).css("opacity",d._opacity)}});b.ui.plugin.add("draggable", +"scroll",{start:function(){var a=b(this).data("draggable");a.scrollParent[0]!=document&&"HTML"!=a.scrollParent[0].tagName&&(a.overflowOffset=a.scrollParent.offset())},drag:function(a){var c=b(this).data("draggable"),d=c.options,g=!1;if(c.scrollParent[0]!=document&&"HTML"!=c.scrollParent[0].tagName){if(!d.axis||"x"!=d.axis)c.overflowOffset.top+c.scrollParent[0].offsetHeight-a.pageY=k&&e<=l||f>=k&&f<=l||el)&&(g>=i&&g<=j||h>=i&&h<=j||gj);default:return!1}}; +b.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,c){var d=b.ui.ddmanager.droppables[a.options.scope]||[],g=c?c.type:null,h=(a.currentItem||a.element).find(":data(droppable)").andSelf(),e=0;a:for(;e').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})), +this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize", +"none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize());this.handles=a.handles||(!b(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){"all"== +this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw");var h=this.handles.split(",");this.handles={};for(var e=0;e');/sw|se|ne|nw/.test(f)&&i.css({zIndex:++a.zIndex});"se"==f&&i.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(i)}}this._renderAxis=function(f){var f=f||this.element,c;for(c in this.handles){this.handles[c].constructor==String&&(this.handles[c]= +b(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var a=b(this.handles[c],this.element),d=0,d=/sw|ne|nw|se|n|s/.test(c)?a.outerHeight():a.outerWidth(),a=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");f.css(a,d);this._proportionallyResize()}b(this.handles[c])}};this._renderAxis(this.element);this._handles=b(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!c.resizing){if(this.className)var b=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);c.axis=b&&b[1]?b[1]:"se"}});a.autoHide&&(this._handles.hide(),b(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){b(this).removeClass("ui-resizable-autohide");c._handles.show()}},function(){if(!a.disabled&&!c.resizing){b(this).addClass("ui-resizable-autohide");c._handles.hide()}}));this._mouseInit()},destroy:function(){this._mouseDestroy(); +var c=function(c){b(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){c(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);c(this.originalElement);return this},_mouseCapture:function(c){var a= +!1,h;for(h in this.handles)b(this.handles[h])[0]==c.target&&(a=!0);return!this.options.disabled&&a},_mouseStart:function(c){var g=this.options,h=this.element.position(),e=this.element;this.resizing=!0;this.documentScroll={top:b(document).scrollTop(),left:b(document).scrollLeft()};(e.is(".ui-draggable")||/absolute/.test(e.css("position")))&&e.css({position:"absolute",top:h.top,left:h.left});b.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy(); +var h=a(this.helper.css("left")),f=a(this.helper.css("top"));g.containment&&(h+=b(g.containment).scrollLeft()||0,f+=b(g.containment).scrollTop()||0);this.offset=this.helper.offset();this.position={left:h,top:f};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:h,top:f};this.sizeDiff={width:e.outerWidth()- +e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:c.pageX,top:c.pageY};this.aspectRatio="number"==typeof g.aspectRatio?g.aspectRatio:this.originalSize.width/this.originalSize.height||1;g=b(".ui-resizable-"+this.axis).css("cursor");b("body").css("cursor","auto"==g?this.axis+"-resize":g);e.addClass("ui-resizable-resizing");this._propagate("start",c);return!0},_mouseDrag:function(b){var c=this.helper,a=this.originalMousePosition,e=this._change[this.axis];if(!e)return!1;a= +e.apply(this,[b,b.pageX-a.left||0,b.pageY-a.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)a=this._updateRatio(a,b);a=this._respectSize(a,b);this._propagate("resize",b);c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(a);this._trigger("resize",b,this.ui());return!1},_mouseStop:function(c){this.resizing= +!1;var a=this.options;if(this._helper){var h=this._proportionallyResizeElements,e=h.length&&/textarea/i.test(h[0].nodeName),h=e&&b.ui.hasScroll(h[0],"left")?0:this.sizeDiff.height,e=e?0:this.sizeDiff.width,e={width:this.helper.width()-e,height:this.helper.height()-h},h=parseInt(this.element.css("left"),10)+(this.position.left-this.originalPosition.left)||null,f=parseInt(this.element.css("top"),10)+(this.position.top-this.originalPosition.top)||null;a.animate||this.element.css(b.extend(e,{top:f,left:h})); +this.helper.height(this.size.height);this.helper.width(this.size.width);this._helper&&!a.animate&&this._proportionallyResize()}b("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",c);this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(b){var a=this.options,h,e,f,a={minWidth:c(a.minWidth)?a.minWidth:0,maxWidth:c(a.maxWidth)?a.maxWidth:Infinity,minHeight:c(a.minHeight)?a.minHeight:0,maxHeight:c(a.maxHeight)?a.maxHeight:Infinity}; +if(this._aspectRatio||b)if(b=a.minHeight*this.aspectRatio,e=a.minWidth/this.aspectRatio,h=a.maxHeight*this.aspectRatio,f=a.maxWidth/this.aspectRatio,b>a.minWidth&&(a.minWidth=b),e>a.minHeight&&(a.minHeight=e),hb.width,j=c(b.height)&&a.minHeight&&a.minHeight> +b.height;i&&(b.width=a.minWidth);j&&(b.height=a.minHeight);e&&(b.width=a.maxWidth);f&&(b.height=a.maxHeight);var k=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,m=/sw|nw|w/.test(h),h=/nw|ne|n/.test(h);i&&m&&(b.left=k-a.minWidth);e&&m&&(b.left=k-a.maxWidth);j&&h&&(b.top=l-a.minHeight);f&&h&&(b.top=l-a.maxHeight);(a=!b.width&&!b.height)&&!b.left&&b.top?b.top=null:a&&(!b.top&&b.left)&&(b.left=null);return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var c= +this.helper||this.element,a=0;a');var a=b.browser.msie&&7>b.browser.version,h=a?1:0,a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-h+"px",top:this.elementOffset.top- +h+"px",zIndex:++c.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,c){return{width:this.originalSize.width+c}},w:function(b,c){return{left:this.originalPosition.left+c,width:this.originalSize.width-c}},n:function(b,c,a){return{top:this.originalPosition.top+a,height:this.originalSize.height-a}},s:function(b,c,a){return{height:this.originalSize.height+a}},se:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.e.apply(this, +[c,a,h]))},sw:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[c,a,h]))},ne:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[c,a,h]))},nw:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[c,a,h]))}},_propagate:function(c,a){b.ui.plugin.call(this,c,[a,this.ui()]);"resize"!=c&&this._trigger(c,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement, +element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});b.extend(b.ui.resizable,{version:"1.8.14"});b.ui.plugin.add("resizable","alsoResize",{start:function(){var c=b(this).data("resizable").options,a=function(c){b(c).each(function(){var c=b(this);c.data("resizable-alsoresize",{width:parseInt(c.width(),10),height:parseInt(c.height(),10),left:parseInt(c.css("left"),10),top:parseInt(c.css("top"),10),position:c.css("position")})})}; +"object"==typeof c.alsoResize&&!c.alsoResize.parentNode?c.alsoResize.length?(c.alsoResize=c.alsoResize[0],a(c.alsoResize)):b.each(c.alsoResize,function(b){a(b)}):a(c.alsoResize)},resize:function(c,a){var h=b(this).data("resizable"),e=h.options,f=h.originalSize,i=h.originalPosition,j={height:h.size.height-f.height||0,width:h.size.width-f.width||0,top:h.position.top-i.top||0,left:h.position.left-i.left||0},k=function(c,f){b(c).each(function(){var c=b(this),d=b(this).data("resizable-alsoresize"),i={}, +e=f&&f.length?f:c.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];b.each(e,function(b,c){var a=(d[c]||0)+(j[c]||0);a&&0<=a&&(i[c]=a||null)});b.browser.opera&&/relative/.test(c.css("position"))&&(h._revertToRelativePosition=!0,c.css({position:"absolute",top:"auto",left:"auto"}));c.css(i)})};"object"==typeof e.alsoResize&&!e.alsoResize.nodeType?b.each(e.alsoResize,function(b,c){k(b,c)}):k(e.alsoResize)},stop:function(){var c=b(this).data("resizable"),a=c.options, +h=function(c){b(c).each(function(){var c=b(this);c.css({position:c.data("resizable-alsoresize").position})})};c._revertToRelativePosition&&(c._revertToRelativePosition=!1,"object"==typeof a.alsoResize&&!a.alsoResize.nodeType?b.each(a.alsoResize,function(b){h(b)}):h(a.alsoResize));b(this).removeData("resizable-alsoresize")}});b.ui.plugin.add("resizable","animate",{stop:function(c){var a=b(this).data("resizable"),h=a.options,e=a._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName), +i=f&&b.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height,f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-i},i=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null,j=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(b.extend(f,j&&i?{top:j,left:i}:{}),{duration:h.animateDuration,easing:h.animateEasing,step:function(){var f={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10), +top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&b(e[0]).css({width:f.width,height:f.height});a._updateCache(f);a._propagate("resize",c)}})}});b.ui.plugin.add("resizable","containment",{start:function(){var c=b(this).data("resizable"),g=c.element,h=c.options.containment;if(g=h instanceof b?h.get(0):/parent/.test(h)?g.parent().get(0):h)if(c.containerElement=b(g),/document/.test(h)||h==document)c.containerOffset={left:0,top:0},c.containerPosition={left:0,top:0}, +c.parentData={element:b(document),left:0,top:0,width:b(document).width(),height:b(document).height()||document.body.parentNode.scrollHeight};else{var e=b(g),f=[];b(["Top","Right","Left","Bottom"]).each(function(b,c){f[b]=a(e.css("padding"+c))});c.containerOffset=e.offset();c.containerPosition=e.position();c.containerSize={height:e.innerHeight()-f[3],width:e.innerWidth()-f[1]};var h=c.containerOffset,i=c.containerSize.height,j=c.containerSize.width,j=b.ui.hasScroll(g,"left")?g.scrollWidth:j,i=b.ui.hasScroll(g)? +g.scrollHeight:i;c.parentData={element:g,left:h.left,top:h.top,width:j,height:i}}},resize:function(c){var a=b(this).data("resizable"),h=a.options,e=a.containerOffset,f=a.position,c=a._aspectRatio||c.shiftKey,i={top:0,left:0},j=a.containerElement;j[0]!=document&&/static/.test(j.css("position"))&&(i=e);if(f.left<(a._helper?e.left:0))a.size.width+=a._helper?a.position.left-e.left:a.position.left-i.left,c&&(a.size.height=a.size.width/h.aspectRatio),a.position.left=h.helper?e.left:0;if(f.top<(a._helper? +e.top:0))a.size.height+=a._helper?a.position.top-e.top:a.position.top,c&&(a.size.width=a.size.height*h.aspectRatio),a.position.top=a._helper?e.top:0;a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;h=Math.abs(a.offset.left-i.left+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-i.top:a.offset.top-e.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);i=/relative|absolute/.test(a.containerElement.css("position"));f&&i&&(h-=a.parentData.left); +h+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-h,c&&(a.size.height=a.size.width/a.aspectRatio));e+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-e,c&&(a.size.width=a.size.height*a.aspectRatio))},stop:function(){var a=b(this).data("resizable"),c=a.options,h=a.containerOffset,e=a.containerPosition,f=a.containerElement,i=b(a.helper),j=i.offset(),k=i.outerWidth()-a.sizeDiff.width,i=i.outerHeight()-a.sizeDiff.height;a._helper&&(!c.animate&&/relative/.test(f.css("position")))&& +b(this).css({left:j.left-e.left-h.left,width:k,height:i});a._helper&&(!c.animate&&/static/.test(f.css("position")))&&b(this).css({left:j.left-e.left-h.left,width:k,height:i})}});b.ui.plugin.add("resizable","ghost",{start:function(){var a=b(this).data("resizable"),c=a.options,h=a.size;a.ghost=a.originalElement.clone();a.ghost.css({opacity:0.25,display:"block",position:"relative",height:h.height,width:h.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof c.ghost?c.ghost: +"");a.ghost.appendTo(a.helper)},resize:function(){var a=b(this).data("resizable");a.ghost&&a.ghost.css({position:"relative",height:a.size.height,width:a.size.width})},stop:function(){var a=b(this).data("resizable");a.ghost&&a.helper&&a.helper.get(0).removeChild(a.ghost.get(0))}});b.ui.plugin.add("resizable","grid",{resize:function(){var a=b(this).data("resizable"),c=a.options,h=a.size,e=a.originalSize,f=a.originalPosition,i=a.axis;c.grid="number"==typeof c.grid?[c.grid,c.grid]:c.grid;var j=Math.round((h.width- +e.width)/(c.grid[0]||1))*(c.grid[0]||1),c=Math.round((h.height-e.height)/(c.grid[1]||1))*(c.grid[1]||1);/^(se|s|e)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):/^(ne)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c):(/^(sw)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c),a.position.left=f.left-j)}});var a=function(b){return parseInt(b,10)||0},c=function(b){return!isNaN(parseInt(b, +10))}})(jQuery); +(function(b){b.widget("ui.selectable",b.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var a=this;this.element.addClass("ui-selectable");this.dragged=!1;var c;this.refresh=function(){c=b(a.options.filter,a.element[0]);c.each(function(){var a=b(this),c=a.offset();b.data(this,"selectable-item",{element:this,$element:a,left:c.left,top:c.top,right:c.left+a.outerWidth(),bottom:c.top+a.outerHeight(),startselected:!1,selected:a.hasClass("ui-selected"),selecting:a.hasClass("ui-selecting"), +unselecting:a.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=b("
                  ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(a){var c=this;this.opos=[a.pageX,a.pageY];if(!this.options.disabled){var d= +this.options;this.selectees=b(d.filter,this.element[0]);this._trigger("start",a);b(d.appendTo).append(this.helper);this.helper.css({left:a.clientX,top:a.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var d=b.data(this,"selectable-item");d.startselected=!0;a.metaKey||(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",a,{unselecting:d.element}))});b(a.target).parents().andSelf().each(function(){var d= +b.data(this,"selectable-item");if(d){var h=!a.metaKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(h?"ui-unselecting":"ui-selected").addClass(h?"ui-selecting":"ui-unselecting");d.unselecting=!h;d.selecting=h;(d.selected=h)?c._trigger("selecting",a,{selecting:d.element}):c._trigger("unselecting",a,{unselecting:d.element});return!1}})}},_mouseDrag:function(a){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,g=this.opos[0],h=this.opos[1],e=a.pageX,f=a.pageY;if(g> +e)var i=e,e=g,g=i;h>f&&(i=f,f=h,h=i);this.helper.css({left:g,top:h,width:e-g,height:f-h});this.selectees.each(function(){var i=b.data(this,"selectable-item");if(i&&i.element!=c.element[0]){var k=false;d.tolerance=="touch"?k=!(i.left>e||i.rightf||i.bottomg&&i.righth&&i.bottom *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var b=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh(); +this.floating=this.items.length?"x"===b.axis||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;0<=b;b--)this.items[b].item.removeData("sortable-item");return this},_setOption:function(a,c){"disabled"===a?(this.options[a]= +c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):b.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,c){if(this.reverting||this.options.disabled||"static"==this.options.type)return!1;this._refreshItems(a);var d=null,g=this;b(a.target).parents().each(function(){if(b.data(this,"sortable-item")==g)return d=b(this),!1});b.data(a.target,"sortable-item")==g&&(d=b(a.target));if(!d)return!1;if(this.options.handle&&!c){var h=!1;b(this.options.handle,d).find("*").andSelf().each(function(){this== +a.target&&(h=!0)});if(!h)return!1}this.currentItem=d;this._removeCurrentsFromItems();return!0},_mouseStart:function(a,c,d){c=this.options;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition= +this.helper.css("position");b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder(); +c.containment&&this._setContainment();c.cursor&&(b("body").css("cursor")&&(this._storedCursor=b("body").css("cursor")),b("body").css("cursor",c.cursor));c.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",c.opacity));c.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",c.zIndex));this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()); +this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(d=this.containers.length-1;0<=d;d--)this.containers[d]._trigger("activate",a,this._uiHash(this));b.ui.ddmanager&&(b.ui.ddmanager.current=this);b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.dragging=!0;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return!0},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageYb[this.floating?"width":"height"]?g+k>i&&g+ke&&c+lthis.containment[2]&&(h=this.containment[2]+this.offset.click.left),a.pageY-this.offset.click.top>this.containment[3]&&(e=this.containment[3]+this.offset.click.top)),c.grid))e=this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1],e=this.containment?!(e-this.offset.click.topthis.containment[3])?e:!(e-this.offset.click.top< +this.containment[1])?e-c.grid[1]:e+c.grid[1]:e,h=this.originalPageX+Math.round((h-this.originalPageX)/c.grid[0])*c.grid[0],h=this.containment?!(h-this.offset.click.leftthis.containment[2])?h:!(h-this.offset.click.left li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,c=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");a.headers= +a.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||b(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||b(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||b(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||b(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(c.navigation){var d=a.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var g=d.closest(".ui-accordion-header");a.active=g.length?g:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", +function(b){return a._keydown(b)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);b.browser.safari||a.headers.find("a").attr("tabIndex",-1);c.event&&a.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(b){a._clickHandler.call(a,b,this);b.preventDefault()})},_createIcons:function(){var a= +this.options;a.icons&&(b("").addClass("ui-icon "+a.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");(a.autoHeight||a.fillHeight)&&c.css("height","");return b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);"active"==a&&this.activate(c);"icons"==a&&(this._destroyIcons(), +c&&this._createIcons());if("disabled"==a)this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!this.options.disabled&&!a.altKey&&!a.ctrlKey){var c=b.ui.keyCode,d=this.headers.length,g=this.headers.index(a.target),h=!1;switch(a.keyCode){case c.RIGHT:case c.DOWN:h=this.headers[(g+1)%d];break;case c.LEFT:case c.UP:h=this.headers[(g-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:a.target},a.target),a.preventDefault()}return h? +(b(a.target).attr("tabIndex",-1),b(h).attr("tabIndex",0),h.focus(),!1):!0}},resize:function(){var a=this.options,c;if(a.fillSpace){if(b.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height();b.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){c-=b(this).outerHeight(!0)});this.headers.next().each(function(){b(this).height(Math.max(0,c-b(this).innerHeight()+b(this).height()))}).css("overflow", +"auto")}else a.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,b(this).height("").height())}).height(c));return this},activate:function(b){this.options.active=b;b=this._findActive(b)[0];this._clickHandler({target:b},b);return this},_findActive:function(a){return a?"number"===typeof a?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):!1===a?b([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,c){var d=this.options;if(!d.disabled)if(a.target){var g=b(a.currentTarget|| +c),h=g[0]===this.active[0];d.active=d.collapsible&&h?!1:this.headers.index(g);if(!(this.running||!d.collapsible&&h)){var e=this.active,f=g.next(),i=this.active.next(),j={options:d,newHeader:h&&d.collapsible?b([]):g,oldHeader:this.active,newContent:h&&d.collapsible?b([]):f,oldContent:i},k=this.headers.index(this.active[0])>this.headers.index(g[0]);this.active=h?b([]):g;this._toggle(f,i,j,h,k);e.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +h||(g.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),g.next().addClass("ui-accordion-content-active"))}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var i=this.active.next(), +j={options:d,newHeader:b([]),oldHeader:d.active,newContent:b([]),oldContent:i},f=this.active=b([]);this._toggle(f,i,j)}},_toggle:function(a,c,d,g,h){var e=this,f=e.options;e.toShow=a;e.toHide=c;e.data=d;var i=function(){if(e)return e._completed.apply(e,arguments)};e._trigger("changestart",null,e.data);e.running=0===c.size()?a.size():c.size();if(f.animated){d={};d=f.collapsible&&g?{toShow:b([]),toHide:c,complete:i,down:h,autoHeight:f.autoHeight||f.fillSpace}:{toShow:a,toHide:c,complete:i,down:h,autoHeight:f.autoHeight|| +f.fillSpace};f.proxied||(f.proxied=f.animated);f.proxiedDuration||(f.proxiedDuration=f.duration);f.animated=b.isFunction(f.proxied)?f.proxied(d):f.proxied;f.duration=b.isFunction(f.proxiedDuration)?f.proxiedDuration(d):f.proxiedDuration;var g=b.ui.accordion.animations,j=f.duration,k=f.animated;k&&(!g[k]&&!b.easing[k])&&(k="slide");g[k]||(g[k]=function(b){this.slide(b,{easing:k,duration:j||700})});g[k](d)}else f.collapsible&&g?a.toggle():(c.hide(),a.show()),i(!0);c.prev().attr({"aria-expanded":"false", +"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(b){this.running=b?0:--this.running;this.running||(this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data))}});b.extend(b.ui.accordion,{version:"1.8.14", +animations:{slide:function(a,c){a=b.extend({easing:"swing",duration:300},a,c);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),g=0,h={},e={},f,i=a.toShow;f=i[0].style.width;i.width(parseInt(i.parent().width(),10)-parseInt(i.css("paddingLeft"),10)-parseInt(i.css("paddingRight"),10)-(parseInt(i.css("borderLeftWidth"),10)||0)-(parseInt(i.css("borderRightWidth"),10)||0));b.each(["height","paddingTop","paddingBottom"],function(c,f){e[f]="hide";var i=(""+b.css(a.toShow[0],f)).match(/^([\d+-.]+)(.*)$/); +h[f]={value:i[1],unit:i[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(e,{step:function(b,c){"height"==c.prop&&(g=0===c.end-c.start?0:(c.now-c.start)/(c.end-c.start));a.toShow[0].style[c.prop]=g*h[c.prop].value+h[c.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:f,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide", +paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(b){this.slide(b,{easing:b.down?"easeOutBounce":"swing",duration:b.down?1E3:200})}}})})(jQuery); +(function(b){var a=0;b.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var c=this,a=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(a){if(!c.options.disabled&&!c.element.attr("readonly")){g=!1;var d= +b.ui.keyCode;switch(a.keyCode){case d.PAGE_UP:c._move("previousPage",a);break;case d.PAGE_DOWN:c._move("nextPage",a);break;case d.UP:c._move("previous",a);a.preventDefault();break;case d.DOWN:c._move("next",a);a.preventDefault();break;case d.ENTER:case d.NUMPAD_ENTER:c.menu.active&&(g=!0,a.preventDefault());case d.TAB:if(!c.menu.active)break;c.menu.select(a);break;case d.ESCAPE:c.element.val(c.term);c.close(a);break;default:clearTimeout(c.searching),c.searching=setTimeout(function(){c.term!=c.element.val()&& +(c.selectedItem=null,c.search(null,a))},c.options.delay)}}}).bind("keypress.autocomplete",function(b){g&&(g=!1,b.preventDefault())}).bind("focus.autocomplete",function(){c.options.disabled||(c.selectedItem=null,c.previous=c.element.val())}).bind("blur.autocomplete",function(b){c.options.disabled||(clearTimeout(c.searching),c.closing=setTimeout(function(){c.close(b);c._change(b)},150))});this._initSource();this.response=function(){return c._response.apply(c,arguments)};this.menu=b("
                    ").addClass("ui-autocomplete").appendTo(b(this.options.appendTo|| +"body",a)[0]).mousedown(function(a){var d=c.menu.element[0];b(a.target).closest(".ui-menu-item").length||setTimeout(function(){b(document).one("mousedown",function(a){a.target!==c.element[0]&&(a.target!==d&&!b.ui.contains(d,a.target))&&c.close()})},1);setTimeout(function(){clearTimeout(c.closing)},13)}).menu({focus:function(b,a){var f=a.item.data("item.autocomplete");!1!==c._trigger("focus",b,{item:f})&&/^key/.test(b.originalEvent.type)&&c.element.val(f.value)},selected:function(b,e){var f=e.item.data("item.autocomplete"), +i=c.previous;c.element[0]!==a.activeElement&&(c.element.focus(),c.previous=i,setTimeout(function(){c.previous=i;c.selectedItem=f},1));!1!==c._trigger("select",b,{item:f})&&c.element.val(f.value);c.term=c.element.val();c.close(b);c.selectedItem=f},blur:function(){c.menu.element.is(":visible")&&c.element.val()!==c.term&&c.element.val(c.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");b.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); +this.menu.element.remove();b.Widget.prototype.destroy.call(this)},_setOption:function(a,d){b.Widget.prototype._setOption.apply(this,arguments);"source"===a&&this._initSource();"appendTo"===a&&this.menu.element.appendTo(b(d||"body",this.element[0].ownerDocument)[0]);"disabled"===a&&(d&&this.xhr)&&this.xhr.abort()},_initSource:function(){var c=this,d,g;b.isArray(this.options.source)?(d=this.options.source,this.source=function(a,c){c(b.ui.autocomplete.filter(d,a.term))}):"string"===typeof this.options.source? +(g=this.options.source,this.source=function(d,e){c.xhr&&c.xhr.abort();c.xhr=b.ajax({url:g,data:d,dataType:"json",autocompleteRequest:++a,success:function(b){this.autocompleteRequest===a&&e(b)},error:function(){this.autocompleteRequest===a&&e([])}})}):this.source=this.options.source},search:function(b,a){b=null!=b?b:this.element.val();this.term=this.element.val();if(b.length").data("item.autocomplete",d).append(b("").text(d.label)).appendTo(a)},_move:function(b,a){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(b)||this.menu.last()&& +/^next/.test(b))this.element.val(this.term),this.menu.deactivate();else this.menu[b](a);else this.search(null,a)},widget:function(){return this.menu.element}});b.extend(b.ui.autocomplete,{escapeRegex:function(b){return b.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,d){var g=RegExp(b.ui.autocomplete.escapeRegex(d),"i");return b.grep(a,function(b){return g.test(b.label||b.value||b)})}})})(jQuery); +(function(b){b.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){b(c.target).closest(".ui-menu-item a").length&&(c.preventDefault(),a.select(c))});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,b(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(b,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,g=this.element.scrollTop(),h=this.element.height();0>d?this.element.scrollTop(g+d):d>=h&&this.element.scrollTop(g+d-h+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",b,{item:c})},deactivate:function(){this.active&& +(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(b){this.move("next",".ui-menu-item:first",b)},previous:function(b){this.move("prev",".ui-menu-item:last",b)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(b,c,d){this.active?(b=this.active[b+"All"](".ui-menu-item").eq(0),b.length?this.activate(d, +b):this.activate(d,this.element.children(c))):this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var c=this.active.offset().top,d=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var a=b(this).offset().top-c-d+b(this).height();return 10>a&&-10a&&-10").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),d=this.options.icons,h=d.primary&&d.secondary,e=[];d.primary||d.secondary?(this.options.text&&e.push("ui-button-text-icon"+(h?"s":d.primary?"-primary":"-secondary")),d.primary&&a.prepend(""),d.secondary&&a.append(""),this.options.text||(e.push(h?"ui-button-icons-only": +"ui-button-icon-only"),this.hasTitle||a.attr("title",c))):e.push("ui-button-text-only");a.addClass(e.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){"disabled"===a&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a="ltr"===this.element.css("direction"); +this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); +b.Widget.prototype.destroy.call(this)}})})(jQuery); +(function(b,a){var c={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},d={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},g=b.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};b.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(a){var c= +b(this).css(a).offset().top;0>c&&b(this).css("top",a.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");"string"!==typeof this.originalTitle&&(this.originalTitle="");this.options.title=this.options.title||this.originalTitle;var a=this,c=a.options,f=c.title||" ",i=b.ui.dialog.getTitleId(a.element),d=(a.uiDialog=b("
                    ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +c.dialogClass).css({zIndex:c.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(f){if(c.closeOnEscape&&f.keyCode&&f.keyCode===b.ui.keyCode.ESCAPE){a.close(f);f.preventDefault()}}).attr({role:"dialog","aria-labelledby":i}).mousedown(function(b){a.moveToTop(false,b)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(d);var g=(a.uiDialogTitlebar=b("
                    ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(d), +l=b('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){l.addClass("ui-state-hover")},function(){l.removeClass("ui-state-hover")}).focus(function(){l.addClass("ui-state-focus")}).blur(function(){l.removeClass("ui-state-focus")}).click(function(b){a.close(b);return false}).appendTo(g);(a.uiDialogTitlebarCloseText=b("")).addClass("ui-icon ui-icon-closethick").text(c.closeText).appendTo(l);b("").addClass("ui-dialog-title").attr("id", +i).html(f).prependTo(g);b.isFunction(c.beforeclose)&&!b.isFunction(c.beforeClose)&&(c.beforeClose=c.beforeclose);g.find("*").add(g).disableSelection();c.draggable&&b.fn.draggable&&a._makeDraggable();c.resizable&&b.fn.resizable&&a._makeResizable();a._createButtons(c.buttons);a._isOpen=!1;b.fn.bgiframe&&d.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){this.overlay&&this.overlay.destroy();this.uiDialog.hide();this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +this.uiDialog.remove();this.originalTitle&&this.element.attr("title",this.originalTitle);return this},widget:function(){return this.uiDialog},close:function(a){var c=this,f,d;if(!1!==c._trigger("beforeClose",a))return c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",a)}):(c.uiDialog.hide(),c._trigger("close",a)),b.ui.dialog.overlay.resize(),c.options.modal&&(f=0,b(".ui-dialog").each(function(){if(this!== +c.uiDialog[0]){d=b(this).css("z-index");isNaN(d)||(f=Math.max(f,d))}}),b.ui.dialog.maxZ=f),c},isOpen:function(){return this._isOpen},moveToTop:function(a,c){var f=this.options;if(f.modal&&!a||!f.stack&&!f.modal)return this._trigger("focus",c);f.zIndex>b.ui.dialog.maxZ&&(b.ui.dialog.maxZ=f.zIndex);this.overlay&&(b.ui.dialog.maxZ+=1,this.overlay.$el.css("z-index",b.ui.dialog.overlay.maxZ=b.ui.dialog.maxZ));f={scrollTop:this.element.attr("scrollTop"),scrollLeft:this.element.attr("scrollLeft")};b.ui.dialog.maxZ+= +1;this.uiDialog.css("z-index",b.ui.dialog.maxZ);this.element.attr(f);this._trigger("focus",c);return this},open:function(){if(!this._isOpen){var a=this.options,c=this.uiDialog;this.overlay=a.modal?new b.ui.dialog.overlay(this):null;this._size();this._position(a.position);c.show(a.show);this.moveToTop(!0);a.modal&&c.bind("keypress.ui-dialog",function(a){if(a.keyCode===b.ui.keyCode.TAB){var c=b(":tabbable",this),d=c.filter(":first"),c=c.filter(":last");if(a.target===c[0]&&!a.shiftKey)return d.focus(1), +!1;if(a.target===d[0]&&a.shiftKey)return c.focus(1),!1}});b(this.element.find(":tabbable").get().concat(c.find(".ui-dialog-buttonpane :tabbable").get().concat(c.get()))).eq(0).focus();this._isOpen=!0;this._trigger("open");return this}},_createButtons:function(a){var c=this,f=!1,d=b("
                    ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),j=b("
                    ").addClass("ui-dialog-buttonset").appendTo(d);c.uiDialog.find(".ui-dialog-buttonpane").remove();"object"===typeof a&& +null!==a&&b.each(a,function(){return!(f=!0)});f&&(b.each(a,function(a,f){var f=b.isFunction(f)?{click:f,text:a}:f,d=b('').click(function(){f.click.apply(c.element[0],arguments)}).appendTo(j);b.each(f,function(b,a){if("click"!==b)if(b in g)d[b](a);else d.attr(b,a)});b.fn.button&&d.button()}),d.appendTo(c.uiDialog))},_makeDraggable:function(){function a(b){return{position:b.position,offset:b.offset}}var c=this,f=c.options,d=b(document),g;c.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", +handle:".ui-dialog-titlebar",containment:"document",start:function(d,i){g="auto"===f.height?"auto":b(this).height();b(this).height(b(this).height()).addClass("ui-dialog-dragging");c._trigger("dragStart",d,a(i))},drag:function(b,f){c._trigger("drag",b,a(f))},stop:function(k,l){f.position=[l.position.left-d.scrollLeft(),l.position.top-d.scrollTop()];b(this).removeClass("ui-dialog-dragging").height(g);c._trigger("dragStop",k,a(l));b.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function d(b){return{originalPosition:b.originalPosition, +originalSize:b.originalSize,position:b.position,size:b.size}}var c=c===a?this.options.resizable:c,f=this,i=f.options,g=f.uiDialog.css("position"),c="string"===typeof c?c:"n,e,s,w,se,sw,ne,nw";f.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:f.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:f._minHeight(),handles:c,start:function(a,c){b(this).addClass("ui-dialog-resizing");f._trigger("resizeStart",a,d(c))},resize:function(b,a){f._trigger("resize", +b,d(a))},stop:function(a,c){b(this).removeClass("ui-dialog-resizing");i.height=b(this).height();i.width=b(this).width();f._trigger("resizeStop",a,d(c));b.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var b=this.options;return"auto"===b.height?b.minHeight:Math.min(b.minHeight,b.height)},_position:function(a){var c=[],f=[0,0],d;if(a){if("string"===typeof a||"object"===typeof a&&"0"in a)c=a.split?a.split(" "): +[a[0],a[1]],1===c.length&&(c[1]=c[0]),b.each(["left","top"],function(b,a){+c[b]===c[b]&&(f[b]=c[b],c[b]=a)}),a={my:c.join(" "),at:c.join(" "),offset:f.join(" ")};a=b.extend({},b.ui.dialog.prototype.options.position,a)}else a=b.ui.dialog.prototype.options.position;(d=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(b.extend({of:window},a));d||this.uiDialog.hide()},_setOptions:function(a){var g=this,f={},i=!1;b.each(a,function(b,a){g._setOption(b,a);b in +c&&(i=!0);b in d&&(f[b]=a)});i&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(a,c){var f=this.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":this._createButtons(c);break;case "closeText":this.uiDialogTitlebarCloseText.text(""+c);break;case "dialogClass":f.removeClass(this.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+c);break;case "disabled":c?f.addClass("ui-dialog-disabled"): +f.removeClass("ui-dialog-disabled");break;case "draggable":var d=f.is(":data(draggable)");d&&!c&&f.draggable("destroy");!d&&c&&this._makeDraggable();break;case "position":this._position(c);break;case "resizable":(d=f.is(":data(resizable)"))&&!c&&f.resizable("destroy");d&&"string"===typeof c&&f.resizable("option","handles",c);!d&&!1!==c&&this._makeResizable(c);break;case "title":b(".ui-dialog-title",this.uiDialogTitlebar).html(""+(c||" "))}b.Widget.prototype._setOption.apply(this,arguments)}, +_size:function(){var a=this.options,c,f,d=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});a.minWidth>a.width&&(a.width=a.minWidth);c=this.uiDialog.css({height:"auto",width:a.width}).height();f=Math.max(0,a.minHeight-c);"auto"===a.height?b.support.minHeight?this.element.css({minHeight:f,height:"auto"}):(this.uiDialog.show(),a=this.element.css("height","auto").height(),d||this.uiDialog.hide(),this.element.height(Math.max(a,f))):this.element.height(Math.max(a.height- +c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});b.extend(b.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(b){b=b.attr("id");b||(b=this.uuid+=1);return"ui-dialog-title-"+b},overlay:function(a){this.$el=b.ui.dialog.overlay.create(a)}});b.extend(b.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:b.map("focus mousedown mouseup keydown keypress click".split(" "),function(b){return b+".dialog-overlay"}).join(" "), +create:function(a){0===this.instances.length&&(setTimeout(function(){b.ui.dialog.overlay.instances.length&&b(document).bind(b.ui.dialog.overlay.events,function(a){if(b(a.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});b.fn.bgiframe&&c.bgiframe();this.instances.push(c);return c},destroy:function(a){var c=b.inArray(a,this.instances);-1!=c&&this.oldInstances.push(this.instances.splice(c,1)[0]);0===this.instances.length&&b([document,window]).unbind(".dialog-overlay");a.remove();var f=0;b.each(this.instances,function(){f=Math.max(f,this.css("z-index"))});this.maxZ=f},height:function(){var a,c;return b.browser.msie&&7>b.browser.version?(a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight), +c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),a").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+("min"===c.range||"max"===c.range?" ui-slider-range-"+c.range:""))}for(var e=d.length;e"); +this.handles=d.add(b(h.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(b){b.preventDefault()}).hover(function(){c.disabled||b(this).addClass("ui-state-hover")},function(){b(this).removeClass("ui-state-hover")}).focus(function(){c.disabled?b(this).blur():(b(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),b(this).addClass("ui-state-focus"))}).blur(function(){b(this).removeClass("ui-state-focus")});this.handles.each(function(a){b(this).data("index.ui-slider-handle", +a)});this.handles.keydown(function(c){var d=!0,g=b(this).data("index.ui-slider-handle"),e,h,m;if(!a.options.disabled){switch(c.keyCode){case b.ui.keyCode.HOME:case b.ui.keyCode.END:case b.ui.keyCode.PAGE_UP:case b.ui.keyCode.PAGE_DOWN:case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(d=!1,!a._keySliding&&(a._keySliding=!0,b(this).addClass("ui-state-active"),e=a._start(c,g),!1===e))return}m=a.options.step;e=a.options.values&&a.options.values.length?h=a.values(g): +h=a.value();switch(c.keyCode){case b.ui.keyCode.HOME:h=a._valueMin();break;case b.ui.keyCode.END:h=a._valueMax();break;case b.ui.keyCode.PAGE_UP:h=a._trimAlignValue(e+(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(e-(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:if(e===a._valueMax())return;h=a._trimAlignValue(e+m);break;case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(e===a._valueMin())return;h=a._trimAlignValue(e-m)}a._slide(c, +g,h);return d}}).keyup(function(c){var d=b(this).data("index.ui-slider-handle");a._keySliding&&(a._keySliding=!1,a._stop(c,d),a._change(c,d),b(this).removeClass("ui-state-active"))});this._refreshValue();this._animateOff=!1},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return this},_mouseCapture:function(a){var c= +this.options,d,g,h,e,f;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();d=this._normValueFromMouse({x:a.pageX,y:a.pageY});g=this._valueMax()-this._valueMin()+1;e=this;this.handles.each(function(a){var c=Math.abs(d-e.values(a));g>c&&(g=c,h=b(this),f=a)});!0===c.range&&this.values(1)===c.min&&(f+=1,h=b(this.handles[f]));if(!1===this._start(a,f))return!1;this._mouseSliding=!0;e._handleIndex=f;h.addClass("ui-state-active").focus(); +c=h.offset();this._clickOffset=!b(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-c.left-h.width()/2,top:a.pageY-c.top-h.height()/2-(parseInt(h.css("borderTopWidth"),10)||0)-(parseInt(h.css("borderBottomWidth"),10)||0)+(parseInt(h.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,f,d);return this._animateOff=!0},_mouseStart:function(){return!0},_mouseDrag:function(b){var c=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b, +this._handleIndex,c);return!1},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=!1;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(b){var c;"horizontal"===this.orientation?(c=this.elementSize.width,b=b.x-this.elementOffset.left-(this._clickOffset? +this._clickOffset.left:0)):(c=this.elementSize.height,b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));c=b/c;1c&&(c=0);"vertical"===this.orientation&&(c=1-c);b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+c*b)},_start:function(b,c){var d={handle:this.handles[c],value:this.value()};this.options.values&&this.options.values.length&&(d.value=this.values(c),d.values=this.values());return this._trigger("start",b,d)},_slide:function(b, +c,d){var g;if(this.options.values&&this.options.values.length){g=this.values(c?0:1);if(2===this.options.values.length&&!0===this.options.range&&(0===c&&d>g||1===c&&d=this._valueMax())return this._valueMax();var c=0=c&&(alignValue+=0",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
                  • #{label}
                  • "},_create:function(){this._tabify(!0)},_setOption:function(b,a){"selected"==b?this.options.collapsible&&a==this.options.selected||this.select(a): +(this.options[b]=a,this._tabify())},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+ ++c},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var a=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++d);return b.cookie.apply(null,[a].concat(b.makeArray(arguments)))},_ui:function(b,a){return{tab:b,panel:a,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var a= +b(this);a.html(a.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function d(a,c){a.css("display","");!b.support.opacity&&c.opacity&&a[0].style.removeAttribute("filter")}var e=this,f=this.options,i=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=b(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return b("a",this)[0]});this.panels=b([]);this.anchors.each(function(a,c){var d=b(c).attr("href"),g=d.split("#")[0],h;if(g&&(g===location.toString().split("#")[0]|| +(h=b("base")[0])&&g===h.href))d=c.hash,c.href=d;i.test(d)?e.panels=e.panels.add(e.element.find(e._sanitizeSelector(d))):d&&"#"!==d?(b.data(c,"href.tabs",d),b.data(c,"load.tabs",d.replace(/#.*$/,"")),d=e._tabId(c),c.href="#"+d,g=e.element.find("#"+d),g.length||(g=b(f.panelTemplate).attr("id",d).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(e.panels[a-1]||e.list),g.data("destroy.tabs",!0)),e.panels=e.panels.add(g)):f.disabled.push(a)});c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"), +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),f.selected===a?(location.hash&&this.anchors.each(function(b,a){if(a.hash==location.hash)return f.selected=b,!1}),"number"!==typeof f.selected&&f.cookie&&(f.selected=parseInt(e._cookie(),10)),"number"!==typeof f.selected&&this.lis.filter(".ui-tabs-selected").length&&(f.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"))),f.selected=f.selected||(this.lis.length?0:-1)):null===f.selected&&(f.selected=-1),f.selected=0<=f.selected&&this.anchors[f.selected]||0>f.selected?f.selected:0,f.disabled=b.unique(f.disabled.concat(b.map(this.lis.filter(".ui-state-disabled"),function(b){return e.lis.index(b)}))).sort(),-1!=b.inArray(f.selected,f.disabled)&&f.disabled.splice(b.inArray(f.selected,f.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"), +0<=f.selected&&this.anchors.length&&(e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(f.selected).addClass("ui-tabs-selected ui-state-active"),e.element.queue("tabs",function(){e._trigger("show",null,e._ui(e.anchors[f.selected],e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash))[0]))}),this.load(f.selected)),b(window).bind("unload",function(){e.lis.add(e.anchors).unbind(".tabs");e.lis=e.anchors=e.panels=null})):f.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[f.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");f.cookie&&this._cookie(f.selected,f.cookie);for(var c=0,j;j=this.lis[c];c++)b(j)[-1!=b.inArray(c,f.disabled)&&!b(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");!1===f.cache&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if("mouseover"!==f.event){var k=function(b,a){a.is(":not(.ui-state-disabled)")&&a.addClass("ui-state-"+b)};this.lis.bind("mouseover.tabs", +function(){k("hover",b(this))});this.lis.bind("mouseout.tabs",function(){b(this).removeClass("ui-state-hover")});this.anchors.bind("focus.tabs",function(){k("focus",b(this).closest("li"))});this.anchors.bind("blur.tabs",function(){b(this).closest("li").removeClass("ui-state-focus")})}var l,m;f.fx&&(b.isArray(f.fx)?(l=f.fx[0],m=f.fx[1]):l=m=f.fx);var p=m?function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.hide().removeClass("ui-tabs-hide").animate(m,m.duration||"normal", +function(){d(c,m);e._trigger("show",null,e._ui(a,c[0]))})}:function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.removeClass("ui-tabs-hide");e._trigger("show",null,e._ui(a,c[0]))},n=l?function(b,a){a.animate(l,l.duration||"normal",function(){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");d(a,l);e.element.dequeue("tabs")})}:function(b,a){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");e.element.dequeue("tabs")}; +this.anchors.bind(f.event+".tabs",function(){var a=this,c=b(a).closest("li"),d=e.panels.filter(":not(.ui-tabs-hide)"),i=e.element.find(e._sanitizeSelector(a.hash));if(c.hasClass("ui-tabs-selected")&&!f.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||e.panels.filter(":animated").length||e._trigger("select",null,e._ui(this,i[0]))===false){this.blur();return false}f.selected=e.anchors.index(this);e.abort();if(f.collapsible){if(c.hasClass("ui-tabs-selected")){f.selected= +-1;f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){n(a,d)}).dequeue("tabs");this.blur();return false}if(!d.length){f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this));this.blur();return false}}f.cookie&&e._cookie(f.selected,f.cookie);if(i.length){d.length&&e.element.queue("tabs",function(){n(a,d)});e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +b.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){"string"==typeof b&&(b=this.anchors.index(this.anchors.filter("[href$="+b+"]")));return b},destroy:function(){var a=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var a= +b.data(this,"href.tabs");a&&(this.href=a);var c=b(this).unbind(".tabs");b.each(["href","load","cache"],function(b,a){c.removeData(a+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){b.data(this,"destroy.tabs")?b(this).remove():b(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});a.cookie&&this._cookie(null,a.cookie);return this},add:function(c, +d,e){e===a&&(e=this.anchors.length);var f=this,i=this.options,d=b(i.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),c=!c.indexOf("#")?c.replace("#",""):this._tabId(b("a",d)[0]);d.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+c);j.length||(j=b(i.panelTemplate).attr("id",c).data("destroy.tabs",!0));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");e>=this.lis.length?(d.appendTo(this.list),j.appendTo(this.list[0].parentNode)): +(d.insertBefore(this.lis[e]),j.insertBefore(this.panels[e]));i.disabled=b.map(i.disabled,function(b){return b>=e?++b:b});this._tabify();1==this.anchors.length&&(i.selected=0,d.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0));this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(a){var a=this._getIndex(a),c=this.options,d=this.lis.eq(a).remove(), +f=this.panels.eq(a).remove();d.hasClass("ui-tabs-selected")&&1=a?--b:b});this._tabify();this._trigger("remove",null,this._ui(d.find("a")[0],f[0]));return this},enable:function(a){var a=this._getIndex(a),c=this.options;if(-1!=b.inArray(a,c.disabled))return this.lis.eq(a).removeClass("ui-state-disabled"),c.disabled=b.grep(c.disabled,function(b){return b!= +a}),this._trigger("enable",null,this._ui(this.anchors[a],this.panels[a])),this},disable:function(b){var b=this._getIndex(b),a=this.options;b!=a.selected&&(this.lis.eq(b).addClass("ui-state-disabled"),a.disabled.push(b),a.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b])));return this},select:function(b){b=this._getIndex(b);if(-1==b)if(this.options.collapsible&&-1!=this.options.selected)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+ +".tabs");return this},load:function(a){var a=this._getIndex(a),c=this,d=this.options,f=this.anchors.eq(a)[0],i=b.data(f,"load.tabs");this.abort();if(!i||0!==this.element.queue("tabs").length&&b.data(f,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(a).addClass("ui-state-processing");if(d.spinner){var j=b("span",f);j.data("label.tabs",j.html()).html(d.spinner)}this.xhr=b.ajax(b.extend({},d.ajaxOptions,{url:i,success:function(i,j){c.element.find(c._sanitizeSelector(f.hash)).html(i);c._cleanup(); +d.cache&&b.data(f,"cache.tabs",!0);c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.success(i,j)}catch(m){}},error:function(b,i){c._cleanup();c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.error(b,i,a,f)}catch(m){}}}));c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(!1,!0);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));this.xhr&&(this.xhr.abort(),delete this.xhr);this._cleanup(); +return this},url:function(b,a){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",a);return this},length:function(){return this.anchors.length}});b.extend(b.ui.tabs,{version:"1.8.14"});b.extend(b.ui.tabs.prototype,{rotation:null,rotate:function(b,a){var c=this,f=this.options,d=c._rotate||(c._rotate=function(a){clearTimeout(c.rotation);c.rotation=setTimeout(function(){var b=f.selected;c.select(++b'))}function d(a){return a.bind("mouseout",function(a){a=b(a.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"); +a.length&&a.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){c=b(c.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!b.datepicker._isDisabledDatepicker(e.inline?a.parent()[0]:e.input[0])&&c.length)c.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),c.addClass("ui-state-hover"),c.hasClass("ui-datepicker-prev")&&c.addClass("ui-datepicker-prev-hover"),c.hasClass("ui-datepicker-next")&& +c.addClass("ui-datepicker-next-hover")})}function g(c,d){b.extend(c,d);for(var e in d)if(null==d[e]||d[e]==a)c[e]=d[e];return c}b.extend(b.ui,{datepicker:{version:"1.8.14"}});var h=(new Date).getTime(),e;b.extend(c.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(b){g(this._defaults,b||{});return this},_attachDatepicker:function(a,c){var d=null,e;for(e in this._defaults){var g= +a.getAttribute("date:"+e);if(g){d=d||{};try{d[e]=eval(g)}catch(m){d[e]=g}}}e=a.nodeName.toLowerCase();g="div"==e||"span"==e;a.id||(this.uuid+=1,a.id="dp"+this.uuid);var h=this._newInst(b(a),g);h.settings=b.extend({},c||{},d||{});"input"==e?this._connectDatepicker(a,h):g&&this._inlineDatepicker(a,h)},_newInst:function(a,c){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:c,dpDiv:!c?this.dpDiv:d(b('
                    '))}},_connectDatepicker:function(a,c){var d=b(a);c.append=b([]);c.trigger=b([]);d.hasClass(this.markerClassName)||(this._attachments(d,c),d.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b,a){return this._get(c,a)}),this._autoSize(c),b.data(a,"datepicker", +c))},_attachments:function(a,c){var d=this._get(c,"appendText"),e=this._get(c,"isRTL");c.append&&c.append.remove();d&&(c.append=b(''+d+""),a[e?"before":"after"](c.append));a.unbind("focus",this._showDatepicker);c.trigger&&c.trigger.remove();d=this._get(c,"showOn");("focus"==d||"both"==d)&&a.focus(this._showDatepicker);if("button"==d||"both"==d){var d=this._get(c,"buttonText"),g=this._get(c,"buttonImage");c.trigger=b(this._get(c,"buttonImageOnly")?b("").addClass(this._triggerClass).attr({src:g, +alt:d,title:d}):b('').addClass(this._triggerClass).html(""==g?d:b("").attr({src:g,alt:d,title:d})));a[e?"before":"after"](c.trigger);c.trigger.click(function(){b.datepicker._datepickerShowing&&b.datepicker._lastInput==a[0]?b.datepicker._hideDatepicker():b.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(b){if(this._get(b,"autoSize")&&!b.inline){var a=new Date(2009,11,20),c=this._get(b,"dateFormat");if(c.match(/[DM]/)){var d=function(b){for(var a= +0,c=0,f=0;fa&&(a=b[f].length,c=f);return c};a.setMonth(d(this._get(b,c.match(/MM/)?"monthNames":"monthNamesShort")));a.setDate(d(this._get(b,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())}b.input.attr("size",this._formatDate(b,a).length)}},_inlineDatepicker:function(a,c){var d=b(a);d.hasClass(this.markerClassName)||(d.addClass(this.markerClassName).append(c.dpDiv).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b, +a){return this._get(c,a)}),b.data(a,"datepicker",c),this._setDate(c,this._getDefaultDate(c),!0),this._updateDatepicker(c),this._updateAlternate(c),c.dpDiv.show())},_dialogDatepicker:function(a,c,d,e,h){a=this._dialogInst;a||(this.uuid+=1,this._dialogInput=b(''),this._dialogInput.keydown(this._doKeyDown),b("body").append(this._dialogInput),a=this._dialogInst=this._newInst(this._dialogInput,!1), +a.settings={},b.data(this._dialogInput[0],"datepicker",a));g(a.settings,e||{});c=c&&c.constructor==Date?this._formatDate(a,c):c;this._dialogInput.val(c);this._pos=h?h.length?h:[h.pageX,h.pageY]:null;this._pos||(this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)]);this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+ +"px");a.settings.onSelect=d;this._inDialog=!0;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);b.blockUI&&b.blockUI(this.dpDiv);b.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();b.removeData(a,"datepicker");"input"==e?(d.append.remove(),d.trigger.remove(),c.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown", +this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"==e||"span"==e)&&c.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!1,d.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass),c.children().removeClass("ui-state-disabled"), +c.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!0,d.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass), +c.children().addClass("ui-state-disabled"),c.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(b){if(!b)return!1;for(var a=0;ae||!d||-1n&&n>e?Math.abs(c.left+e-n):0);c.top-=Math.min(c.top,c.top+g>q&&q>g?Math.abs(g+p):0);return c},_findPos:function(a){for(var c= +this._get(this._getInst(a),"isRTL");a&&("hidden"==a.type||1!=a.nodeType||b.expr.filters.hidden(a));)a=a[c?"previousSibling":"nextSibling"];a=b(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");b&&b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var c=this._curInst;if(c&&!(a&&c!=b.data(a,"datepicker"))&&this._datepickerShowing){var a=this._get(c,"showAnim"),d=this._get(c,"duration"),e=function(){b.datepicker._tidyDialog(c); +this._curInst=null};if(b.effects&&b.effects[a])c.dpDiv.hide(a,b.datepicker._get(c,"showOptions"),d,e);else c.dpDiv["slideDown"==a?"slideUp":"fadeIn"==a?"fadeOut":"hide"](a?d:null,e);a||e();b.datepicker._triggerOnClose(c);this._datepickerShowing=!1;this._lastInput=null;this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),b.blockUI&&(b.unblockUI(),b("body").append(this.dpDiv)));this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, +_checkExternalClick:function(a){b.datepicker._curInst&&(a=b(a.target),a[0].id!=b.datepicker._mainDivId&&(0==a.parents("#"+b.datepicker._mainDivId).length&&!a.hasClass(b.datepicker.markerClassName)&&!a.hasClass(b.datepicker._triggerClass)&&b.datepicker._datepickerShowing&&(!b.datepicker._inDialog||!b.blockUI))&&b.datepicker._hideDatepicker())},_adjustDate:function(a,c,d){var a=b(a),e=this._getInst(a[0]);this._isDisabledDatepicker(a[0])||(this._adjustInstDate(e,c+("M"==d?this._get(e,"showCurrentAtPos"): +0),d),this._updateDatepicker(e))},_gotoToday:function(a){var a=b(a),c=this._getInst(a[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate();c.drawMonth=c.selectedMonth=d.getMonth();c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c);this._adjustDate(a)},_selectMonthYear:function(a,c,d){var a=b(a),e=this._getInst(a[0]);e._selectingMonthYear= +!1;e["selected"+("M"==d?"Month":"Year")]=e["draw"+("M"==d?"Month":"Year")]=parseInt(c.options[c.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var c=this._getInst(b(a)[0]);c.input&&c._selectingMonthYear&&setTimeout(function(){c.input.focus()},0);c._selectingMonthYear=!c._selectingMonthYear},_selectDay:function(a,c,d,e){var g=b(a);!b(e).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(g[0])&&(g=this._getInst(g[0]),g.selectedDay=g.currentDay= +b("a",e).html(),g.selectedMonth=g.currentMonth=c,g.selectedYear=g.currentYear=d,this._selectDate(a,this._formatDate(g,g.currentDay,g.currentMonth,g.currentYear)))},_clearDate:function(a){a=b(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,c){var d=this._getInst(b(a)[0]),c=null!=c?c:this._formatDate(d);d.input&&d.input.val(c);this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[c,d]):d.input&&d.input.trigger("change");d.inline?this._updateDatepicker(d): +(this._hideDatepicker(),this._lastInput=d.input[0],"object"!=typeof d.input[0]&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var c=this._get(a,"altField");if(c){var d=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),g=this.formatDate(d,e,this._getFormatConfig(a));b(c).each(function(){b(this).val(g)})}},noWeekends:function(a){a=a.getDay();return[0a,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b= +a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,c,d){if(null==a||null==c)throw"Invalid arguments";c="object"==typeof c?c.toString():c+"";if(""==c)return null;for(var e=(d?d.shortYearCutoff:null)||this._defaults.shortYearCutoff,e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),g=(d?d.dayNamesShort:null)||this._defaults.dayNamesShort,h=(d?d.dayNames:null)||this._defaults.dayNames,p=(d?d.monthNamesShort:null)||this._defaults.monthNamesShort, +n=(d?d.monthNames:null)||this._defaults.monthNames,q=d=-1,o=-1,w=-1,r=!1,u=function(b){(b=E+1d&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=e?0:-100));if(-1b.getYear()%100?"0":"")+b.getYear()%100;break;case "@":o+=b.getTime();break;case "!":o+=1E4*b.getTime()+this._ticksTo1970;break;case "'":h("'")?o+="'":w=!0;break;default:o+=a.charAt(r)}return o},_possibleChars:function(a){for(var b= +"",c=!1,d=function(b){(b=e+1n&&(n+=12,s--);if(u)for(var v=this._daylightSavingAdjust(new Date(u.getFullYear(),u.getMonth()-p[0]*p[1]+1,u.getDate())),v=r&&vv;)n--,0>n&&(n=11,s--);a.drawMonth=n;a.drawYear=s;var v=this._get(a,"prevText"),v=!m?v:this.formatDate(v,this._daylightSavingAdjust(new Date(s,n-q,1)),this._getFormatConfig(a)), +v=this._canAdjustMonth(a,-1,s,n)?''+v+"":g?"":''+v+"",z=this._get(a,"nextText"),z=!m?z:this.formatDate(z,this._daylightSavingAdjust(new Date(s, +n+q,1)),this._getFormatConfig(a)),g=this._canAdjustMonth(a,1,s,n)?''+z+"":g?"":''+z+"",q=this._get(a,"currentText"),z=this._get(a,"gotoCurrent")&& +a.currentDay?w:c,q=!m?q:this.formatDate(q,z,this._getFormatConfig(a)),m=!a.inline?'":"",e=e?'
                    '+(d?m:"")+(this._isInRange(a,z)?'":"")+(d?"":m)+"
                    ":"",m=parseInt(this._get(a,"firstDay"),10),m=isNaN(m)?0:m,q=this._get(a,"showWeek"),z=this._get(a,"dayNames");this._get(a,"dayNamesShort");var B=this._get(a,"dayNamesMin"),E=this._get(a,"monthNames"),C=this._get(a,"monthNamesShort"),O=this._get(a,"beforeShowDay"),K=this._get(a,"showOtherMonths"),S=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var P=this._getDefaultDate(a),G="",H=0;H'+(/all|left/.test(A)&& +0==H?d?g:v:"")+(/all|right/.test(A)&&0==H?d?v:g:"")+this._generateMonthYearHeader(a,n,s,r,u,0
                    '),D=q?'":"",A=0;7>A;A++)var x=(A+m)%7,D=D+("'+B[x]+"");y+=D+"";D=this._getDaysInMonth(s,n);s==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay, +D));A=(this._getFirstDayOfMonth(s,n)-m+7)%7;D=Math.ceil((A+D)/7);this.maxRows=D=o?this.maxRows>D?this.maxRows:D:D;for(var x=this._daylightSavingAdjust(new Date(s,n,1-A)),R=0;R",M=!q?"":'",A=0;7>A;A++){var J=O?O.apply(a.input?a.input[0]:null,[x]):[!0,""],F=x.getMonth()!=n,N=F&&!S||!J[0]||r&&xu,M=M+('");x.setDate(x.getDate()+1);x=this._daylightSavingAdjust(x)}y+=M+""}n++;11
                    '+this._get(a,"weekHeader")+"
                    '+this._get(a,"calculateWeek")(x)+""+(F&&!K? +" ":N?''+x.getDate()+"":''+x.getDate()+"")+"
                    "+(o?"
                "+(0':""):"");L+=y}G+=L}G+=e+(b.browser.msie&& +7>parseInt(b.browser.version,10)&&!a.inline?'':"");a._keyEvent=!1;return G},_generateMonthYearHeader:function(a,b,c,d,e,g,p,n){var q=this._get(a,"changeMonth"),o=this._get(a,"changeYear"),w=this._get(a,"showMonthAfterYear"),r='
                ',u="";if(g||!q)u+=''+p[b]+"";else{for(var p=d&&d.getFullYear()==c,s=e&&e.getFullYear()==c,u=u+('"}w||(r+=u+(g||!q||!o?" ":""));if(!a.yearshtml)if(a.yearshtml="",g||!o)r+=''+c+"";else{var n=this._get(a,"yearRange").split(":"),z=(new Date).getFullYear(),p=function(a){a= +a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?z+parseInt(a,10):parseInt(a,10);return isNaN(a)?z:a},b=p(n[0]),n=Math.max(b,p(n[1]||"")),b=d?Math.max(b,d.getFullYear()):b,n=e?Math.min(n,e.getFullYear()):n;for(a.yearshtml+='";r+=a.yearshtml;a.yearshtml=null}r+=this._get(a,"yearSuffix");w&&(r+=(g||!q||!o?" ":"")+u);return r+"
                "},_adjustInstDate:function(a,b,c){var d=a.drawYear+("Y"==c?b:0),e=a.drawMonth+("M"==c?b:0),b=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+("D"==c?b:0),d=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,b)));a.selectedDay=d.getDate();a.drawMonth=a.selectedMonth=d.getMonth();a.drawYear=a.selectedYear=d.getFullYear();("M"==c|| +"Y"==c)&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),c=c&&bd?d:c},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return null==a?[1,1]:"number"==typeof a?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a, +b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),c=this._daylightSavingAdjust(new Date(c,d+(0>b?b:e[0]*e[1]),1));0>b&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<= +d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff"),b="string"!=typeof b?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);b=b?"object"==typeof b?b:this._daylightSavingAdjust(new Date(d, +c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});b.fn.datepicker=function(a){if(!this.length)return this;b.datepicker.initialized||(b(document).mousedown(b.datepicker._checkExternalClick).find("body").append(b.datepicker.dpDiv),b.datepicker.initialized=!0);var c=Array.prototype.slice.call(arguments,1);return"string"==typeof a&&("isDisabled"==a||"getDate"==a||"widget"==a)||"option"== +a&&2==arguments.length&&"string"==typeof arguments[1]?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this[0]].concat(c)):this.each(function(){typeof a=="string"?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this].concat(c)):b.datepicker._attachDatepicker(this,a)})};b.datepicker=new c;b.datepicker.initialized=!1;b.datepicker.uuid=(new Date).getTime();b.datepicker.version="1.8.14";window["DP_jQuery_"+h]=b})(jQuery); +(function(b,a){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
                ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===a)return this._value();this._setOption("value",b);return this},_setOption:function(a,d){"value"===a&&(this.options.value=d,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete"));b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;"number"!==typeof a&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change"));this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.14"})})(jQuery); +jQuery.effects||function(b,a){function c(a){var c;return a&&a.constructor==Array&&3==a.length?a:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(a))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(a))?[2.55*parseFloat(c[1]),2.55*parseFloat(c[2]),2.55*parseFloat(c[3])]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))?[parseInt(c[1],16),parseInt(c[2], +16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(a))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:/rgba\(0, 0, 0, 0\)/.exec(a)?i.transparent:i[b.trim(a).toLowerCase()]}function d(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]])for(var e=a.length;e--;)c=a[e],"string"==typeof a[c]&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c]);else for(c in a)"string"=== +typeof a[c]&&(b[c]=a[c]);return b}function g(a){var c,d;for(c in a)d=a[c],(null==d||b.isFunction(d)||c in k||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete a[c];return a}function h(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function e(a,c,d,e){"object"==typeof a&&(e=c,d=null,c=a,a=c.effect);b.isFunction(c)&&(e=c,d=null,c={});if("number"==typeof c||b.fx.speeds[c])e=d,d=c,c={};b.isFunction(d)&&(e=d,d=null);c=c||{};d=d||c.duration;d=b.fx.off?0:"number"==typeof d? +d:d in b.fx.speeds?b.fx.speeds[d]:b.fx.speeds._default;e=e||c.complete;return[a,c,d,e]}function f(a){return!a||("number"===typeof a||b.fx.speeds[a])||"string"===typeof a&&!b.effects[a]?!0:!1}b.effects={};b.each("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor borderColor color outlineColor".split(" "),function(a,d){b.fx.step[d]=function(a){if(!a.colorInit){var e;e=a.elem;var f=d,g;do{g=b.curCSS(e,f);if(g!=""&&g!="transparent"||b.nodeName(e,"body"))break;f="backgroundColor"}while(e= +e.parentNode);e=c(g);a.start=e;a.end=c(a.end);a.colorInit=true}a.elem.style[d]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var i={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139], +darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255], +maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},j=["add","remove","toggle"],k={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};b.effects.animateClass=function(a,c,e,f){b.isFunction(e)&&(f=e,e=null);return this.queue(function(){var i=b(this),o=i.attr("style")|| +" ",k=g(d.call(this)),r,u=i.attr("class");b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});r=g(d.call(this));i.attr("class",u);i.animate(h(k,r),{queue:false,duration:c,easing:e,complete:function(){b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});if(typeof i.attr("style")=="object"){i.attr("style").cssText="";i.attr("style").cssText=o}else i.attr("style",o);f&&f.apply(this,arguments);b.dequeue(this)}})})};b.fn.extend({_addClass:b.fn.addClass,addClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this, +[{add:a},c,d,e]):this._addClass(a)},_removeClass:b.fn.removeClass,removeClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this,[{remove:a},c,d,e]):this._removeClass(a)},_toggleClass:b.fn.toggleClass,toggleClass:function(c,d,e,f,g){return"boolean"==typeof d||d===a?e?b.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):b.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(a,c,d,e,f){return b.effects.animateClass.apply(this,[{add:c, +remove:a},d,e,f])}});b.extend(b.effects,{version:"1.8.14",save:function(a,b){for(var c=0;c").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});a.wrap(d);d=a.parent();"static"==a.css("position")?(d.css({position:"relative"}),a.css({position:"relative"})): +(b.extend(c,{position:a.css("position"),zIndex:a.css("z-index")}),b.each(["top","left","bottom","right"],function(b,d){c[d]=a.css(d);isNaN(parseInt(c[d],10))&&(c[d]="auto")}),a.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(a){return a.parent().is(".ui-effects-wrapper")?a.parent().replaceWith(a):a},setTransition:function(a,c,d,e){e=e||{};b.each(c,function(b,c){unit=a.cssUnit(c);0(b/=e/2)?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c}, +easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/ +e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:1>(b/=e/2)?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)* +b)+c},easeInOutCirc:function(a,b,c,d,e){return 1>(b/=e/2)?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var a=1.70158,f=0,g=d;if(0==b)return c;if(1==(b/=e))return c+d;f||(f=0.3*e);gb?-0.5*g*Math.pow(2,10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+c:0.5*g*Math.pow(2,-10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+d+c},easeInBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(b,c,d,e, +f,g){g==a&&(g=1.70158);return e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return 1>(c/=f/2)?e/2*c*c*(((g*=1.525)+1)*c-g)+d:e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(a,c,d,e,f){return e-b.easing.easeOutBounce(a,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+0.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+0.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+0.984375)+c},easeInOutBounce:function(a, +c,d,e,f){return c").css({position:"absolute",visibility:"visible",left:-j*(e/d),top:-i*(f/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:e/d,height:f/c,left:h.left+j*(e/d)+("show"==a.options.mode?(j-Math.floor(d/2))*(e/d):0),top:h.top+i*(f/c)+("show"==a.options.mode?(i-Math.floor(c/2))*(f/c):0),opacity:"show"==a.options.mode?0:1}).animate({left:h.left+j*(e/d)+("show"==a.options.mode?0:(j-Math.floor(d/2))*(e/d)),top:h.top+ +i*(f/c)+("show"==a.options.mode?0:(i-Math.floor(c/2))*(f/c)),opacity:"show"==a.options.mode?1:0},a.duration||500);setTimeout(function(){"show"==a.options.mode?g.css({visibility:"visible"}):g.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(g[0]);g.dequeue();b("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(b){b.effects.fold=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.size||15,e=!!a.options.horizFirst,f=a.duration?a.duration/2:b.fx.speeds._default/2;b.effects.save(c,d);c.show();var i=b.effects.createWrapper(c).css({overflow:"hidden"}),j="show"==g!=e,k=j?["width","height"]:["height","width"],j=j?[i.width(),i.height()]:[i.height(),i.width()],l=/([0-9]+)%/.exec(h);l&&(h=parseInt(l[1], +10)/100*j["hide"==g?0:1]);"show"==g&&i.css(e?{height:0,width:h}:{height:h,width:0});e={};l={};e[k[0]]="show"==g?j[0]:h;l[k[1]]="show"==g?j[1]:0;i.animate(e,f,a.options.easing).animate(l,f,a.options.easing,function(){"hide"==g&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +(function(b){b.effects.highlight=function(a){return this.queue(function(){var c=b(this),d=["backgroundImage","backgroundColor","opacity"],g=b.effects.setMode(c,a.options.mode||"show"),h={backgroundColor:c.css("backgroundColor")};"hide"==g&&(h.opacity=0);b.effects.save(c,d);c.show().css({backgroundImage:"none",backgroundColor:a.options.color||"#ffff99"}).animate(h,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){g=="hide"&&c.hide();b.effects.restore(c,d);g=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(b){b.effects.pulsate=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"show");times=2*(a.options.times||5)-1;duration=a.duration?a.duration/2:b.fx.speeds._default/2;isVisible=c.is(":visible");animateTo=0;isVisible||(c.css("opacity",0).show(),animateTo=1);("hide"==d&&isVisible||"show"==d&&!isVisible)&×--;for(d=0;d').appendTo(document.body).addClass(a.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(d,a.duration,a.options.easing,function(){h.remove();a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +/* + * jQuery Highlight plugin + * Based on highlight v3 by Johann Burkard + * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html + * Copyright (c) 2009 Bartek Szopka http://bartaz.github.com/sandbox.js/jquery.highlight.html + * Licensed under MIT license. + */ +jQuery.extend({highlight:function(a,c,b,e){if(a.nodeType===3){if(c=a.data.match(c)){b=document.createElement(b||"span");b.className=e||"highlight";a=a.splitText(c.index);a.splitText(c[0].length);e=a.cloneNode(true);b.appendChild(e);a.parentNode.replaceChild(b,a);return 1}}else if(a.nodeType===1&&a.childNodes&&!/(script|style)/i.test(a.tagName)&&!(a.tagName===b.toUpperCase()&&a.className===e))for(var d=0;d').appendTo("body"); + var d = { width: $c.width() - $c[0].clientWidth, height: $c.height() - $c[0].clientHeight }; + $c.remove(); + window.scrollbarWidth = d.width; + window.scrollbarHeight = d.height; + return dim.match(/^(width|height)$/) ? d[dim] : d; + } + + + /** + * Returns hash container 'display' and 'visibility' + * + * @see $.swap() - swaps CSS, runs callback, resets CSS + */ +, showInvisibly: function ($E, force) { + if (!$E) return {}; + if (!$E.jquery) $E = $($E); + var CSS = { + display: $E.css('display') + , visibility: $E.css('visibility') + }; + if (force || CSS.display === "none") { // only if not *already hidden* + $E.css({ display: "block", visibility: "hidden" }); // show element 'invisibly' so can be measured + return CSS; + } + else return {}; + } + + /** + * Returns data for setting size of an element (container or a pane). + * + * @see _create(), onWindowResize() for container, plus others for pane + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, outerWidth, innerHeight, etc + */ +, getElementDimensions: function ($E) { + var + d = {} // dimensions hash + , x = d.css = {} // CSS hash + , i = {} // TEMP insets + , b, p // TEMP border, padding + , N = $.layout.cssNum + , off = $E.offset() + ; + d.offsetLeft = off.left; + d.offsetTop = off.top; + + $.each("Left,Right,Top,Bottom".split(","), function (idx, e) { // e = edge + b = x["border" + e] = $.layout.borderWidth($E, e); + p = x["padding"+ e] = $.layout.cssNum($E, "padding"+e); + i[e] = b + p; // total offset of content from outer side + d["inset"+ e] = p; + }); + + d.offsetWidth = $E.innerWidth(); // offsetWidth is used in calc when doing manual resize + d.offsetHeight = $E.innerHeight(); // ditto + d.outerWidth = $E.outerWidth(); + d.outerHeight = $E.outerHeight(); + d.innerWidth = max(0, d.outerWidth - i.Left - i.Right); + d.innerHeight = max(0, d.outerHeight - i.Top - i.Bottom); + + x.width = $E.width(); + x.height = $E.height(); + x.top = N($E,"top",true); + x.bottom = N($E,"bottom",true); + x.left = N($E,"left",true); + x.right = N($E,"right",true); + + //d.visible = $E.is(":visible");// && x.width > 0 && x.height > 0; + + return d; + } + +, getElementCSS: function ($E, list) { + var + CSS = {} + , style = $E[0].style + , props = list.split(",") + , sides = "Top,Bottom,Left,Right".split(",") + , attrs = "Color,Style,Width".split(",") + , p, s, a, i, j, k + ; + for (i=0; i < props.length; i++) { + p = props[i]; + if (p.match(/(border|padding|margin)$/)) + for (j=0; j < 4; j++) { + s = sides[j]; + if (p === "border") + for (k=0; k < 3; k++) { + a = attrs[k]; + CSS[p+s+a] = style[p+s+a]; + } + else + CSS[p+s] = style[p+s]; + } + else + CSS[p] = style[p]; + }; + return CSS + } + + /** + * Return the innerWidth for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerWidth (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerWidth of the elem by subtracting padding and borders + */ +, cssWidth: function ($E, outerWidth) { + var + b = $.layout.borderWidth + , n = $.layout.cssNum + ; + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerWidth <= 0) return 0; + + if (!$.support.boxModel) return outerWidth; + + // strip border and padding from outerWidth to get CSS Width + var W = outerWidth + - b($E, "Left") + - b($E, "Right") + - n($E, "paddingLeft") + - n($E, "paddingRight") + ; + + return max(0,W); + } + + /** + * Return the innerHeight for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerHeight (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerHeight of the elem by subtracting padding and borders + */ +, cssHeight: function ($E, outerHeight) { + var + b = $.layout.borderWidth + , n = $.layout.cssNum + ; + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerHeight <= 0) return 0; + + if (!$.support.boxModel) return outerHeight; + + // strip border and padding from outerHeight to get CSS Height + var H = outerHeight + - b($E, "Top") + - b($E, "Bottom") + - n($E, "paddingTop") + - n($E, "paddingBottom") + ; + + return max(0,H); + } + + /** + * Returns the 'current CSS numeric value' for a CSS property - 0 if property does not exist + * + * @see Called by many methods + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {string} prop The name of the CSS property, eg: top, width, etc. + * @param {boolean=} [allowAuto=false] true = return 'auto' if that is value; false = return 0 + * @return {(string|number)} Usually used to get an integer value for position (top, left) or size (height, width) + */ +, cssNum: function ($E, prop, allowAuto) { + if (!$E.jquery) $E = $($E); + var CSS = $.layout.showInvisibly($E) + , p = $.curCSS($E[0], prop, true) + , v = allowAuto && p=="auto" ? p : (parseInt(p, 10) || 0); + $E.css( CSS ); // RESET + return v; + } + +, borderWidth: function (el, side) { + if (el.jquery) el = el[0]; + var b = "border"+ side.substr(0,1).toUpperCase() + side.substr(1); // left => Left + return $.curCSS(el, b+"Style", true) === "none" ? 0 : (parseInt($.curCSS(el, b+"Width", true), 10) || 0); + } + + /** + * Mouse-tracking utility - FUTURE REFERENCE + * + * init: if (!window.mouse) { + * window.mouse = { x: 0, y: 0 }; + * $(document).mousemove( $.layout.trackMouse ); + * } + * + * @param {Object} evt + * +, trackMouse: function (evt) { + window.mouse = { x: evt.clientX, y: evt.clientY }; + } + */ + + /** + * SUBROUTINE for preventPrematureSlideClose option + * + * @param {Object} evt + * @param {Object=} el + */ +, isMouseOverElem: function (evt, el) { + var + $E = $(el || this) + , d = $E.offset() + , T = d.top + , L = d.left + , R = L + $E.outerWidth() + , B = T + $E.outerHeight() + , x = evt.pageX // evt.clientX ? + , y = evt.pageY // evt.clientY ? + ; + // if X & Y are < 0, probably means is over an open SELECT + return ($.layout.browser.msie && x < 0 && y < 0) || ((x >= L && x <= R) && (y >= T && y <= B)); + } + + /** + * Message/Logging Utility + * + * @example $.layout.msg("My message"); // log text + * @example $.layout.msg("My message", true); // alert text + * @example $.layout.msg({ foo: "bar" }, "Title"); // log hash-data, with custom title + * @example $.layout.msg({ foo: "bar" }, true, "Title", { sort: false }); -OR- + * @example $.layout.msg({ foo: "bar" }, "Title", { sort: false, display: true }); // alert hash-data + * + * @param {(Object|string)} info String message OR Hash/Array + * @param {(Boolean|string|Object)=} [popup=false] True means alert-box - can be skipped + * @param {(Object|string)=} [debugTitle=""] Title for Hash data - can be skipped + * @param {Object=} [debutOpts={}] Extra options for debug output + */ +, msg: function (info, popup, debugTitle, debugOpts) { + if ($.isPlainObject(info) && window.debugData) { + if (typeof popup === "string") { + debugOpts = debugTitle; + debugTitle = popup; + } + else if (typeof debugTitle === "object") { + debugOpts = debugTitle; + debugTitle = null; + } + var t = debugTitle || "log( )" + , o = $.extend({ sort: false, returnHTML: false, display: false }, debugOpts); + if (popup === true || o.display) + debugData( info, t, o ); + else if (window.console) + console.log(debugData( info, t, o )); + } + else if (popup) + alert(info); + else if (window.console) + console.log(info); + else { + var id = "#layoutLogger" + , $l = $(id); + if (!$l.length) + $l = createLog(); + $l.children("ul").append('
              • '+ info.replace(/\/g,">") +'
              • '); + } + + function createLog () { + var pos = $.support.fixedPosition ? 'fixed' : 'absolute' + , $e = $('
                ' + + '
                ' + + 'XLayout console.log
                ' + + '
                  ' + + '
                  ' + ).appendTo("body"); + $e.css('left', $(window).width() - $e.outerWidth() - 5) + if ($.ui.draggable) $e.draggable({ handle: ':first-child' }); + return $e; + }; + } + +}; + +var lang = $.layout.language; // alias used in defaults... + +// DEFAULT OPTIONS - CHANGE IF DESIRED +$.layout.defaults = { +/* + * LAYOUT & LAYOUT-CONTAINER OPTIONS + * - none of these options are applicable to individual panes + */ + name: "" // Not required, but useful for buttons and used for the state-cookie +, containerSelector: "" // ONLY used when specifying a childOptions - to find container-element that is NOT directly-nested +, containerClass: "ui-layout-container" // layout-container element +, scrollToBookmarkOnLoad: true // after creating a layout, scroll to bookmark in URL (.../page.htm#myBookmark) +, resizeWithWindow: true // bind thisLayout.resizeAll() to the window.resize event +, resizeWithWindowDelay: 200 // delay calling resizeAll because makes window resizing very jerky +, resizeWithWindowMaxDelay: 0 // 0 = none - force resize every XX ms while window is being resized +, onresizeall_start: null // CALLBACK when resizeAll() STARTS - NOT pane-specific +, onresizeall_end: null // CALLBACK when resizeAll() ENDS - NOT pane-specific +, onload_start: null // CALLBACK when Layout inits - after options initialized, but before elements +, onload_end: null // CALLBACK when Layout inits - after EVERYTHING has been initialized +, onunload_start: null // CALLBACK when Layout is destroyed OR onWindowUnload +, onunload_end: null // CALLBACK when Layout is destroyed OR onWindowUnload +, autoBindCustomButtons: false // search for buttons with ui-layout-button class and auto-bind them +, initPanes: true // false = DO NOT initialize the panes onLoad - will init later +, showErrorMessages: true // enables fatal error messages to warn developers of common errors +, showDebugMessages: false // display console-and-alert debug msgs - IF this Layout version _has_ debugging code! +// Changing this zIndex value will cause other zIndex values to automatically change +, zIndex: null // the PANE zIndex - resizers and masks will be +1 +// DO NOT CHANGE the zIndex values below unless you clearly understand their relationships +, zIndexes: { // set _default_ z-index values here... + pane_normal: 0 // normal z-index for panes + , content_mask: 1 // applied to overlays used to mask content INSIDE panes during resizing + , resizer_normal: 2 // normal z-index for resizer-bars + , pane_sliding: 100 // applied to *BOTH* the pane and its resizer when a pane is 'slid open' + , pane_animate: 1000 // applied to the pane when being animated - not applied to the resizer + , resizer_drag: 10000 // applied to the CLONED resizer-bar when being 'dragged' + } +/* + * PANE DEFAULT SETTINGS + * - settings under the 'panes' key become the default settings for *all panes* + * - ALL pane-options can also be set specifically for each panes, which will override these 'default values' + */ +, panes: { // default options for 'all panes' - will be overridden by 'per-pane settings' + applyDemoStyles: false // NOTE: renamed from applyDefaultStyles for clarity + , closable: true // pane can open & close + , resizable: true // when open, pane can be resized + , slidable: true // when closed, pane can 'slide open' over other panes - closes on mouse-out + , initClosed: false // true = init pane as 'closed' + , initHidden: false // true = init pane as 'hidden' - no resizer-bar/spacing + // SELECTORS + //, paneSelector: "" // MUST be pane-specific - jQuery selector for pane + , contentSelector: ".ui-layout-content" // INNER div/element to auto-size so only it scrolls, not the entire pane! + , contentIgnoreSelector: ".ui-layout-ignore" // element(s) to 'ignore' when measuring 'content' + , findNestedContent: false // true = $P.find(contentSelector), false = $P.children(contentSelector) + // GENERIC ROOT-CLASSES - for auto-generated classNames + , paneClass: "ui-layout-pane" // Layout Pane + , resizerClass: "ui-layout-resizer" // Resizer Bar + , togglerClass: "ui-layout-toggler" // Toggler Button + , buttonClass: "ui-layout-button" // CUSTOM Buttons - eg: '[ui-layout-button]-toggle/-open/-close/-pin' + // ELEMENT SIZE & SPACING + //, size: 100 // MUST be pane-specific -initial size of pane + , minSize: 0 // when manually resizing a pane + , maxSize: 0 // ditto, 0 = no limit + , spacing_open: 6 // space between pane and adjacent panes - when pane is 'open' + , spacing_closed: 6 // ditto - when pane is 'closed' + , togglerLength_open: 50 // Length = WIDTH of toggler button on north/south sides - HEIGHT on east/west sides + , togglerLength_closed: 50 // 100% OR -1 means 'full height/width of resizer bar' - 0 means 'hidden' + , togglerAlign_open: "center" // top/left, bottom/right, center, OR... + , togglerAlign_closed: "center" // 1 => nn = offset from top/left, -1 => -nn == offset from bottom/right + , togglerTip_open: lang.Close // Toggler tool-tip (title) + , togglerTip_closed: lang.Open // ditto + , togglerContent_open: "" // text or HTML to put INSIDE the toggler + , togglerContent_closed: "" // ditto + // RESIZING OPTIONS + , resizerDblClickToggle: true // + , autoResize: true // IF size is 'auto' or a percentage, then recalc 'pixel size' whenever the layout resizes + , autoReopen: true // IF a pane was auto-closed due to noRoom, reopen it when there is room? False = leave it closed + , resizerDragOpacity: 1 // option for ui.draggable + //, resizerCursor: "" // MUST be pane-specific - cursor when over resizer-bar + , maskContents: false // true = add DIV-mask over-or-inside this pane so can 'drag' over IFRAMES + , maskObjects: false // true = add IFRAME-mask over-or-inside this pane to cover objects/applets - content-mask will overlay this mask + , maskZindex: null // will override zIndexes.content_mask if specified - not applicable to iframe-panes + , resizingGrid: false // grid size that the resizers will snap-to during resizing, eg: [20,20] + , livePaneResizing: false // true = LIVE Resizing as resizer is dragged + , liveContentResizing: false // true = re-measure header/footer heights as resizer is dragged + , liveResizingTolerance: 1 // how many px change before pane resizes, to control performance + // TIPS & MESSAGES - also see lang object + , noRoomToOpenTip: lang.noRoomToOpenTip + , resizerTip: lang.Resize // Resizer tool-tip (title) + , sliderTip: lang.Slide // resizer-bar triggers 'sliding' when pane is closed + , sliderCursor: "pointer" // cursor when resizer-bar will trigger 'sliding' + , slideTrigger_open: "click" // click, dblclick, mouseenter + , slideTrigger_close: "mouseleave"// click, mouseleave + , slideDelay_open: 300 // applies only for mouseenter event - 0 = instant open + , slideDelay_close: 300 // applies only for mouseleave event (300ms is the minimum!) + , hideTogglerOnSlide: false // when pane is slid-open, should the toggler show? + , preventQuickSlideClose: $.layout.browser.webkit // Chrome triggers slideClosed as it is opening + , preventPrematureSlideClose: false // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + // HOT-KEYS & MISC + , showOverflowOnHover: false // will bind allowOverflow() utility to pane.onMouseOver + , enableCursorHotkey: true // enabled 'cursor' hotkeys + //, customHotkey: "" // MUST be pane-specific - EITHER a charCode OR a character + , customHotkeyModifier: "SHIFT" // either 'SHIFT', 'CTRL' or 'CTRL+SHIFT' - NOT 'ALT' + // PANE ANIMATION + // NOTE: fxSss_open, fxSss_close & fxSss_size options (eg: fxName_open) are auto-generated if not passed + , fxName: "slide" // ('none' or blank), slide, drop, scale -- only relevant to 'open' & 'close', NOT 'size' + , fxSpeed: null // slow, normal, fast, 200, nnn - if passed, will OVERRIDE fxSettings.duration + , fxSettings: {} // can be passed, eg: { easing: "easeOutBounce", duration: 1500 } + , fxOpacityFix: true // tries to fix opacity in IE to restore anti-aliasing after animation + , animatePaneSizing: false // true = animate resizing after dragging resizer-bar OR sizePane() is called + /* NOTE: Action-specific FX options are auto-generated from the options above if not specifically set: + fxName_open: "slide" // 'Open' pane animation + fnName_close: "slide" // 'Close' pane animation + fxName_size: "slide" // 'Size' pane animation - when animatePaneSizing = true + fxSpeed_open: null + fxSpeed_close: null + fxSpeed_size: null + fxSettings_open: {} + fxSettings_close: {} + fxSettings_size: {} + */ + // CHILD/NESTED LAYOUTS + , childOptions: null // Layout-options for nested/child layout - even {} is valid as options + , initChildLayout: true // true = child layout will be created as soon as _this_ layout completes initialization + , destroyChildLayout: true // true = destroy child-layout if this pane is destroyed + , resizeChildLayout: true // true = trigger child-layout.resizeAll() when this pane is resized + // PANE CALLBACKS + , triggerEventsOnLoad: false // true = trigger onopen OR onclose callbacks when layout initializes + , triggerEventsDuringLiveResize: true // true = trigger onresize callback REPEATEDLY if livePaneResizing==true + , onshow_start: null // CALLBACK when pane STARTS to Show - BEFORE onopen/onhide_start + , onshow_end: null // CALLBACK when pane ENDS being Shown - AFTER onopen/onhide_end + , onhide_start: null // CALLBACK when pane STARTS to Close - BEFORE onclose_start + , onhide_end: null // CALLBACK when pane ENDS being Closed - AFTER onclose_end + , onopen_start: null // CALLBACK when pane STARTS to Open + , onopen_end: null // CALLBACK when pane ENDS being Opened + , onclose_start: null // CALLBACK when pane STARTS to Close + , onclose_end: null // CALLBACK when pane ENDS being Closed + , onresize_start: null // CALLBACK when pane STARTS being Resized ***FOR ANY REASON*** + , onresize_end: null // CALLBACK when pane ENDS being Resized ***FOR ANY REASON*** + , onsizecontent_start: null // CALLBACK when sizing of content-element STARTS + , onsizecontent_end: null // CALLBACK when sizing of content-element ENDS + , onswap_start: null // CALLBACK when pane STARTS to Swap + , onswap_end: null // CALLBACK when pane ENDS being Swapped + , ondrag_start: null // CALLBACK when pane STARTS being ***MANUALLY*** Resized + , ondrag_end: null // CALLBACK when pane ENDS being ***MANUALLY*** Resized + } +/* + * PANE-SPECIFIC SETTINGS + * - options listed below MUST be specified per-pane - they CANNOT be set under 'panes' + * - all options under the 'panes' key can also be set specifically for any pane + * - most options under the 'panes' key apply only to 'border-panes' - NOT the the center-pane + */ +, north: { + paneSelector: ".ui-layout-north" + , size: "auto" // eg: "auto", "30%", .30, 200 + , resizerCursor: "n-resize" // custom = url(myCursor.cur) + , customHotkey: "" // EITHER a charCode (43) OR a character ("o") + } +, south: { + paneSelector: ".ui-layout-south" + , size: "auto" + , resizerCursor: "s-resize" + , customHotkey: "" + } +, east: { + paneSelector: ".ui-layout-east" + , size: 200 + , resizerCursor: "e-resize" + , customHotkey: "" + } +, west: { + paneSelector: ".ui-layout-west" + , size: 200 + , resizerCursor: "w-resize" + , customHotkey: "" + } +, center: { + paneSelector: ".ui-layout-center" + , minWidth: 0 + , minHeight: 0 + } +}; + +$.layout.optionsMap = { + // layout/global options - NOT pane-options + layout: ("stateManagement,effects,zIndexes," + + "name,zIndex,scrollToBookmarkOnLoad,showErrorMessages," + + "resizeWithWindow,resizeWithWindowDelay,resizeWithWindowMaxDelay," + + "onresizeall,onresizeall_start,onresizeall_end,onload,onunload,autoBindCustomButtons").split(",") +// borderPanes: [ ALL options that are NOT specified as 'layout' ] + // default.panes options that apply to the center-pane (most options apply _only_ to border-panes) +, center: ("paneClass,contentSelector,contentIgnoreSelector,findNestedContent,applyDemoStyles,triggerEventsOnLoad," + + "showOverflowOnHover,maskContents,maskObjects,liveContentResizing," + + "childOptions,initChildLayout,resizeChildLayout,destroyChildLayout," + + "onresize,onresize_start,onresize_end,onsizecontent,onsizecontent_start,onsizecontent_end").split(",") + // options that MUST be specifically set 'per-pane' - CANNOT set in the panes (defaults) key +, noDefault: ("paneSelector,resizerCursor,customHotkey").split(",") +}; + +/** + * Processes options passed in converts flat-format data into subkey (JSON) format + * In flat-format, subkeys are _currently_ separated with 2 underscores, like north__optName + * Plugins may also call this method so they can transform their own data + * + * @param {!Object} hash Data/options passed by user - may be a single level or nested levels + * @return {Object} Returns hash of minWidth & minHeight + */ +$.layout.transformData = function (hash) { + var json = { panes: {}, center: {} } // init return object + , data, branch, optKey, keys, key, val, i, c; + + if (typeof hash !== "object") return json; // no options passed + + // convert all 'flat-keys' to 'sub-key' format + for (optKey in hash) { + branch = json; + data = $.layout.optionsMap.layout; + val = hash[ optKey ]; + keys = optKey.split("__"); // eg: west__size or north__fxSettings__duration + c = keys.length - 1; + // convert underscore-delimited to subkeys + for (i=0; i <= c; i++) { + key = keys[i]; + if (i === c) + branch[key] = val; + else if (!branch[key]) + branch[key] = {}; // create the subkey + // recurse to sub-key for next loop - if not done + branch = branch[key]; + } + } + + return json; +} + +// INTERNAL CONFIG DATA - DO NOT CHANGE THIS! +$.layout.backwardCompatibility = { + // data used by renameOldOptions() + map: { + // OLD Option Name: NEW Option Name + applyDefaultStyles: "applyDemoStyles" + , resizeNestedLayout: "resizeChildLayout" + , resizeWhileDragging: "livePaneResizing" + , resizeContentWhileDragging: "liveContentResizing" + , triggerEventsWhileDragging: "triggerEventsDuringLiveResize" + , maskIframesOnResize: "maskContents" + , useStateCookie: "stateManagement.enabled" + , "cookie.autoLoad": "stateManagement.autoLoad" + , "cookie.autoSave": "stateManagement.autoSave" + , "cookie.keys": "stateManagement.stateKeys" + , "cookie.name": "stateManagement.cookie.name" + , "cookie.domain": "stateManagement.cookie.domain" + , "cookie.path": "stateManagement.cookie.path" + , "cookie.expires": "stateManagement.cookie.expires" + , "cookie.secure": "stateManagement.cookie.secure" + } + /** + * @param {Object} opts + */ +, renameOptions: function (opts) { + var map = $.layout.backwardCompatibility.map + , oldData, newData, value + ; + for (var itemPath in map) { + oldData = getBranch( itemPath ); + value = oldData.branch[ oldData.key ] + if (value !== undefined) { + newData = getBranch( map[itemPath], true ) + newData.branch[ newData.key ] = value; + delete oldData.branch[ oldData.key ]; + } + } + + /** + * @param {string} path + * @param {boolean=} [create=false] Create path if does not exist + */ + function getBranch (path, create) { + var a = path.split(".") // split keys into array + , c = a.length - 1 + , D = { branch: opts, key: a[c] } // init branch at top & set key (last item) + , i = 0, k, undef; + for (; i 0) { + if (autoHide && $E.data('autoHidden') && $E.innerHeight() > 0) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + // make hidden, then visible to 'refresh' display after animation + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerHeight + * @param {boolean=} [autoHide=false] + */ +, setOuterHeight = function (el, outerHeight, autoHide) { + var $E = el, h; + if (isStr(el)) $E = $Ps[el]; // west + else if (!el.jquery) $E = $(el); + h = cssH($E, outerHeight); + $E.css({ height: h, visibility: "visible" }); // may have been 'hidden' by sizeContent + if (h > 0 && $E.innerWidth() > 0) { + if (autoHide && $E.data('autoHidden')) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerSize + * @param {boolean=} [autoHide=false] + */ +, setOuterSize = function (el, outerSize, autoHide) { + if (_c[pane].dir=="horz") // pane = north or south + setOuterHeight(el, outerSize, autoHide); + else // pane = east or west + setOuterWidth(el, outerSize, autoHide); + } + + + /** + * Converts any 'size' params to a pixel/integer size, if not already + * If 'auto' or a decimal/percentage is passed as 'size', a pixel-size is calculated + * + /** + * @param {string} pane + * @param {(string|number)=} size + * @param {string=} [dir] + * @return {number} + */ +, _parseSize = function (pane, size, dir) { + if (!dir) dir = _c[pane].dir; + + if (isStr(size) && size.match(/%/)) + size = (size === '100%') ? -1 : parseInt(size, 10) / 100; // convert % to decimal + + if (size === 0) + return 0; + else if (size >= 1) + return parseInt(size, 10); + + var o = options, avail = 0; + if (dir=="horz") // north or south or center.minHeight + avail = sC.innerHeight - ($Ps.north ? o.north.spacing_open : 0) - ($Ps.south ? o.south.spacing_open : 0); + else if (dir=="vert") // east or west or center.minWidth + avail = sC.innerWidth - ($Ps.west ? o.west.spacing_open : 0) - ($Ps.east ? o.east.spacing_open : 0); + + if (size === -1) // -1 == 100% + return avail; + else if (size > 0) // percentage, eg: .25 + return round(avail * size); + else if (pane=="center") + return 0; + else { // size < 0 || size=='auto' || size==Missing || size==Invalid + // auto-size the pane + var dim = (dir === "horz" ? "height" : "width") + , $P = $Ps[pane] + , $C = dim === 'height' ? $Cs[pane] : false + , vis = $.layout.showInvisibly($P) // show pane invisibly if hidden + , szP = $P.css(dim) // SAVE current pane size + , szC = $C ? $C.css(dim) : 0 // SAVE current content size + ; + $P.css(dim, "auto"); + if ($C) $C.css(dim, "auto"); + size = (dim === "height") ? $P.outerHeight() : $P.outerWidth(); // MEASURE + $P.css(dim, szP).css(vis); // RESET size & visibility + if ($C) $C.css(dim, szC); + return size; + } + } + + /** + * Calculates current 'size' (outer-width or outer-height) of a border-pane - optionally with 'pane-spacing' added + * + * @param {(string|!Object)} pane + * @param {boolean=} [inclSpace=false] + * @return {number} Returns EITHER Width for east/west panes OR Height for north/south panes - adjusted for boxModel & browser + */ +, getPaneSize = function (pane, inclSpace) { + var + $P = $Ps[pane] + , o = options[pane] + , s = state[pane] + , oSp = (inclSpace ? o.spacing_open : 0) + , cSp = (inclSpace ? o.spacing_closed : 0) + ; + if (!$P || s.isHidden) + return 0; + else if (s.isClosed || (s.isSliding && inclSpace)) + return cSp; + else if (_c[pane].dir === "horz") + return $P.outerHeight() + oSp; + else // dir === "vert" + return $P.outerWidth() + oSp; + } + + /** + * Calculate min/max pane dimensions and limits for resizing + * + * @param {string} pane + * @param {boolean=} [slide=false] + */ +, setSizeLimits = function (pane, slide) { + if (!isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , dir = c.dir + , side = c.side.toLowerCase() + , type = c.sizeType.toLowerCase() + , isSliding = (slide != undefined ? slide : s.isSliding) // only open() passes 'slide' param + , $P = $Ps[pane] + , paneSpacing = o.spacing_open + // measure the pane on the *opposite side* from this pane + , altPane = _c.oppositeEdge[pane] + , altS = state[altPane] + , $altP = $Ps[altPane] + , altPaneSize = (!$altP || altS.isVisible===false || altS.isSliding ? 0 : (dir=="horz" ? $altP.outerHeight() : $altP.outerWidth())) + , altPaneSpacing = ((!$altP || altS.isHidden ? 0 : options[altPane][ altS.isClosed !== false ? "spacing_closed" : "spacing_open" ]) || 0) + // limitSize prevents this pane from 'overlapping' opposite pane + , containerSize = (dir=="horz" ? sC.innerHeight : sC.innerWidth) + , minCenterDims = cssMinDims("center") + , minCenterSize = dir=="horz" ? max(options.center.minHeight, minCenterDims.minHeight) : max(options.center.minWidth, minCenterDims.minWidth) + // if pane is 'sliding', then ignore center and alt-pane sizes - because 'overlays' them + , limitSize = (containerSize - paneSpacing - (isSliding ? 0 : (_parseSize("center", minCenterSize, dir) + altPaneSize + altPaneSpacing))) + , minSize = s.minSize = max( _parseSize(pane, o.minSize), cssMinDims(pane).minSize ) + , maxSize = s.maxSize = min( (o.maxSize ? _parseSize(pane, o.maxSize) : 100000), limitSize ) + , r = s.resizerPosition = {} // used to set resizing limits + , top = sC.insetTop + , left = sC.insetLeft + , W = sC.innerWidth + , H = sC.innerHeight + , rW = o.spacing_open // subtract resizer-width to get top/left position for south/east + ; + switch (pane) { + case "north": r.min = top + minSize; + r.max = top + maxSize; + break; + case "west": r.min = left + minSize; + r.max = left + maxSize; + break; + case "south": r.min = top + H - maxSize - rW; + r.max = top + H - minSize - rW; + break; + case "east": r.min = left + W - maxSize - rW; + r.max = left + W - minSize - rW; + break; + }; + } + + /** + * Returns data for setting the size/position of center pane. Also used to set Height for east/west panes + * + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, (outer) width and (outer) height + */ +, calcNewCenterPaneDims = function () { + var d = { + top: getPaneSize("north", true) // true = include 'spacing' value for pane + , bottom: getPaneSize("south", true) + , left: getPaneSize("west", true) + , right: getPaneSize("east", true) + , width: 0 + , height: 0 + }; + + // NOTE: sC = state.container + // calc center-pane outer dimensions + d.width = sC.innerWidth - d.left - d.right; // outerWidth + d.height = sC.innerHeight - d.bottom - d.top; // outerHeight + // add the 'container border/padding' to get final positions relative to the container + d.top += sC.insetTop; + d.bottom += sC.insetBottom; + d.left += sC.insetLeft; + d.right += sC.insetRight; + + return d; + } + + + /** + * @param {!Object} el + * @param {boolean=} [allStates=false] + */ +, getHoverClasses = function (el, allStates) { + var + $El = $(el) + , type = $El.data("layoutRole") + , pane = $El.data("layoutEdge") + , o = options[pane] + , root = o[type +"Class"] + , _pane = "-"+ pane // eg: "-west" + , _open = "-open" + , _closed = "-closed" + , _slide = "-sliding" + , _hover = "-hover " // NOTE the trailing space + , _state = $El.hasClass(root+_closed) ? _closed : _open + , _alt = _state === _closed ? _open : _closed + , classes = (root+_hover) + (root+_pane+_hover) + (root+_state+_hover) + (root+_pane+_state+_hover) + ; + if (allStates) // when 'removing' classes, also remove alternate-state classes + classes += (root+_alt+_hover) + (root+_pane+_alt+_hover); + + if (type=="resizer" && $El.hasClass(root+_slide)) + classes += (root+_slide+_hover) + (root+_pane+_slide+_hover); + + return $.trim(classes); + } +, addHover = function (evt, el) { + var $E = $(el || this); + if (evt && $E.data("layoutRole") === "toggler") + evt.stopPropagation(); // prevent triggering 'slide' on Resizer-bar + $E.addClass( getHoverClasses($E) ); + } +, removeHover = function (evt, el) { + var $E = $(el || this); + $E.removeClass( getHoverClasses($E, true) ); + } + +, onResizerEnter = function (evt) { // ALSO called by toggler.mouseenter + if ($.fn.disableSelection) + $("body").disableSelection(); + } +, onResizerLeave = function (evt, el) { + var + e = el || this // el is only passed when called by the timer + , pane = $(e).data("layoutEdge") + , name = pane +"ResizerLeave" + ; + timer.clear(pane+"_openSlider"); // cancel slideOpen timer, if set + timer.clear(name); // cancel enableSelection timer - may re/set below + // this method calls itself on a timer because it needs to allow + // enough time for dragging to kick-in and set the isResizing flag + // dragging has a 100ms delay set, so this delay must be >100 + if (!el) // 1st call - mouseleave event + timer.set(name, function(){ onResizerLeave(evt, e); }, 200); + // if user is resizing, then dragStop will enableSelection(), so can skip it here + else if (!state[pane].isResizing && $.fn.enableSelection) // 2nd call - by timer + $("body").enableSelection(); + } + +/* + * ########################### + * INITIALIZATION METHODS + * ########################### + */ + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see none - triggered onInit + * @return mixed true = fully initialized | false = panes not initialized (yet) | 'cancel' = abort + */ +, _create = function () { + // initialize config/options + initOptions(); + var o = options; + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // init plugins for this layout, if there are any (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onCreate ); + + // options & state have been initialized, so now run beforeLoad callback + // onload will CANCEL layout creation if it returns false + if (false === _runCallbacks("onload_start")) + return 'cancel'; + + // initialize the container element + _initContainer(); + + // bind hotkey function - keyDown - if required + initHotkeys(); + + // bind window.onunload + $(window).bind("unload."+ sID, unload); + + // init plugins for this layout, if there are any (eg: customButtons) + runPluginCallbacks( Instance, $.layout.onLoad ); + + // if layout elements are hidden, then layout WILL NOT complete initialization! + // initLayoutElements will set initialized=true and run the onload callback IF successful + if (o.initPanes) _initLayoutElements(); + + delete state.creatingLayout; + + return state.initialized; + } + + /** + * Initialize the layout IF not already + * + * @see All methods in Instance run this test + * @return boolean true = layoutElements have been initialized | false = panes are not initialized (yet) + */ +, isInitialized = function () { + if (state.initialized || state.creatingLayout) return true; // already initialized + else return _initLayoutElements(); // try to init panes NOW + } + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see _create() & isInitialized + * @return An object pointer to the instance created + */ +, _initLayoutElements = function (retry) { + // initialize config/options + var o = options; + + // CANNOT init panes inside a hidden container! + if (!$N.is(":visible")) { + // handle Chrome bug where popup window 'has no height' + // if layout is BODY element, try again in 50ms + // SEE: http://layout.jquery-dev.net/samples/test_popup_window.html + if ( !retry && browser.webkit && $N[0].tagName === "BODY" ) + setTimeout(function(){ _initLayoutElements(true); }, 50); + return false; + } + + // a center pane is required, so make sure it exists + if (!getPane("center").length) { + if (options.showErrorMessages) + _log( lang.errCenterPaneMissing, true ); + return false; + } + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // update Container dims + $.extend(sC, elDims( $N )); + + // initialize all layout elements + initPanes(); // size & position panes - calls initHandles() - which calls initResizable() + + if (o.scrollToBookmarkOnLoad) { + var l = self.location; + if (l.hash) l.replace( l.hash ); // scrollTo Bookmark + } + + // check to see if this layout 'nested' inside a pane + if (Instance.hasParentLayout) + o.resizeWithWindow = false; + // bind resizeAll() for 'this layout instance' to window.resize event + else if (o.resizeWithWindow) + $(window).bind("resize."+ sID, windowResize); + + delete state.creatingLayout; + state.initialized = true; + + // init plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onReady ); + + // now run the onload callback, if exists + _runCallbacks("onload_end"); + + return true; // elements initialized successfully + } + + /** + * Initialize nested layouts - called when _initLayoutElements completes + * + * NOT CURRENTLY USED + * + * @see _initLayoutElements + * @return An object pointer to the instance created + */ +, _initChildLayouts = function () { + $.each(_c.allPanes, function (idx, pane) { + if (options[pane].initChildLayout) + createChildLayout( pane ); + }); + } + + /** + * Initialize nested layouts for a specific pane - can optionally pass layout-options + * + * @see _initChildLayouts + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {Object=} [opts] Layout-options - if passed, will OVERRRIDE options[pane].childOptions + * @return An object pointer to the layout instance created - or null + */ +, createChildLayout = function (evt_or_pane, opts) { + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , C = children + ; + if ($P) { + var $C = $Cs[pane] + , o = opts || options[pane].childOptions + , d = "layout" + // determine which element is supposed to be the 'child container' + // if pane has a 'containerSelector' OR a 'content-div', use those instead of the pane + , $Cont = o.containerSelector ? $P.find( o.containerSelector ) : ($C || $P) + , containerFound = $Cont.length + // see if a child-layout ALREADY exists on this element + , child = containerFound ? (C[pane] = $Cont.data(d) || null) : null + ; + // if no layout exists, but childOptions are set, try to create the layout now + if (!child && containerFound && o) + child = C[pane] = $Cont.eq(0).layout(o) || null; + if (child) + child.hasParentLayout = true; // set parent-flag in child + } + Instance[pane].child = C[pane]; // ALWAYS set pane-object pointer, even if null + } + +, windowResize = function () { + var delay = Number(options.resizeWithWindowDelay); + if (delay < 10) delay = 100; // MUST have a delay! + // resizing uses a delay-loop because the resize event fires repeatly - except in FF, but delay anyway + timer.clear("winResize"); // if already running + timer.set("winResize", function(){ + timer.clear("winResize"); + timer.clear("winResizeRepeater"); + var dims = elDims( $N ); + // only trigger resizeAll() if container has changed size + if (dims.innerWidth !== sC.innerWidth || dims.innerHeight !== sC.innerHeight) + resizeAll(); + }, delay); + // ALSO set fixed-delay timer, if not already running + if (!timer.data["winResizeRepeater"]) setWindowResizeRepeater(); + } + +, setWindowResizeRepeater = function () { + var delay = Number(options.resizeWithWindowMaxDelay); + if (delay > 0) + timer.set("winResizeRepeater", function(){ setWindowResizeRepeater(); resizeAll(); }, delay); + } + +, unload = function () { + var o = options; + + _runCallbacks("onunload_start"); + + // trigger plugin callabacks for this layout (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onUnload ); + + _runCallbacks("onunload_end"); + } + + /** + * Validate and initialize container CSS and events + * + * @see _create() + */ +, _initContainer = function () { + var + N = $N[0] + , tag = sC.tagName = N.tagName + , id = sC.id = N.id + , cls = sC.className = N.className + , o = options + , name = o.name + , fullPage= (tag === "BODY") + , props = "overflow,position,margin,padding,border" + , css = "layoutCSS" + , CSS = {} + , hid = "hidden" // used A LOT! + // see if this container is a 'pane' inside an outer-layout + , parent = $N.data("parentLayout") // parent-layout Instance + , pane = $N.data("layoutEdge") // pane-name in parent-layout + , isChild = parent && pane + ; + // sC -> state.container + sC.selector = $N.selector.split(".slice")[0]; + sC.ref = (o.name ? o.name +' layout / ' : '') + tag + (id ? "#"+id : cls ? '.['+cls+']' : ''); // used in messages + + $N .data({ + layout: Instance + , layoutContainer: sID // FLAG to indicate this is a layout-container - contains unique internal ID + }) + .addClass(o.containerClass) + ; + var layoutMethods = { + destroy: '' + , initPanes: '' + , resizeAll: 'resizeAll' + , resize: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in layoutMethods) { + $N.bind("layout"+ name.toLowerCase() +"."+ sID, Instance[ layoutMethods[name] || name ]); + } + + // if this container is another layout's 'pane', then set child/parent pointers + if (isChild) { + // update parent flag + Instance.hasParentLayout = true; + // set pointers to THIS child-layout (Instance) in parent-layout + // NOTE: parent.PANE.child is an ALIAS to parent.children.PANE + parent[pane].child = parent.children[pane] = $N.data("layout"); + } + + // SAVE original container CSS for use in destroy() + if (!$N.data(css)) { + // handle props like overflow different for BODY & HTML - has 'system default' values + if (fullPage) { + CSS = $.extend( elCSS($N, props), { + height: $N.css("height") + , overflow: $N.css("overflow") + , overflowX: $N.css("overflowX") + , overflowY: $N.css("overflowY") + }); + // ALSO SAVE CSS + var $H = $("html"); + $H.data(css, { + height: "auto" // FF would return a fixed px-size! + , overflow: $H.css("overflow") + , overflowX: $H.css("overflowX") + , overflowY: $H.css("overflowY") + }); + } + else // handle props normally for non-body elements + CSS = elCSS($N, props+",top,bottom,left,right,width,height,overflow,overflowX,overflowY"); + + $N.data(css, CSS); + } + + try { // format html/body if this is a full page layout + if (fullPage) { + $("html").css({ + height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + }); + $("body").css({ + position: "relative" + , height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + , margin: 0 + , padding: 0 // TODO: test whether body-padding could be handled? + , border: "none" // a body-border creates problems because it cannot be measured! + }); + + // set current layout-container dimensions + $.extend(sC, elDims( $N )); + } + else { // set required CSS for overflow and position + // ENSURE container will not 'scroll' + CSS = { overflow: hid, overflowX: hid, overflowY: hid } + var + p = $N.css("position") + , h = $N.css("height") + ; + // if this is a NESTED layout, then container/outer-pane ALREADY has position and height + if (!isChild) { + if (!p || !p.match(/fixed|absolute|relative/)) + CSS.position = "relative"; // container MUST have a 'position' + /* + if (!h || h=="auto") + CSS.height = "100%"; // container MUST have a 'height' + */ + } + $N.css( CSS ); + + // set current layout-container dimensions + if ( $N.is(":visible") ) { + $.extend(sC, elDims( $N )); + if (o.showErrorMessages && sC.innerHeight < 1) + _log( lang.errContainerHeight.replace(/CONTAINER/, sC.ref), true ); + } + } + } catch (ex) {} + } + + /** + * Bind layout hotkeys - if options enabled + * + * @see _create() and addPane() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHotkeys = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + // bind keyDown to capture hotkeys, if option enabled for ANY pane + $.each(panes, function (i, pane) { + var o = options[pane]; + if (o.enableCursorHotkey || o.customHotkey) { + $(document).bind("keydown."+ sID, keyDown); // only need to bind this ONCE + return false; // BREAK - binding was done + } + }); + } + + /** + * Build final OPTIONS data + * + * @see _create() + */ +, initOptions = function () { + var data, d, pane, key, val, i, c, o; + + // reprocess user's layout-options to have correct options sub-key structure + opts = $.layout.transformData( opts ); // panes = default subkey + + // auto-rename old options for backward compatibility + opts = $.layout.backwardCompatibility.renameAllOptions( opts ); + + // if user-options has 'panes' key (pane-defaults), process it... + if (!$.isEmptyObject(opts.panes)) { + // REMOVE any pane-defaults that MUST be set per-pane + data = $.layout.optionsMap.noDefault; + for (i=0, c=data.length; i 0) { + z.pane_normal = zo; + z.content_mask = max(zo+1, z.content_mask); // MIN = +1 + z.resizer_normal = max(zo+2, z.resizer_normal); // MIN = +2 + } + + function createFxOptions ( pane ) { + var o = options[pane] + , d = options.panes; + // ensure fxSettings key to avoid errors + if (!o.fxSettings) o.fxSettings = {}; + if (!d.fxSettings) d.fxSettings = {}; + + $.each(["_open","_close","_size"], function (i,n) { + var + sName = "fxName"+ n + , sSpeed = "fxSpeed"+ n + , sSettings = "fxSettings"+ n + // recalculate fxName according to specificity rules + , fxName = o[sName] = + o[sName] // options.west.fxName_open + || d[sName] // options.panes.fxName_open + || o.fxName // options.west.fxName + || d.fxName // options.panes.fxName + || "none" // MEANS $.layout.defaults.panes.fxName == "" || false || null || 0 + ; + // validate fxName to ensure is valid effect - MUST have effect-config data in options.effects + if (fxName === "none" || !$.effects || !$.effects[fxName] || !options.effects[fxName]) + fxName = o[sName] = "none"; // effect not loaded OR unrecognized fxName + + // set vars for effects subkeys to simplify logic + var fx = options.effects[fxName] || {} // effects.slide + , fx_all = fx.all || null // effects.slide.all + , fx_pane = fx[pane] || null // effects.slide.west + ; + // create fxSpeed[_open|_close|_size] + o[sSpeed] = + o[sSpeed] // options.west.fxSpeed_open + || d[sSpeed] // options.west.fxSpeed_open + || o.fxSpeed // options.west.fxSpeed + || d.fxSpeed // options.panes.fxSpeed + || null // DEFAULT - let fxSetting.duration control speed + ; + // create fxSettings[_open|_close|_size] + o[sSettings] = $.extend( + {} + , fx_all // effects.slide.all + , fx_pane // effects.slide.west + , d.fxSettings // options.panes.fxSettings + , o.fxSettings // options.west.fxSettings + , d[sSettings] // options.panes.fxSettings_open + , o[sSettings] // options.west.fxSettings_open + ); + }); + + // DONE creating action-specific-settings for this pane, + // so DELETE generic options - are no longer meaningful + delete o.fxName; + delete o.fxSpeed; + delete o.fxSettings; + } + + // DELETE 'panes' key now that we are done - values were copied to EACH pane + delete options.panes; + } + + /** + * Initialize module objects, styling, size and position for all panes + * + * @see _initElements() + * @param {string} pane The pane to process + */ +, getPane = function (pane) { + var sel = options[pane].paneSelector + if (sel.substr(0,1)==="#") // ID selector + // NOTE: elements selected 'by ID' DO NOT have to be 'children' + return $N.find(sel).eq(0); + else { // class or other selector + var $P = $N.children(sel).eq(0); + // look for the pane nested inside a 'form' element + return $P.length ? $P : $N.children("form:first").children(sel).eq(0); + } + } + +, initPanes = function () { + // NOTE: do north & south FIRST so we can measure their height - do center LAST + $.each(_c.allPanes, function (idx, pane) { + addPane( pane, true ); + }); + + // init the pane-handles NOW in case we have to hide or close the pane below + initHandles(); + + // now that all panes have been initialized and initially-sized, + // make sure there is really enough space available for each pane + $.each(_c.borderPanes, function (i, pane) { + if ($Ps[pane] && state[pane].isVisible) { // pane is OPEN + setSizeLimits(pane); + makePaneFit(pane); // pane may be Closed, Hidden or Resized by makePaneFit() + } + }); + // size center-pane AGAIN in case we 'closed' a border-pane in loop above + sizeMidPanes("center"); + + // Chrome/Webkit sometimes fires callbacks BEFORE it completes resizing! + // Before RC30.3, there was a 10ms delay here, but that caused layout + // to load asynchrously, which is BAD, so try skipping delay for now + + // process pane contents and callbacks, and init/resize child-layout if exists + $.each(_c.allPanes, function (i, pane) { + var o = options[pane]; + if ($Ps[pane]) { + if (state[pane].isVisible) { // pane is OPEN + sizeContent(pane); + // trigger pane.onResize if triggerEventsOnLoad = true + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); + } + // init childLayout - even if pane is not visible + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + }); + } + + /** + * Add a pane to the layout - subroutine of initPanes() + * + * @see initPanes() + * @param {string} pane The pane to process + * @param {boolean=} [force=false] Size content after init + */ +, addPane = function (pane, force) { + if (!force && !isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , fx = s.fx + , dir = c.dir + , spacing = o.spacing_open || 0 + , isCenter = (pane === "center") + , CSS = {} + , $P = $Ps[pane] + , size, minSize, maxSize + ; + // if pane-pointer already exists, remove the old one first + if ($P) + removePane( pane, false, true, false ); + else + $Cs[pane] = false; // init + + $P = $Ps[pane] = getPane(pane); + if (!$P.length) { + $Ps[pane] = false; // logic + return; + } + + // SAVE original Pane CSS + if (!$P.data("layoutCSS")) { + var props = "position,top,left,bottom,right,width,height,overflow,zIndex,display,backgroundColor,padding,margin,border"; + $P.data("layoutCSS", elCSS($P, props)); + } + + // create alias for pane data in Instance - initHandles will add more + Instance[pane] = { name: pane, pane: $Ps[pane], content: $Cs[pane], options: options[pane], state: state[pane], child: children[pane] }; + + // add classes, attributes & events + $P .data({ + parentLayout: Instance // pointer to Layout Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "pane" + }) + .css(c.cssReq).css("zIndex", options.zIndexes.pane_normal) + .css(o.applyDemoStyles ? c.cssDemo : {}) // demo styles + .addClass( o.paneClass +" "+ o.paneClass+"-"+pane ) // default = "ui-layout-pane ui-layout-pane-west" - may be a dupe of 'paneSelector' + .bind("mouseenter."+ sID, addHover ) + .bind("mouseleave."+ sID, removeHover ) + ; + var paneMethods = { + hide: '' + , show: '' + , toggle: '' + , close: '' + , open: '' + , slideOpen: '' + , slideClose: '' + , slideToggle: '' + , size: 'manualSizePane' + , sizePane: 'manualSizePane' + , sizeContent: '' + , sizeHandles: '' + , enableClosable: '' + , disableClosable: '' + , enableSlideable: '' + , disableSlideable: '' + , enableResizable: '' + , disableResizable: '' + , swapPanes: 'swapPanes' + , swap: 'swapPanes' + , move: 'swapPanes' + , removePane: 'removePane' + , remove: 'removePane' + , createChildLayout: '' + , resizeChildLayout: '' + , resizeAll: 'resizeAll' + , resizeLayout: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in paneMethods) { + $P.bind("layoutpane"+ name.toLowerCase() +"."+ sID, Instance[ paneMethods[name] || name ]); + } + + // see if this pane has a 'scrolling-content element' + initContent(pane, false); // false = do NOT sizeContent() - called later + + if (!isCenter) { + // call _parseSize AFTER applying pane classes & styles - but before making visible (if hidden) + // if o.size is auto or not valid, then MEASURE the pane and use that as its 'size' + size = s.size = _parseSize(pane, o.size); + minSize = _parseSize(pane,o.minSize) || 1; + maxSize = _parseSize(pane,o.maxSize) || 100000; + if (size > 0) size = max(min(size, maxSize), minSize); + + // state for border-panes + s.isClosed = false; // true = pane is closed + s.isSliding = false; // true = pane is currently open by 'sliding' over adjacent panes + s.isResizing= false; // true = pane is in process of being resized + s.isHidden = false; // true = pane is hidden - no spacing, resizer or toggler is visible! + + // array for 'pin buttons' whose classNames are auto-updated on pane-open/-close + if (!s.pins) s.pins = []; + } + // states common to ALL panes + s.tagName = $P[0].tagName; + s.edge = pane; // useful if pane is (or about to be) 'swapped' - easy find out where it is (or is going) + s.noRoom = false; // true = pane 'automatically' hidden due to insufficient room - will unhide automatically + s.isVisible = true; // false = pane is invisible - closed OR hidden - simplify logic + + // set css-position to account for container borders & padding + switch (pane) { + case "north": CSS.top = sC.insetTop; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "south": CSS.bottom = sC.insetBottom; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "west": CSS.left = sC.insetLeft; // top, bottom & height set by sizeMidPanes() + break; + case "east": CSS.right = sC.insetRight; // ditto + break; + case "center": // top, left, width & height set by sizeMidPanes() + } + + if (dir === "horz") // north or south pane + CSS.height = cssH($P, size); + else if (dir === "vert") // east or west pane + CSS.width = cssW($P, size); + //else if (isCenter) {} + + $P.css(CSS); // apply size -- top, bottom & height will be set by sizeMidPanes + if (dir != "horz") sizeMidPanes(pane, true); // true = skipCallback + + // close or hide the pane if specified in settings + if (o.initClosed && o.closable && !o.initHidden) + close(pane, true, true); // true, true = force, noAnimation + else if (o.initHidden || o.initClosed) + hide(pane); // will be completely invisible - no resizer or spacing + else if (!s.noRoom) + // make the pane visible - in case was initially hidden + $P.css("display","block"); + // ELSE setAsOpen() - called later by initHandles() + + // RESET visibility now - pane will appear IF display:block + $P.css("visibility","visible"); + + // check option for auto-handling of pop-ups & drop-downs + if (o.showOverflowOnHover) + $P.hover( allowOverflow, resetOverflow ); + + // if manually adding a pane AFTER layout initialization, then... + if (state.initialized) { + initHandles( pane ); + initHotkeys( pane ); + resizeAll(); // will sizeContent if pane is visible + if (s.isVisible) { // pane is OPEN + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); // a previously existing childLayout + } + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + } + + /** + * Initialize module objects, styling, size and position for all resize bars and toggler buttons + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHandles = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + + // create toggler DIVs for each pane, and set object pointers for them, eg: $R.north = north toggler DIV + $.each(panes, function (i, pane) { + var $P = $Ps[pane]; + $Rs[pane] = false; // INIT + $Ts[pane] = false; + if (!$P) return; // pane does not exist - skip + + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , rClass = o.resizerClass + , tClass = o.togglerClass + , side = c.side.toLowerCase() + , spacing = (s.isVisible ? o.spacing_open : o.spacing_closed) + , _pane = "-"+ pane // used for classNames + , _state = (s.isVisible ? "-open" : "-closed") // used for classNames + , I = Instance[pane] + // INIT RESIZER BAR + , $R = I.resizer = $Rs[pane] = $("
                  ") + // INIT TOGGLER BUTTON + , $T = I.toggler = (o.closable ? $Ts[pane] = $("
                  ") : false) + ; + + //if (s.isVisible && o.resizable) ... handled by initResizable + if (!s.isVisible && o.slidable) + $R.attr("title", o.sliderTip).css("cursor", o.sliderCursor); + + $R // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "paneLeft-resizer" + .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-resizer" : "")) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "resizer" + }) + .css(_c.resizers.cssReq).css("zIndex", options.zIndexes.resizer_normal) + .css(o.applyDemoStyles ? _c.resizers.cssDemo : {}) // add demo styles + .addClass(rClass +" "+ rClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if resizing is not enabled - handle with CSS instead + .hover(onResizerEnter, onResizerLeave) // ALWAYS NEED resizer.mouseleave to balance toggler.mouseenter + .appendTo($N) // append DIV to container + ; + + if ($T) { + $T // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "#paneLeft-toggler" + .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-toggler" : "")) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "toggler" + }) + .css(_c.togglers.cssReq) // add base/required styles + .css(o.applyDemoStyles ? _c.togglers.cssDemo : {}) // add demo styles + .addClass(tClass +" "+ tClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if toggling is not enabled - handle with CSS instead + .bind("mouseenter", onResizerEnter) // NEED toggler.mouseenter because mouseenter MAY NOT fire on resizer + .appendTo($R) // append SPAN to resizer DIV + ; + // ADD INNER-SPANS TO TOGGLER + if (o.togglerContent_open) // ui-layout-open + $(""+ o.togglerContent_open +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .data("layoutRole", "togglerContent") + .data("layoutEdge", pane) + .addClass("content content-open") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-open instead! + ; + if (o.togglerContent_closed) // ui-layout-closed + $(""+ o.togglerContent_closed +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .addClass("content content-closed") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-closed instead! + ; + // ADD TOGGLER.click/.hover + enableClosable(pane); + } + + // add Draggable events + initResizable(pane); + + // ADD CLASSNAMES & SLIDE-BINDINGS - eg: class="resizer resizer-west resizer-open" + if (s.isVisible) + setAsOpen(pane); // onOpen will be called, but NOT onResize + else { + setAsClosed(pane); // onClose will be called + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + }); + + // SET ALL HANDLE DIMENSIONS + sizeHandles(); + } + + + /** + * Initialize scrolling ui-layout-content div - if exists + * + * @see initPane() - or externally after an Ajax injection + * @param {string} [pane] The pane to process + * @param {boolean=} [resize=true] Size content after init + */ +, initContent = function (pane, resize) { + if (!isInitialized()) return; + var + o = options[pane] + , sel = o.contentSelector + , I = Instance[pane] + , $P = $Ps[pane] + , $C + ; + if (sel) $C = I.content = $Cs[pane] = (o.findNestedContent) + ? $P.find(sel).eq(0) // match 1-element only + : $P.children(sel).eq(0) + ; + if ($C && $C.length) { + $C.data("layoutRole", "content"); + // SAVE original Pane CSS + if (!$C.data("layoutCSS")) + $C.data("layoutCSS", elCSS($C, "height")); + $C.css( _c.content.cssReq ); + if (o.applyDemoStyles) { + $C.css( _c.content.cssDemo ); // add padding & overflow: auto to content-div + $P.css( _c.content.cssDemoPane ); // REMOVE padding/scrolling from pane + } + state[pane].content = {}; // init content state + if (resize !== false) sizeContent(pane); + // sizeContent() is called AFTER init of all elements + } + else + I.content = $Cs[pane] = false; + } + + + /** + * Add resize-bars to all panes that specify it in options + * -dependancy: $.fn.resizable - will skip if not found + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initResizable = function (panes) { + var draggingAvailable = $.layout.plugins.draggable + , side // set in start() + ; + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (idx, pane) { + var o = options[pane]; + if (!draggingAvailable || !$Ps[pane] || !o.resizable) { + o.resizable = false; + return true; // skip to next + } + + var s = state[pane] + , z = options.zIndexes + , c = _c[pane] + , side = c.dir=="horz" ? "top" : "left" + , opEdge = _c.oppositeEdge[pane] + , masks = pane +",center,"+ opEdge + (c.dir=="horz" ? ",west,east" : "") + , $P = $Ps[pane] + , $R = $Rs[pane] + , base = o.resizerClass + , lastPos = 0 // used when live-resizing + , r, live // set in start because may change + // 'drag' classes are applied to the ORIGINAL resizer-bar while dragging is in process + , resizerClass = base+"-drag" // resizer-drag + , resizerPaneClass = base+"-"+pane+"-drag" // resizer-north-drag + // 'helper' class is applied to the CLONED resizer-bar while it is being dragged + , helperClass = base+"-dragging" // resizer-dragging + , helperPaneClass = base+"-"+pane+"-dragging" // resizer-north-dragging + , helperLimitClass = base+"-dragging-limit" // resizer-drag + , helperPaneLimitClass = base+"-"+pane+"-dragging-limit" // resizer-north-drag + , helperClassesSet = false // logic var + ; + + if (!s.isClosed) + $R.attr("title", o.resizerTip) + .css("cursor", o.resizerCursor); // n-resize, s-resize, etc + + $R.draggable({ + containment: $N[0] // limit resizing to layout container + , axis: (c.dir=="horz" ? "y" : "x") // limit resizing to horz or vert axis + , delay: 0 + , distance: 1 + , grid: o.resizingGrid + // basic format for helper - style it using class: .ui-draggable-dragging + , helper: "clone" + , opacity: o.resizerDragOpacity + , addClasses: false // avoid ui-state-disabled class when disabled + //, iframeFix: o.draggableIframeFix // TODO: consider using when bug is fixed + , zIndex: z.resizer_drag + + , start: function (e, ui) { + // REFRESH options & state pointers in case we used swapPanes + o = options[pane]; + s = state[pane]; + // re-read options + live = o.livePaneResizing; + + // ondrag_start callback - will CANCEL hide if returns false + // TODO: dragging CANNOT be cancelled like this, so see if there is a way? + if (false === _runCallbacks("ondrag_start", pane)) return false; + + s.isResizing = true; // prevent pane from closing while resizing + timer.clear(pane+"_closeSlider"); // just in case already triggered + + // SET RESIZER LIMITS - used in drag() + setSizeLimits(pane); // update pane/resizer state + r = s.resizerPosition; + lastPos = ui.position[ side ] + + $R.addClass( resizerClass +" "+ resizerPaneClass ); // add drag classes + helperClassesSet = false; // reset logic var - see drag() + + // DISABLE TEXT SELECTION (probably already done by resizer.mouseOver) + $('body').disableSelection(); + + // MASK PANES CONTAINING IFRAMES, APPLETS OR OTHER TROUBLESOME ELEMENTS + showMasks( masks ); + } + + , drag: function (e, ui) { + if (!helperClassesSet) { // can only add classes after clone has been added to the DOM + //$(".ui-draggable-dragging") + ui.helper + .addClass( helperClass +" "+ helperPaneClass ) // add helper classes + .css({ right: "auto", bottom: "auto" }) // fix dir="rtl" issue + .children().css("visibility","hidden") // hide toggler inside dragged resizer-bar + ; + helperClassesSet = true; + // draggable bug!? RE-SET zIndex to prevent E/W resize-bar showing through N/S pane! + if (s.isSliding) $Ps[pane].css("zIndex", z.pane_sliding); + } + // CONTAIN RESIZER-BAR TO RESIZING LIMITS + var limit = 0; + if (ui.position[side] < r.min) { + ui.position[side] = r.min; + limit = -1; + } + else if (ui.position[side] > r.max) { + ui.position[side] = r.max; + limit = 1; + } + // ADD/REMOVE dragging-limit CLASS + if (limit) { + ui.helper.addClass( helperLimitClass +" "+ helperPaneLimitClass ); // at dragging-limit + window.defaultStatus = (limit>0 && pane.match(/north|west/)) || (limit<0 && pane.match(/south|east/)) ? lang.maxSizeWarning : lang.minSizeWarning; + } + else { + ui.helper.removeClass( helperLimitClass +" "+ helperPaneLimitClass ); // not at dragging-limit + window.defaultStatus = ""; + } + // DYNAMICALLY RESIZE PANES IF OPTION ENABLED + // won't trigger unless resizer has actually moved! + if (live && Math.abs(ui.position[side] - lastPos) >= o.liveResizingTolerance) { + lastPos = ui.position[side]; + resizePanes(e, ui, pane) + } + } + + , stop: function (e, ui) { + $('body').enableSelection(); // RE-ENABLE TEXT SELECTION + window.defaultStatus = ""; // clear 'resizing limit' message from statusbar + $R.removeClass( resizerClass +" "+ resizerPaneClass ); // remove drag classes from Resizer + s.isResizing = false; + resizePanes(e, ui, pane, true, masks); // true = resizingDone + } + + }); + }); + + /** + * resizePanes + * + * Sub-routine called from stop() - and drag() if livePaneResizing + * + * @param {!Object} evt + * @param {!Object} ui + * @param {string} pane + * @param {boolean=} [resizingDone=false] + */ + var resizePanes = function (evt, ui, pane, resizingDone, masks) { + var dragPos = ui.position + , c = _c[pane] + , o = options[pane] + , s = state[pane] + , resizerPos + ; + switch (pane) { + case "north": resizerPos = dragPos.top; break; + case "west": resizerPos = dragPos.left; break; + case "south": resizerPos = sC.offsetHeight - dragPos.top - o.spacing_open; break; + case "east": resizerPos = sC.offsetWidth - dragPos.left - o.spacing_open; break; + }; + // remove container margin from resizer position to get the pane size + var newSize = resizerPos - sC["inset"+ c.side]; + + // Disable OR Resize Mask(s) created in drag.start + if (!resizingDone) { + // ensure we meet liveResizingTolerance criteria + if (Math.abs(newSize - s.size) < o.liveResizingTolerance) + return; // SKIP resize this time + // resize the pane + manualSizePane(pane, newSize, false, true); // true = noAnimation + sizeMasks(); // resize all visible masks + } + else { // resizingDone + // ondrag_end callback + if (false !== _runCallbacks("ondrag_end", pane)) + manualSizePane(pane, newSize, false, true); // true = noAnimation + hideMasks(); // hide all masks, which include panes with 'content/iframe-masks' + if (s.isSliding && masks) // RE-SHOW only 'object-masks' so objects won't show through sliding pane + showMasks( masks, true ); // true = onlyForObjects + } + }; + } + + /** + * sizeMask + * + * Needed to overlay a DIV over an IFRAME-pane because mask CANNOT be *inside* the pane + * Called when mask created, and during livePaneResizing + */ +, sizeMask = function () { + var $M = $(this) + , pane = $M.data("layoutMask") // eg: "west" + , s = state[pane] + ; + // only masks over an IFRAME-pane need manual resizing + if (s.tagName == "IFRAME" && s.isVisible) // no need to mask closed/hidden panes + $M.css({ + top: s.offsetTop + , left: s.offsetLeft + , width: s.outerWidth + , height: s.outerHeight + }); + /* ALT Method... + var $P = $Ps[pane]; + $M.css( $P.position() ).css({ width: $P[0].offsetWidth, height: $P[0].offsetHeight }); + */ + } +, sizeMasks = function () { + $Ms.each( sizeMask ); // resize all 'visible' masks + } + +, showMasks = function (panes, onlyForObjects) { + var a = panes ? panes.split(",") : $.layout.config.allPanes + , z = options.zIndexes + , o, s; + $.each(a, function(i,p){ + s = state[p]; + o = options[p]; + if (s.isVisible && ( (!onlyForObjects && o.maskContents) || o.maskObjects )) { + getMasks(p).each(function(){ + sizeMask.call(this); + this.style.zIndex = s.isSliding ? z.pane_sliding+1 : z.pane_normal+1 + this.style.display = "block"; + }); + } + }); + } + +, hideMasks = function () { + // ensure no pane is resizing - could be a timing issue + var skip; + $.each( $.layout.config.borderPanes, function(i,p){ + if (state[p].isResizing) { + skip = true; + return false; // BREAK + } + }); + if (!skip) + $Ms.hide(); // hide ALL masks + } + +, getMasks = function (pane) { + var $Masks = $([]) + , $M, i = 0, c = $Ms.length + ; + for (; i CSS + if (sC.tagName === "BODY" && ($N = $("html")).data(css)) // RESET CSS + $N.css( $N.data(css) ).removeData(css); + + // trigger plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onDestroy ); + + // trigger state-management and onunload callback + unload(); + + // clear the Instance of everything except for container & options (so could recreate) + // RE-CREATE: myLayout = myLayout.container.layout( myLayout.options ); + for (n in Instance) + if (!n.match(/^(container|options)$/)) delete Instance[ n ]; + // add a 'destroyed' flag to make it easy to check + Instance.destroyed = true; + + // if this is a child layout, CLEAR the child-pointer in the parent + /* for now the pointer REMAINS, but with only container, options and destroyed keys + if (parentPane) { + var layout = parentPane.pane.data("parentLayout"); + parentPane.child = layout.children[ parentPane.name ] = null; + } + */ + + return Instance; // for coding convenience + } + + /** + * Remove a pane from the layout - subroutine of destroy() + * + * @see destroy() + * @param {string} pane The pane to process + * @param {boolean=} [remove=false] Remove the DOM element? + * @param {boolean=} [skipResize=false] Skip calling resizeAll()? + */ +, removePane = function (evt_or_pane, remove, skipResize, destroyChild) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $C = $Cs[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + ; + //alert( '$P.length = '+ $P.length ); + // NOTE: elements can still exist even after remove() + // so check for missing data(), which is cleared by removed() + if ($P && $.isEmptyObject( $P.data() )) $P = false; + if ($C && $.isEmptyObject( $C.data() )) $C = false; + if ($R && $.isEmptyObject( $R.data() )) $R = false; + if ($T && $.isEmptyObject( $T.data() )) $T = false; + + if ($P) $P.stop(true, true); + + // check for a child layout + var o = options[pane] + , s = state[pane] + , d = "layout" + , css = "layoutCSS" + , child = children[pane] || ($P ? $P.data(d) : 0) || ($C ? $C.data(d) : 0) || null + , destroy = destroyChild !== undefined ? destroyChild : o.destroyChildLayout + ; + + // FIRST destroy the child-layout(s) + if (destroy && child && !child.destroyed) { + child.destroy(true); // tell child-layout to destroy ALL its child-layouts too + if (child.destroyed) // destroy was successful + child = null; // clear pointer for logic below + } + + if ($P && remove && !child) + $P.remove(); + else if ($P && $P[0]) { + // create list of ALL pane-classes that need to be removed + var root = o.paneClass // default="ui-layout-pane" + , pRoot = root +"-"+ pane // eg: "ui-layout-pane-west" + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + , classes = [ root, root+_open, root+_closed, root+_sliding, // generic classes + pRoot, pRoot+_open, pRoot+_closed, pRoot+_sliding ] // pane-specific classes + ; + $.merge(classes, getHoverClasses($P, true)); // ADD hover-classes + // remove all Layout classes from pane-element + $P .removeClass( classes.join(" ") ) // remove ALL pane-classes + .removeData("parentLayout") + .removeData("layoutPane") + .removeData("layoutRole") + .removeData("layoutEdge") + .removeData("autoHidden") // in case set + .unbind("."+ sID) // remove ALL Layout events + // TODO: remove these extra unbind commands when jQuery is fixed + //.unbind("mouseenter"+ sID) + //.unbind("mouseleave"+ sID) + ; + // do NOT reset CSS if this pane/content is STILL the container of a nested layout! + // the nested layout will reset its 'container' CSS when/if it is destroyed + if ($C && $C.data(d)) { + // a content-div may not have a specific width, so give it one to contain the Layout + $C.width( $C.width() ); + child.resizeAll(); // now resize the Layout + } + else if ($C) + $C.css( $C.data(css) ).removeData(css).removeData("layoutRole"); + // remove pane AFTER content in case there was a nested layout + if (!$P.data(d)) + $P.css( $P.data(css) ).removeData(css); + } + + // REMOVE pane resizer and toggler elements + if ($T) $T.remove(); + if ($R) $R.remove(); + + // CLEAR all pointers and state data + Instance[pane] = $Ps[pane] = $Cs[pane] = $Rs[pane] = $Ts[pane] = children[pane] = false; + s = { removed: true }; + + if (!skipResize) + resizeAll(); + } + + +/* + * ########################### + * ACTION METHODS + * ########################### + */ + +, _hidePane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , s = $P[0].style + ; + if (o.useOffscreenClose) { + if (!$P.data(_c.offscreenReset)) + $P.data(_c.offscreenReset, { left: s.left, right: s.right }); + $P.css( _c.offscreenCSS ); + } + else + $P.hide().removeData(_c.offscreenReset); + } + +, _showPane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , off = _c.offscreenCSS + , old = $P.data(_c.offscreenReset) + , s = $P[0].style + ; + $P .show() // ALWAYS show, just in case + .removeData(_c.offscreenReset); + if (o.useOffscreenClose && old) { + if (s.left == off.left) + s.left = old.left; + if (s.right == off.right) + s.right = old.right; + } + } + + + /** + * Completely 'hides' a pane, including its spacing - as if it does not exist + * The pane is not actually 'removed' from the source, so can use 'show' to un-hide it + * + * @param {string} pane The pane being hidden, ie: north, south, east, or west + * @param {boolean=} [noAnimation=false] + */ +, hide = function (evt_or_pane, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || s.isHidden) return; // pane does not exist OR is already hidden + + // onhide_start callback - will CANCEL hide if returns false + if (state.initialized && false === _runCallbacks("onhide_start", pane)) return; + + s.isSliding = false; // just in case + + // now hide the elements + if ($R) $R.hide(); // hide resizer-bar + if (!state.initialized || s.isClosed) { + s.isClosed = true; // to trigger open-animation on show() + s.isHidden = true; + s.isVisible = false; + if (!state.initialized) + _hidePane(pane); // no animation when loading page + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center"); + if (state.initialized || o.triggerEventsOnLoad) + _runCallbacks("onhide_end", pane); + } + else { + s.isHiding = true; // used by onclose + close(pane, false, noAnimation); // adjust all panes to fit + } + } + + /** + * Show a hidden pane - show as 'closed' by default unless openPane = true + * + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [openPane=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, show = function (evt_or_pane, openPane, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || !s.isHidden) return; // pane does not exist OR is not hidden + + // onshow_start callback - will CANCEL show if returns false + if (false === _runCallbacks("onshow_start", pane)) return; + + s.isSliding = false; // just in case + s.isShowing = true; // used by onopen/onclose + //s.isHidden = false; - will be set by open/close - if not cancelled + + // now show the elements + //if ($R) $R.show(); - will be shown by open/close + if (openPane === false) + close(pane, true); // true = force + else + open(pane, false, noAnimation, noAlert); // adjust all panes to fit + } + + + /** + * Toggles a pane open/closed by calling either open or close + * + * @param {string} pane The pane being toggled, ie: north, south, east, or west + * @param {boolean=} [slide=false] + */ +, toggle = function (evt_or_pane, slide) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + ; + if (evt) // called from to $R.dblclick OR triggerPaneEvent + evt.stopImmediatePropagation(); + if (s.isHidden) + show(pane); // will call 'open' after unhiding it + else if (s.isClosed) + open(pane, !!slide); + else + close(pane); + } + + + /** + * Utility method used during init or other auto-processes + * + * @param {string} pane The pane being closed + * @param {boolean=} [setHandles=false] + */ +, _closePane = function (pane, setHandles) { + var + $P = $Ps[pane] + , s = state[pane] + ; + _hidePane(pane); + s.isClosed = true; + s.isVisible = false; + // UNUSED: if (setHandles) setAsClosed(pane, true); // true = force + } + + /** + * Close the specified pane (animation optional), and resize all other panes as needed + * + * @param {string} pane The pane being closed, ie: north, south, east, or west + * @param {boolean=} [force=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [skipCallback=false] + */ +, close = function (evt_or_pane, force, noAnimation, skipCallback) { + var pane = evtPane.call(this, evt_or_pane); + // if pane has been initialized, but NOT the complete layout, close pane instantly + if (!state.initialized && $Ps[pane]) { + _closePane(pane); // INIT pane as closed + return; + } + if (!isInitialized()) return; + + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing, isHiding, wasSliding; + + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.closable && !s.isShowing && !s.isHiding) // invalid request // (!o.resizable && !o.closable) ??? + || (!force && s.isClosed && !s.isShowing) // already closed + ) return queueNext(); + + // onclose_start callback - will CANCEL hide if returns false + // SKIP if just 'showing' a hidden pane as 'closed' + var abort = !s.isShowing && false === _runCallbacks("onclose_start", pane); + + // transfer logic vars to temp vars + isShowing = s.isShowing; + isHiding = s.isHiding; + wasSliding = s.isSliding; + // now clear the logic vars (REQUIRED before aborting) + delete s.isShowing; + delete s.isHiding; + + if (abort) return queueNext(); + + doFX = !noAnimation && !s.isClosed && (o.fxName_close != "none"); + s.isMoving = true; + s.isClosed = true; + s.isVisible = false; + // update isHidden BEFORE sizing panes + if (isHiding) s.isHidden = true; + else if (isShowing) s.isHidden = false; + + if (s.isSliding) // pane is being closed, so UNBIND trigger events + bindStopSlidingEvents(pane, false); // will set isSliding=false + else // resize panes adjacent to this one + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center", false); // false = NOT skipCallback + + // if this pane has a resizer bar, move it NOW - before animation + setAsClosed(pane); + + // CLOSE THE PANE + if (doFX) { // animate the close + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.hide( o.fxName_close, o.fxSettings_close, o.fxSpeed_close, function () { + lockPaneForFX(pane, false); // undo + if (s.isClosed) close_2(); + queueNext(); + }); + } + else { // hide the pane without animation + _hidePane(pane); + close_2(); + queueNext(); + }; + }); + + // SUBROUTINE + function close_2 () { + s.isMoving = false; + bindStartSlidingEvent(pane, true); // will enable if o.slidable = true + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane ); + } + + // hide any masks shown while closing + hideMasks(); + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad)) { + // onclose callback - UNLESS just 'showing' a hidden pane as 'closed' + if (!isShowing) _runCallbacks("onclose_end", pane); + // onhide OR onshow callback + if (isShowing) _runCallbacks("onshow_end", pane); + if (isHiding) _runCallbacks("onhide_end", pane); + } + } + } + + /** + * @param {string} pane The pane just closed, ie: north, south, east, or west + */ +, setAsClosed = function (pane) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + ; + $R + .css(side, sC[inset]) // move the resizer + .removeClass( rClass+_open +" "+ rClass+_pane+_open ) + .removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + .addClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .unbind("dblclick."+ sID) + ; + // DISABLE 'resizing' when closed - do this BEFORE bindStartSlidingEvent? + if (o.resizable && $.layout.plugins.draggable) + $R + .draggable("disable") + .removeClass("ui-state-disabled") // do NOT apply disabled styling - not suitable here + .css("cursor", "default") + .attr("title","") + ; + + // if pane has a toggler button, adjust that too + if ($T) { + $T + .removeClass( tClass+_open +" "+ tClass+_pane+_open ) + .addClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .attr("title", o.togglerTip_closed) // may be blank + ; + // toggler-content - if exists + $T.children(".content-open").hide(); + $T.children(".content-closed").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, false); + + if (state.initialized) { + // resize 'length' and position togglers for adjacent panes + sizeHandles(); + } + } + + /** + * Open the specified pane (animation optional), and resize all other panes as needed + * + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [slide=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, open = function (evt_or_pane, slide, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.resizable && !o.closable && !s.isShowing) // invalid request + || (s.isVisible && !s.isSliding) // already open + ) return queueNext(); + + // pane can ALSO be unhidden by just calling show(), so handle this scenario + if (s.isHidden && !s.isShowing) { + queueNext(); // call before show() because it needs the queue free + show(pane, true); + return; + } + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else + // make sure there is enough space available to open the pane + setSizeLimits(pane, slide); + + // onopen_start callback - will CANCEL open if returns false + var cbReturn = _runCallbacks("onopen_start", pane); + + if (cbReturn === "abort") + return queueNext(); + + // update pane-state again in case options were changed in onopen_start + if (cbReturn !== "NC") // NC = "No Callback" + setSizeLimits(pane, slide); + + if (s.minSize > s.maxSize) { // INSUFFICIENT ROOM FOR PANE TO OPEN! + syncPinBtns(pane, false); // make sure pin-buttons are reset + if (!noAlert && o.noRoomToOpenTip) + alert(o.noRoomToOpenTip); + return queueNext(); // ABORT + } + + if (slide) // START Sliding - will set isSliding=true + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (s.isSliding) // PIN PANE (stop sliding) - open pane 'normally' instead + bindStopSlidingEvents(pane, false); // UNBIND trigger events - will set isSliding=false + else if (o.slidable) + bindStartSlidingEvent(pane, false); // UNBIND trigger events + + s.noRoom = false; // will be reset by makePaneFit if 'noRoom' + makePaneFit(pane); + + // transfer logic var to temp var + isShowing = s.isShowing; + // now clear the logic var + delete s.isShowing; + + doFX = !noAnimation && s.isClosed && (o.fxName_open != "none"); + s.isMoving = true; + s.isVisible = true; + s.isClosed = false; + // update isHidden BEFORE sizing panes - WHY??? Old? + if (isShowing) s.isHidden = false; + + if (doFX) { // ANIMATE + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + if (s.isSliding) masks += ","+ _c.oppositeEdge[pane]; + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.show( o.fxName_open, o.fxSettings_open, o.fxSpeed_open, function() { + lockPaneForFX(pane, false); // undo + if (s.isVisible) open_2(); // continue + queueNext(); + }); + } + else { // no animation + _showPane(pane);// just show pane and... + open_2(); // continue + queueNext(); + }; + }); + + // SUBROUTINE + function open_2 () { + s.isMoving = false; + + // cure iframe display issues + _fixIframe(pane); + + // NOTE: if isSliding, then other panes are NOT 'resized' + if (!s.isSliding) { // resize all panes adjacent to this one + hideMasks(); // remove any masks shown while opening + sizeMidPanes(_c[pane].dir=="vert" ? "center" : "", false); // false = NOT skipCallback + } + + // set classes, position handles and execute callbacks... + setAsOpen(pane); + }; + + } + + /** + * @param {string} pane The pane just opened, ie: north, south, east, or west + * @param {boolean=} [skipCallback=false] + */ +, setAsOpen = function (pane, skipCallback) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _closed = "-closed" + , _sliding= "-sliding" + ; + $R + .css(side, sC[inset] + getPaneSize(pane)) // move the resizer + .removeClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .addClass( rClass+_open +" "+ rClass+_pane+_open ) + ; + if (s.isSliding) + $R.addClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + else // in case 'was sliding' + $R.removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + + if (o.resizerDblClickToggle) + $R.bind("dblclick", toggle ); + removeHover( 0, $R ); // remove hover classes + if (o.resizable && $.layout.plugins.draggable) + $R .draggable("enable") + .css("cursor", o.resizerCursor) + .attr("title", o.resizerTip); + else if (!s.isSliding) + $R.css("cursor", "default"); // n-resize, s-resize, etc + + // if pane also has a toggler button, adjust that too + if ($T) { + $T .removeClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .addClass( tClass+_open +" "+ tClass+_pane+_open ) + .attr("title", o.togglerTip_open); // may be blank + removeHover( 0, $T ); // remove hover classes + // toggler-content - if exists + $T.children(".content-closed").hide(); + $T.children(".content-open").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, !s.isSliding); + + // update pane-state dimensions - BEFORE resizing content + $.extend(s, elDims($P)); + + if (state.initialized) { + // resize resizer & toggler sizes for all panes + sizeHandles(); + // resize content every time pane opens - to be sure + sizeContent(pane, true); // true = remeasure headers/footers, even if 'pane.isMoving' + } + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad) && $P.is(":visible")) { + // onopen callback + _runCallbacks("onopen_end", pane); + // onshow callback - TODO: should this be here? + if (s.isShowing) _runCallbacks("onshow_end", pane); + + // ALSO call onresize because layout-size *may* have changed while pane was closed + if (state.initialized) + _runCallbacks("onresize_end", pane); + } + + // TODO: Somehow sizePane("north") is being called after this point??? + } + + + /** + * slideOpen / slideClose / slideToggle + * + * Pass-though methods for sliding + */ +, slideOpen = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + , delay = options[pane].slideDelay_open + ; + // prevent event from triggering on NEW resizer binding created below + if (evt) evt.stopImmediatePropagation(); + + if (s.isClosed && evt && evt.type === "mouseenter" && delay > 0) + // trigger = mouseenter - use a delay + timer.set(pane+"_openSlider", open_NOW, delay); + else + open_NOW(); // will unbind events if is already open + + /** + * SUBROUTINE for timed open + */ + function open_NOW () { + if (!s.isClosed) // skip if no longer closed! + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (!s.isMoving) + open(pane, true); // true = slide - open() will handle binding + }; + } + +, slideClose = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , delay = s.isMoving ? 1000 : 300 // MINIMUM delay - option may override + ; + if (s.isClosed || s.isResizing) + return; // skip if already closed OR in process of resizing + else if (o.slideTrigger_close === "click") + close_NOW(); // close immediately onClick + else if (o.preventQuickSlideClose && s.isMoving) + return; // handle Chrome quick-close on slide-open + else if (o.preventPrematureSlideClose && evt && $.layout.isMouseOverElem(evt, $Ps[pane])) + return; // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + else if (evt) // trigger = mouseleave - use a delay + // 1 sec delay if 'opening', else .3 sec + timer.set(pane+"_closeSlider", close_NOW, max(o.slideDelay_close, delay)); + else // called programically + close_NOW(); + + /** + * SUBROUTINE for timed close + */ + function close_NOW () { + if (s.isClosed) // skip 'close' if already closed! + bindStopSlidingEvents(pane, false); // UNBIND trigger events - TODO: is this needed here? + else if (!s.isMoving) + close(pane); // close will handle unbinding + }; + } + + /** + * @param {string} pane The pane being opened, ie: north, south, east, or west + */ +, slideToggle = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + toggle(pane, true); + } + + + /** + * Must set left/top on East/South panes so animation will work properly + * + * @param {string} pane The pane to lock, 'east' or 'south' - any other is ignored! + * @param {boolean} doLock true = set left/top, false = remove + */ +, lockPaneForFX = function (pane, doLock) { + var $P = $Ps[pane] + , s = state[pane] + , o = options[pane] + , z = options.zIndexes + ; + if (doLock) { + $P.css({ zIndex: z.pane_animate }); // overlay all elements during animation + if (pane=="south") + $P.css({ top: sC.insetTop + sC.innerHeight - $P.outerHeight() }); + else if (pane=="east") + $P.css({ left: sC.insetLeft + sC.innerWidth - $P.outerWidth() }); + } + else { // animation DONE - RESET CSS + // TODO: see if this can be deleted. It causes a quick-close when sliding in Chrome + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + if (pane=="south") + $P.css({ top: "auto" }); + // if pane is positioned 'off-screen', then DO NOT screw with it! + else if (pane=="east" && !$P.css("left").match(/\-99999/)) + $P.css({ left: "auto" }); + // fix anti-aliasing in IE - only needed for animations that change opacity + if (browser.msie && o.fxOpacityFix && o.fxName_open != "slide" && $P.css("filter") && $P.css("opacity") == 1) + $P[0].style.removeAttribute('filter'); + } + } + + + /** + * Toggle sliding functionality of a specific pane on/off by adding removing 'slide open' trigger + * + * @see open(), close() + * @param {string} pane The pane to enable/disable, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable sliding? + */ +, bindStartSlidingEvent = function (pane, enable) { + var o = options[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , evtName = o.slideTrigger_open.toLowerCase() + ; + if (!$R || (enable && !o.slidable)) return; + + // make sure we have a valid event + if (evtName.match(/mouseover/)) + evtName = o.slideTrigger_open = "mouseenter"; + else if (!evtName.match(/click|dblclick|mouseenter/)) + evtName = o.slideTrigger_open = "click"; + + $R + // add or remove event + [enable ? "bind" : "unbind"](evtName +'.'+ sID, slideOpen) + // set the appropriate cursor & title/tip + .css("cursor", enable ? o.sliderCursor : "default") + .attr("title", enable ? o.sliderTip : "") + ; + } + + /** + * Add or remove 'mouseleave' events to 'slide close' when pane is 'sliding' open or closed + * Also increases zIndex when pane is sliding open + * See bindStartSlidingEvent for code to control 'slide open' + * + * @see slideOpen(), slideClose() + * @param {string} pane The pane to process, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable events? + */ +, bindStopSlidingEvents = function (pane, enable) { + var o = options[pane] + , s = state[pane] + , c = _c[pane] + , z = options.zIndexes + , evtName = o.slideTrigger_close.toLowerCase() + , action = (enable ? "bind" : "unbind") + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + s.isSliding = enable; // logic + timer.clear(pane+"_closeSlider"); // just in case + + // remove 'slideOpen' event from resizer + // ALSO will raise the zIndex of the pane & resizer + if (enable) bindStartSlidingEvent(pane, false); + + // RE/SET zIndex - increases when pane is sliding-open, resets to normal when not + $P.css("zIndex", enable ? z.pane_sliding : z.pane_normal); + $R.css("zIndex", enable ? z.pane_sliding+2 : z.resizer_normal); // NOTE: mask = pane_sliding+1 + + // make sure we have a valid event + if (!evtName.match(/click|mouseleave/)) + evtName = o.slideTrigger_close = "mouseleave"; // also catches 'mouseout' + + // add/remove slide triggers + $R[action](evtName, slideClose); // base event on resize + // need extra events for mouseleave + if (evtName === "mouseleave") { + // also close on pane.mouseleave + $P[action]("mouseleave."+ sID, slideClose); + // cancel timer when mouse moves between 'pane' and 'resizer' + $R[action]("mouseenter."+ sID, cancelMouseOut); + $P[action]("mouseenter."+ sID, cancelMouseOut); + } + + if (!enable) + timer.clear(pane+"_closeSlider"); + else if (evtName === "click" && !o.resizable) { + // IF pane is not resizable (which already has a cursor and tip) + // then set the a cursor & title/tip on resizer when sliding + $R.css("cursor", enable ? o.sliderCursor : "default"); + $R.attr("title", enable ? o.togglerTip_open : ""); // use Toggler-tip, eg: "Close Pane" + } + + // SUBROUTINE for mouseleave timer clearing + function cancelMouseOut (evt) { + timer.clear(pane+"_closeSlider"); + evt.stopPropagation(); + } + } + + + /** + * Hides/closes a pane if there is insufficient room - reverses this when there is room again + * MUST have already called setSizeLimits() before calling this method + * + * @param {string} pane The pane being resized + * @param {boolean=} [isOpening=false] Called from onOpen? + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, makePaneFit = function (pane, isOpening, skipCallback, force) { + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isSidePane = c.dir==="vert" + , hasRoom = false + ; + // special handling for center & east/west panes + if (pane === "center" || (isSidePane && s.noVerticalRoom)) { + // see if there is enough room to display the pane + // ERROR: hasRoom = s.minHeight <= s.maxHeight && (isSidePane || s.minWidth <= s.maxWidth); + hasRoom = (s.maxHeight >= 0); + if (hasRoom && s.noRoom) { // previously hidden due to noRoom, so show now + _showPane(pane); + if ($R) $R.show(); + s.isVisible = true; + s.noRoom = false; + if (isSidePane) s.noVerticalRoom = false; + _fixIframe(pane); + } + else if (!hasRoom && !s.noRoom) { // not currently hidden, so hide now + _hidePane(pane); + if ($R) $R.hide(); + s.isVisible = false; + s.noRoom = true; + } + } + + // see if there is enough room to fit the border-pane + if (pane === "center") { + // ignore center in this block + } + else if (s.minSize <= s.maxSize) { // pane CAN fit + hasRoom = true; + if (s.size > s.maxSize) // pane is too big - shrink it + sizePane(pane, s.maxSize, skipCallback, force, true); // true = noAnimation + else if (s.size < s.minSize) // pane is too small - enlarge it + sizePane(pane, s.minSize, skipCallback, force, true); + // need s.isVisible because new pseudoClose method keeps pane visible, but off-screen + else if ($R && s.isVisible && $P.is(":visible")) { + // make sure resizer-bar is positioned correctly + // handles situation where nested layout was 'hidden' when initialized + var side = c.side.toLowerCase() + , pos = s.size + sC["inset"+ c.side] + ; + if ($.layout.cssNum($R, side) != pos) $R.css( side, pos ); + } + + // if was previously hidden due to noRoom, then RESET because NOW there is room + if (s.noRoom) { + // s.noRoom state will be set by open or show + if (s.wasOpen && o.closable) { + if (o.autoReopen) + open(pane, false, true, true); // true = noAnimation, true = noAlert + else // leave the pane closed, so just update state + s.noRoom = false; + } + else + show(pane, s.wasOpen, true, true); // true = noAnimation, true = noAlert + } + } + else { // !hasRoom - pane CANNOT fit + if (!s.noRoom) { // pane not set as noRoom yet, so hide or close it now... + s.noRoom = true; // update state + s.wasOpen = !s.isClosed && !s.isSliding; + if (s.isClosed){} // SKIP + else if (o.closable) // 'close' if possible + close(pane, true, true); // true = force, true = noAnimation + else // 'hide' pane if cannot just be closed + hide(pane, true); // true = noAnimation + } + } + } + + + /** + * sizePane / manualSizePane + * sizePane is called only by internal methods whenever a pane needs to be resized + * manualSizePane is an exposed flow-through method allowing extra code when pane is 'manually resized' + * + * @param {string} pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [noAnimation=false] + */ +, manualSizePane = function (evt_or_pane, size, skipCallback, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + // if resizing callbacks have been delayed and resizing is now DONE, force resizing to complete... + , forceResize = o.livePaneResizing && !s.isResizing + ; + // ANY call to manualSizePane disables autoResize - ie, percentage sizing + o.autoResize = false; + // flow-through... + sizePane(pane, size, skipCallback, forceResize, noAnimation); // will animate resize if option enabled + } + + /** + * @param {string} pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] Force resizing even if does not seem necessary + * @param {boolean=} [noAnimation=false] + */ +, sizePane = function (evt_or_pane, size, skipCallback, force, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) // probably NEVER called from event? + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , side = _c[pane].side.toLowerCase() + , dimName = _c[pane].sizeType.toLowerCase() + , inset = "inset"+ _c[pane].side + , skipResizeWhileDragging = s.isResizing && !o.triggerEventsDuringLiveResize + , doFX = noAnimation !== true && o.animatePaneSizing + , oldSize, newSize + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + // calculate 'current' min/max sizes + setSizeLimits(pane); // update pane-state + oldSize = s.size; + size = _parseSize(pane, size); // handle percentages & auto + size = max(size, _parseSize(pane, o.minSize)); + size = min(size, s.maxSize); + if (size < s.minSize) { // not enough room for pane! + queueNext(); // call before makePaneFit() because it needs the queue free + makePaneFit(pane, false, skipCallback); // will hide or close pane + return; + } + + // IF newSize is same as oldSize, then nothing to do - abort + if (!force && size === oldSize) + return queueNext(); + + // onresize_start callback CANNOT cancel resizing because this would break the layout! + if (!skipCallback && state.initialized && s.isVisible) + _runCallbacks("onresize_start", pane); + + // resize the pane, and make sure its visible + newSize = cssSize(pane, size); + + if (doFX && $P.is(":visible")) { // ANIMATE + var fx = $.layout.effects.size[pane] || $.layout.effects.size.all + , easing = o.fxSettings_size.easing || fx.easing + , z = options.zIndexes + , props = {}; + props[ dimName ] = newSize +'px'; + s.isMoving = true; + // overlay all elements during animation + $P.css({ zIndex: z.pane_animate }) + .show().animate( props, o.fxSpeed_size, easing, function(){ + // reset zIndex after animation + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + s.isMoving = false; + sizePane_2(); // continue + queueNext(); + }); + } + else { // no animation + $P.css( dimName, newSize ); // resize pane + // if pane is visible, then + if ($P.is(":visible")) + sizePane_2(); // continue + else { + // pane is NOT VISIBLE, so just update state data... + // when pane is *next opened*, it will have the new size + s.size = size; // update state.size + $.extend(s, elDims($P)); // update state dimensions + } + queueNext(); + }; + + }); + + // SUBROUTINE + function sizePane_2 () { + /* Panes are sometimes not sized precisely in some browsers!? + * This code will resize the pane up to 3 times to nudge the pane to the correct size + */ + var actual = dimName==='width' ? $P.outerWidth() : $P.outerHeight() + , tries = [{ + pane: pane + , count: 1 + , target: size + , actual: actual + , correct: (size === actual) + , attempt: size + , cssSize: newSize + }] + , lastTry = tries[0] + , msg = 'Inaccurate size after resizing the '+ pane +'-pane.' + ; + while ( !lastTry.correct ) { + thisTry = { pane: pane, count: lastTry.count+1, target: size }; + + if (lastTry.actual > size) + thisTry.attempt = max(0, lastTry.attempt - (lastTry.actual - size)); + else // lastTry.actual < size + thisTry.attempt = max(0, lastTry.attempt + (size - lastTry.actual)); + + thisTry.cssSize = cssSize(pane, thisTry.attempt); + $P.css( dimName, thisTry.cssSize ); + + thisTry.actual = dimName=='width' ? $P.outerWidth() : $P.outerHeight(); + thisTry.correct = (size === thisTry.actual); + + // if showDebugMessages, log attempts and alert the user of this *non-fatal error* + if (options.showDebugMessages) { + if ( tries.length === 1) { + _log(msg, false); + _log(lastTry, false); + } + _log(thisTry, false); + } + + // after 4 tries, is as close as its gonna get! + if (tries.length > 3) break; + + tries.push( thisTry ); + lastTry = tries[ tries.length - 1 ]; + } + // END TESTING CODE + + // update pane-state dimensions + s.size = size; + $.extend(s, elDims($P)); + + if (s.isVisible && $P.is(":visible")) { + // reposition the resizer-bar + if ($R) $R.css( side, size + sC[inset] ); + // resize the content-div + sizeContent(pane); + } + + if (!skipCallback && !skipResizeWhileDragging && state.initialized && s.isVisible) + _runCallbacks("onresize_end", pane); + + // resize all the adjacent panes, and adjust their toggler buttons + // when skipCallback passed, it means the controlling method will handle 'other panes' + if (!skipCallback) { + // also no callback if live-resize is in progress and NOT triggerEventsDuringLiveResize + if (!s.isSliding) sizeMidPanes(_c[pane].dir=="horz" ? "" : "center", skipResizeWhileDragging, force); + sizeHandles(); + } + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (size < oldSize && state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane, false, skipCallback ); + } + + // DEBUG - ALERT user/developer so they know there was a sizing problem + if (options.showDebugMessages && tries.length > 1) + _log(msg +'\nSee the Error Console for details.', true); + } + } + + /** + * @see initPanes(), sizePane(), resizeAll(), open(), close(), hide() + * @param {string} panes The pane(s) being resized, comma-delmited string + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, sizeMidPanes = function (panes, skipCallback, force) { + panes = (panes ? panes : "east,west,center").split(","); + + $.each(panes, function (i, pane) { + if (!$Ps[pane]) return; // NO PANE - skip + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isCenter= (pane=="center") + , hasRoom = true + , CSS = {} + , newCenter = calcNewCenterPaneDims() + ; + // update pane-state dimensions + $.extend(s, elDims($P)); + + if (pane === "center") { + if (!force && s.isVisible && newCenter.width === s.outerWidth && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // set state for makePaneFit() logic + $.extend(s, cssMinDims(pane), { + maxWidth: newCenter.width + , maxHeight: newCenter.height + }); + CSS = newCenter; + // convert OUTER width/height to CSS width/height + CSS.width = cssW($P, CSS.width); + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, CSS.height); + hasRoom = CSS.width >= 0 && CSS.height >= 0; // height >= 0 = ALWAYS TRUE NOW + // during layout init, try to shrink east/west panes to make room for center + if (!state.initialized && o.minWidth > s.outerWidth) { + var + reqPx = o.minWidth - s.outerWidth + , minE = options.east.minSize || 0 + , minW = options.west.minSize || 0 + , sizeE = state.east.size + , sizeW = state.west.size + , newE = sizeE + , newW = sizeW + ; + if (reqPx > 0 && state.east.isVisible && sizeE > minE) { + newE = max( sizeE-minE, sizeE-reqPx ); + reqPx -= sizeE-newE; + } + if (reqPx > 0 && state.west.isVisible && sizeW > minW) { + newW = max( sizeW-minW, sizeW-reqPx ); + reqPx -= sizeW-newW; + } + // IF we found enough extra space, then resize the border panes as calculated + if (reqPx === 0) { + if (sizeE != minE) + sizePane('east', newE, true, force, true); // true = skipCallback/noAnimation - initPanes will handle when done + if (sizeW != minW) + sizePane('west', newW, true, force, true); + // now start over! + sizeMidPanes('center', skipCallback, force); + return; // abort this loop + } + } + } + else { // for east and west, set only the height, which is same as center height + // set state.min/maxWidth/Height for makePaneFit() logic + if (s.isVisible && !s.noVerticalRoom) + $.extend(s, elDims($P), cssMinDims(pane)) + if (!force && !s.noVerticalRoom && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // east/west have same top, bottom & height as center + CSS.top = newCenter.top; + CSS.bottom = newCenter.bottom; + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, newCenter.height); + s.maxHeight = CSS.height; + hasRoom = (s.maxHeight >= 0); // ALWAYS TRUE NOW + if (!hasRoom) s.noVerticalRoom = true; // makePaneFit() logic + } + + if (hasRoom) { + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_start", pane); + + $P.css(CSS); // apply the CSS to pane + sizeHandles(pane); // also update resizer length + if (s.noRoom && !s.isClosed && !s.isHidden) + makePaneFit(pane); // will re-open/show auto-closed/hidden pane + if (s.isVisible) { + $.extend(s, elDims($P)); // update pane dimensions + if (state.initialized) sizeContent(pane); // also resize the contents, if exists + } + } + else if (!s.noRoom && s.isVisible) // no room for pane + makePaneFit(pane); // will hide or close pane + + if (!s.isVisible) + return true; // DONE - next pane + + /* + * Extra CSS for IE6 or IE7 in Quirks-mode - add 'width' to NORTH/SOUTH panes + * Normally these panes have only 'left' & 'right' positions so pane auto-sizes + * ALSO required when pane is an IFRAME because will NOT default to 'full width' + */ + if (pane === "center") { // finished processing midPanes + var b = $.layout.browser; + var fix = b.isIE6 || (b.msie && !$.support.boxModel); + if ($Ps.north && (fix || state.north.tagName=="IFRAME")) + $Ps.north.css("width", cssW($Ps.north, sC.innerWidth)); + if ($Ps.south && (fix || state.south.tagName=="IFRAME")) + $Ps.south.css("width", cssW($Ps.south, sC.innerWidth)); + } + + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_end", pane); + }); + } + + + /** + * @see window.onresize(), callbacks or custom code + */ +, resizeAll = function () { + if (!state.initialized) { + _initLayoutElements(); + return; // no need to resize since we just initialized! + } + var oldW = sC.innerWidth + , oldH = sC.innerHeight + ; + // cannot size layout when 'container' is hidden or collapsed + if (!$N.is(":visible:") ) return; + $.extend( state.container, elDims( $N ) ); // UPDATE container dimensions + if (!sC.outerHeight) return; + + // onresizeall_start will CANCEL resizing if returns false + // state.container has already been set, so user can access this info for calcuations + if (false === _runCallbacks("onresizeall_start")) return false; + + var // see if container is now 'smaller' than before + shrunkH = (sC.innerHeight < oldH) + , shrunkW = (sC.innerWidth < oldW) + , $P, o, s, dir + ; + // NOTE special order for sizing: S-N-E-W + $.each(["south","north","east","west"], function (i, pane) { + if (!$Ps[pane]) return; // no pane - SKIP + s = state[pane]; + o = options[pane]; + dir = _c[pane].dir; + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else { + setSizeLimits(pane); + makePaneFit(pane, false, true, true); // true=skipCallback/forceResize + } + }); + + sizeMidPanes("", true, true); // true=skipCallback, true=forceResize + sizeHandles(); // reposition the toggler elements + + // trigger all individual pane callbacks AFTER layout has finished resizing + o = options; // reuse alias + $.each(_c.allPanes, function (i, pane) { + $P = $Ps[pane]; + if (!$P) return; // SKIP + if (state[pane].isVisible) // undefined for non-existent panes + _runCallbacks("onresize_end", pane); // callback - if exists + }); + + _runCallbacks("onresizeall_end"); + //_triggerLayoutEvent(pane, 'resizeall'); + } + + /** + * Whenever a pane resizes or opens that has a nested layout, trigger resizeAll + * + * @param {string} pane The pane just resized or opened + */ +, resizeChildLayout = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + if (!options[pane].resizeChildLayout) return; + var $P = $Ps[pane] + , $C = $Cs[pane] + , d = "layout" + , P = Instance[pane] + , L = children[pane] + ; + // user may have manually set EITHER instance pointer, so handle that + if (P.child && !L) { + // have to reverse the pointers! + var el = P.child.container; + L = children[pane] = (el ? el.data(d) : 0) || null; // set pointer _directly_ to layout instance + } + + // if a layout-pointer exists, see if child has been destroyed + if (L && L.destroyed) + L = children[pane] = null; // clear child pointers + // no child layout pointer is set - see if there is a child layout NOW + if (!L) L = children[pane] = $P.data(d) || ($C ? $C.data(d) : 0) || null; // set/update child pointers + + // ALWAYS refresh the pane.child alias + P.child = children[pane]; + + if (L) L.resizeAll(); + } + + + /** + * IF pane has a content-div, then resize all elements inside pane to fit pane-height + * + * @param {string=} [panes=""] The pane(s) being resized + * @param {boolean=} [remeasure=false] Should the content (header/footer) be remeasured? + */ +, sizeContent = function (evt_or_panes, remeasure) { + if (!isInitialized()) return; + + var panes = evtPane.call(this, evt_or_panes); + panes = panes ? panes.split(",") : _c.allPanes; + + $.each(panes, function (idx, pane) { + var + $P = $Ps[pane] + , $C = $Cs[pane] + , o = options[pane] + , s = state[pane] + , m = s.content // m = measurements + ; + if (!$P || !$C || !$P.is(":visible")) return true; // NOT VISIBLE - skip + + // if content-element was REMOVED, update OR remove the pointer + if (!$C.length) { + initContent(pane, false); // false = do NOT sizeContent() - already there! + if (!$C) return; // no replacement element found - pointer have been removed + } + + // onsizecontent_start will CANCEL resizing if returns false + if (false === _runCallbacks("onsizecontent_start", pane)) return; + + // skip re-measuring offsets if live-resizing + if ((!s.isMoving && !s.isResizing) || o.liveContentResizing || remeasure || m.top == undefined) { + _measure(); + // if any footers are below pane-bottom, they may not measure correctly, + // so allow pane overflow and re-measure + if (m.hiddenFooters > 0 && $P.css("overflow") === "hidden") { + $P.css("overflow", "visible"); + _measure(); // remeasure while overflowing + $P.css("overflow", "hidden"); + } + } + // NOTE: spaceAbove/Below *includes* the pane paddingTop/Bottom, but not pane.borders + var newH = s.innerHeight - (m.spaceAbove - s.css.paddingTop) - (m.spaceBelow - s.css.paddingBottom); + + if (!$C.is(":visible") || m.height != newH) { + // size the Content element to fit new pane-size - will autoHide if not enough room + setOuterHeight($C, newH, true); // true=autoHide + m.height = newH; // save new height + }; + + if (state.initialized) + _runCallbacks("onsizecontent_end", pane); + + function _below ($E) { + return max(s.css.paddingBottom, (parseInt($E.css("marginBottom"), 10) || 0)); + }; + + function _measure () { + var + ignore = options[pane].contentIgnoreSelector + , $Fs = $C.nextAll().not(ignore || ':lt(0)') // not :lt(0) = ALL + , $Fs_vis = $Fs.filter(':visible') + , $F = $Fs_vis.filter(':last') + ; + m = { + top: $C[0].offsetTop + , height: $C.outerHeight() + , numFooters: $Fs.length + , hiddenFooters: $Fs.length - $Fs_vis.length + , spaceBelow: 0 // correct if no content footer ($E) + } + m.spaceAbove = m.top; // just for state - not used in calc + m.bottom = m.top + m.height; + if ($F.length) + //spaceBelow = (LastFooter.top + LastFooter.height) [footerBottom] - Content.bottom + max(LastFooter.marginBottom, pane.paddingBotom) + m.spaceBelow = ($F[0].offsetTop + $F.outerHeight()) - m.bottom + _below($F); + else // no footer - check marginBottom on Content element itself + m.spaceBelow = _below($C); + }; + }); + } + + + /** + * Called every time a pane is opened, closed, or resized to slide the togglers to 'center' and adjust their length if necessary + * + * @see initHandles(), open(), close(), resizeAll() + * @param {string=} [panes=""] The pane(s) being resized + */ +, sizeHandles = function (evt_or_panes) { + var panes = evtPane.call(this, evt_or_panes) + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (i, pane) { + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , $TC + ; + if (!$P || !$R) return; + + var + dir = _c[pane].dir + , _state = (s.isClosed ? "_closed" : "_open") + , spacing = o["spacing"+ _state] + , togAlign = o["togglerAlign"+ _state] + , togLen = o["togglerLength"+ _state] + , paneLen + , left + , offset + , CSS = {} + ; + + if (spacing === 0) { + $R.hide(); + return; + } + else if (!s.noRoom && !s.isHidden) // skip if resizer was hidden for any reason + $R.show(); // in case was previously hidden + + // Resizer Bar is ALWAYS same width/height of pane it is attached to + if (dir === "horz") { // north/south + //paneLen = $P.outerWidth(); // s.outerWidth || + paneLen = sC.innerWidth; // handle offscreen-panes + s.resizerLength = paneLen; + left = $.layout.cssNum($P, "left") + $R.css({ + width: cssW($R, paneLen) // account for borders & padding + , height: cssH($R, spacing) // ditto + , left: left > -9999 ? left : sC.insetLeft // handle offscreen-panes + }); + } + else { // east/west + paneLen = $P.outerHeight(); // s.outerHeight || + s.resizerLength = paneLen; + $R.css({ + height: cssH($R, paneLen) // account for borders & padding + , width: cssW($R, spacing) // ditto + , top: sC.insetTop + getPaneSize("north", true) // TODO: what if no North pane? + //, top: $.layout.cssNum($Ps["center"], "top") + }); + } + + // remove hover classes + removeHover( o, $R ); + + if ($T) { + if (togLen === 0 || (s.isSliding && o.hideTogglerOnSlide)) { + $T.hide(); // always HIDE the toggler when 'sliding' + return; + } + else + $T.show(); // in case was previously hidden + + if (!(togLen > 0) || togLen === "100%" || togLen > paneLen) { + togLen = paneLen; + offset = 0; + } + else { // calculate 'offset' based on options.PANE.togglerAlign_open/closed + if (isStr(togAlign)) { + switch (togAlign) { + case "top": + case "left": offset = 0; + break; + case "bottom": + case "right": offset = paneLen - togLen; + break; + case "middle": + case "center": + default: offset = round((paneLen - togLen) / 2); // 'default' catches typos + } + } + else { // togAlign = number + var x = parseInt(togAlign, 10); // + if (togAlign >= 0) offset = x; + else offset = paneLen - togLen + x; // NOTE: x is negative! + } + } + + if (dir === "horz") { // north/south + var width = cssW($T, togLen); + $T.css({ + width: width // account for borders & padding + , height: cssH($T, spacing) // ditto + , left: offset // TODO: VERIFY that toggler positions correctly for ALL values + , top: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginLeft", round((width-$TC.outerWidth())/2)); // could be negative + }); + } + else { // east/west + var height = cssH($T, togLen); + $T.css({ + height: height // account for borders & padding + , width: cssW($T, spacing) // ditto + , top: offset // POSITION the toggler + , left: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginTop", round((height-$TC.outerHeight())/2)); // could be negative + }); + } + + // remove ALL hover classes + removeHover( 0, $T ); + } + + // DONE measuring and sizing this resizer/toggler, so can be 'hidden' now + if (!state.initialized && (o.initHidden || s.noRoom)) { + $R.hide(); + if ($T) $T.hide(); + } + }); + } + + + /** + * @param {string} pane + */ +, enableClosable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + , o = options[pane] + ; + if (!$T) return; + o.closable = true; + $T .bind("click."+ sID, function(evt){ evt.stopPropagation(); toggle(pane); }) + .css("visibility", "visible") + .css("cursor", "pointer") + .attr("title", state[pane].isClosed ? o.togglerTip_closed : o.togglerTip_open) // may be blank + .show(); + } + /** + * @param {string} pane + * @param {boolean=} [hide=false] + */ +, disableClosable = function (evt_or_pane, hide) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + ; + if (!$T) return; + options[pane].closable = false; + // is closable is disable, then pane MUST be open! + if (state[pane].isClosed) open(pane, false, true); + $T .unbind("."+ sID) + .css("visibility", hide ? "hidden" : "visible") // instead of hide(), which creates logic issues + .css("cursor", "default") + .attr("title", ""); + } + + + /** + * @param {string} pane + */ +, enableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].slidable = true; + if (s.isClosed) + bindStartSlidingEvent(pane, true); + } + /** + * @param {string} pane + */ +, disableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R) return; + options[pane].slidable = false; + if (state[pane].isSliding) + close(pane, false, true); + else { + bindStartSlidingEvent(pane, false); + $R .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + } + + + /** + * @param {string} pane + */ +, enableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + , o = options[pane] + ; + if (!$R || !$R.data('draggable')) return; + o.resizable = true; + $R.draggable("enable"); + if (!state[pane].isClosed) + $R .css("cursor", o.resizerCursor) + .attr("title", o.resizerTip); + } + /** + * @param {string} pane + */ +, disableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].resizable = false; + $R .draggable("disable") + .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + + + /** + * Move a pane from source-side (eg, west) to target-side (eg, east) + * If pane exists on target-side, move that to source-side, ie, 'swap' the panes + * + * @param {string} pane1 The pane/edge being swapped + * @param {string} pane2 ditto + */ +, swapPanes = function (evt_or_pane1, pane2) { + if (!isInitialized()) return; + var pane1 = evtPane.call(this, evt_or_pane1); + // change state.edge NOW so callbacks can know where pane is headed... + state[pane1].edge = pane2; + state[pane2].edge = pane1; + // run these even if NOT state.initialized + if (false === _runCallbacks("onswap_start", pane1) + || false === _runCallbacks("onswap_start", pane2) + ) { + state[pane1].edge = pane1; // reset + state[pane2].edge = pane2; + return; + } + + var + oPane1 = copy( pane1 ) + , oPane2 = copy( pane2 ) + , sizes = {} + ; + sizes[pane1] = oPane1 ? oPane1.state.size : 0; + sizes[pane2] = oPane2 ? oPane2.state.size : 0; + + // clear pointers & state + $Ps[pane1] = false; + $Ps[pane2] = false; + state[pane1] = {}; + state[pane2] = {}; + + // ALWAYS remove the resizer & toggler elements + if ($Ts[pane1]) $Ts[pane1].remove(); + if ($Ts[pane2]) $Ts[pane2].remove(); + if ($Rs[pane1]) $Rs[pane1].remove(); + if ($Rs[pane2]) $Rs[pane2].remove(); + $Rs[pane1] = $Rs[pane2] = $Ts[pane1] = $Ts[pane2] = false; + + // transfer element pointers and data to NEW Layout keys + move( oPane1, pane2 ); + move( oPane2, pane1 ); + + // cleanup objects + oPane1 = oPane2 = sizes = null; + + // make panes 'visible' again + if ($Ps[pane1]) $Ps[pane1].css(_c.visible); + if ($Ps[pane2]) $Ps[pane2].css(_c.visible); + + // fix any size discrepancies caused by swap + resizeAll(); + + // run these even if NOT state.initialized + _runCallbacks("onswap_end", pane1); + _runCallbacks("onswap_end", pane2); + + return; + + function copy (n) { // n = pane + var + $P = $Ps[n] + , $C = $Cs[n] + ; + return !$P ? false : { + pane: n + , P: $P ? $P[0] : false + , C: $C ? $C[0] : false + , state: $.extend(true, {}, state[n]) + , options: $.extend(true, {}, options[n]) + } + }; + + function move (oPane, pane) { + if (!oPane) return; + var + P = oPane.P + , C = oPane.C + , oldPane = oPane.pane + , c = _c[pane] + , side = c.side.toLowerCase() + , inset = "inset"+ c.side + // save pane-options that should be retained + , s = $.extend({}, state[pane]) + , o = options[pane] + // RETAIN side-specific FX Settings - more below + , fx = { resizerCursor: o.resizerCursor } + , re, size, pos + ; + $.each("fxName,fxSpeed,fxSettings".split(","), function (i, k) { + fx[k +"_open"] = o[k +"_open"]; + fx[k +"_close"] = o[k +"_close"]; + fx[k +"_size"] = o[k +"_size"]; + }); + + // update object pointers and attributes + $Ps[pane] = $(P) + .data({ + layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + }) + .css(_c.hidden) + .css(c.cssReq) + ; + $Cs[pane] = C ? $(C) : false; + + // set options and state + options[pane] = $.extend({}, oPane.options, fx); + state[pane] = $.extend({}, oPane.state); + + // change classNames on the pane, eg: ui-layout-pane-east ==> ui-layout-pane-west + re = new RegExp(o.paneClass +"-"+ oldPane, "g"); + P.className = P.className.replace(re, o.paneClass +"-"+ pane); + + // ALWAYS regenerate the resizer & toggler elements + initHandles(pane); // create the required resizer & toggler + + // if moving to different orientation, then keep 'target' pane size + if (c.dir != _c[oldPane].dir) { + size = sizes[pane] || 0; + setSizeLimits(pane); // update pane-state + size = max(size, state[pane].minSize); + // use manualSizePane to disable autoResize - not useful after panes are swapped + manualSizePane(pane, size, true, true); // true/true = skipCallback/noAnimation + } + else // move the resizer here + $Rs[pane].css(side, sC[inset] + (state[pane].isVisible ? getPaneSize(pane) : 0)); + + + // ADD CLASSNAMES & SLIDE-BINDINGS + if (oPane.state.isVisible && !s.isVisible) + setAsOpen(pane, true); // true = skipCallback + else { + setAsClosed(pane); + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + // DESTROY the object + oPane = null; + }; + } + + + /** + * INTERNAL method to sync pin-buttons when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), setAsOpen(), setAsClosed() + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns = function (pane, doPin) { + if ($.layout.plugins.buttons) + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(Instance, $(selector), pane, doPin); + }); + } + +; // END var DECLARATIONS + + /** + * Capture keys when enableCursorHotkey - toggle pane if hotkey pressed + * + * @see document.keydown() + */ + function keyDown (evt) { + if (!evt) return true; + var code = evt.keyCode; + if (code < 33) return true; // ignore special keys: ENTER, TAB, etc + + var + PANE = { + 38: "north" // Up Cursor - $.ui.keyCode.UP + , 40: "south" // Down Cursor - $.ui.keyCode.DOWN + , 37: "west" // Left Cursor - $.ui.keyCode.LEFT + , 39: "east" // Right Cursor - $.ui.keyCode.RIGHT + } + , ALT = evt.altKey // no worky! + , SHIFT = evt.shiftKey + , CTRL = evt.ctrlKey + , CURSOR = (CTRL && code >= 37 && code <= 40) + , o, k, m, pane + ; + + if (CURSOR && options[PANE[code]].enableCursorHotkey) // valid cursor-hotkey + pane = PANE[code]; + else if (CTRL || SHIFT) // check to see if this matches a custom-hotkey + $.each(_c.borderPanes, function (i, p) { // loop each pane to check its hotkey + o = options[p]; + k = o.customHotkey; + m = o.customHotkeyModifier; // if missing or invalid, treated as "CTRL+SHIFT" + if ((SHIFT && m=="SHIFT") || (CTRL && m=="CTRL") || (CTRL && SHIFT)) { // Modifier matches + if (k && code === (isNaN(k) || k <= 9 ? k.toUpperCase().charCodeAt(0) : k)) { // Key matches + pane = p; + return false; // BREAK + } + } + }); + + // validate pane + if (!pane || !$Ps[pane] || !options[pane].closable || state[pane].isHidden) + return true; + + toggle(pane); + + evt.stopPropagation(); + evt.returnValue = false; // CANCEL key + return false; + }; + + +/* + * ###################################### + * UTILITY METHODS + * called externally or by initButtons + * ###################################### + */ + + /** + * Change/reset a pane overflow setting & zIndex to allow popups/drop-downs to work + * + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function allowOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + ; + + // if pane is already raised, then reset it before doing it again! + // this would happen if allowOverflow is attached to BOTH the pane and an element + if (s.cssSaved) + resetOverflow(pane); // reset previous CSS before continuing + + // if pane is raised by sliding or resizing, or its closed, then abort + if (s.isSliding || s.isResizing || s.isClosed) { + s.cssSaved = false; + return; + } + + var + newCSS = { zIndex: (options.zIndexes.resizer_normal + 1) } + , curCSS = {} + , of = $P.css("overflow") + , ofX = $P.css("overflowX") + , ofY = $P.css("overflowY") + ; + // determine which, if any, overflow settings need to be changed + if (of != "visible") { + curCSS.overflow = of; + newCSS.overflow = "visible"; + } + if (ofX && !ofX.match(/visible|auto/)) { + curCSS.overflowX = ofX; + newCSS.overflowX = "visible"; + } + if (ofY && !ofY.match(/visible|auto/)) { + curCSS.overflowY = ofX; + newCSS.overflowY = "visible"; + } + + // save the current overflow settings - even if blank! + s.cssSaved = curCSS; + + // apply new CSS to raise zIndex and, if necessary, make overflow 'visible' + $P.css( newCSS ); + + // make sure the zIndex of all other panes is normal + $.each(_c.allPanes, function(i, p) { + if (p != pane) resetOverflow(p); + }); + + }; + /** + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function resetOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + , CSS = s.cssSaved || {} + ; + // reset the zIndex + if (!s.isSliding && !s.isResizing) + $P.css("zIndex", options.zIndexes.pane_normal); + + // reset Overflow - if necessary + $P.css( CSS ); + + // clear var + s.cssSaved = false; + }; + +/* + * ##################### + * CREATE/RETURN LAYOUT + * ##################### + */ + + // validate that container exists + var $N = $(this).eq(0); // FIRST matching Container element + if (!$N.length) { + if (options.showErrorMessages) + _log( lang.errContainerMissing, true ); + return null; + }; + + // Users retrieve Instance of a layout with: $N.layout() OR $N.data("layout") + // return the Instance-pointer if layout has already been initialized + if ($N.data("layoutContainer") && $N.data("layout")) + return $N.data("layout"); // cached pointer + + // init global vars + var + $Ps = {} // Panes x5 - set in initPanes() + , $Cs = {} // Content x5 - set in initPanes() + , $Rs = {} // Resizers x4 - set in initHandles() + , $Ts = {} // Togglers x4 - set in initHandles() + , $Ms = $([]) // Masks - up to 2 masks per pane (IFRAME + DIV) + // aliases for code brevity + , sC = state.container // alias for easy access to 'container dimensions' + , sID = state.id // alias for unique layout ID/namespace - eg: "layout435" + ; + + // create Instance object to expose data & option Properties, and primary action Methods + var Instance = { + // layout data + options: options // property - options hash + , state: state // property - dimensions hash + // object pointers + , container: $N // property - object pointers for layout container + , panes: $Ps // property - object pointers for ALL Panes: panes.north, panes.center + , contents: $Cs // property - object pointers for ALL Content: contents.north, contents.center + , resizers: $Rs // property - object pointers for ALL Resizers, eg: resizers.north + , togglers: $Ts // property - object pointers for ALL Togglers, eg: togglers.north + // border-pane open/close + , hide: hide // method - ditto + , show: show // method - ditto + , toggle: toggle // method - pass a 'pane' ("north", "west", etc) + , open: open // method - ditto + , close: close // method - ditto + , slideOpen: slideOpen // method - ditto + , slideClose: slideClose // method - ditto + , slideToggle: slideToggle // method - ditto + // pane actions + , setSizeLimits: setSizeLimits // method - pass a 'pane' - update state min/max data + , _sizePane: sizePane // method -intended for user by plugins only! + , sizePane: manualSizePane // method - pass a 'pane' AND an 'outer-size' in pixels or percent, or 'auto' + , sizeContent: sizeContent // method - pass a 'pane' + , swapPanes: swapPanes // method - pass TWO 'panes' - will swap them + // pane element methods + , initContent: initContent // method - ditto + , addPane: addPane // method - pass a 'pane' + , removePane: removePane // method - pass a 'pane' to remove from layout, add 'true' to delete the pane-elem + , createChildLayout: createChildLayout// method - pass a 'pane' and (optional) layout-options (OVERRIDES options[pane].childOptions + // special pane option setting + , enableClosable: enableClosable // method - pass a 'pane' + , disableClosable: disableClosable // method - ditto + , enableSlidable: enableSlidable // method - ditto + , disableSlidable: disableSlidable // method - ditto + , enableResizable: enableResizable // method - ditto + , disableResizable: disableResizable// method - ditto + // utility methods for panes + , allowOverflow: allowOverflow // utility - pass calling element (this) + , resetOverflow: resetOverflow // utility - ditto + // layout control + , destroy: destroy // method - no parameters + , initPanes: isInitialized // method - no parameters + , resizeAll: resizeAll // method - no parameters + // callback triggering + , runCallbacks: _runCallbacks // method - pass evtName & pane (if a pane-event), eg: trigger("onopen", "west") + // alias collections of options, state and children - created in addPane and extended elsewhere + , hasParentLayout: false // set by initContainer() + , children: children // pointers to child-layouts, eg: Instance.children["west"] + , north: false // alias group: { name: pane, pane: $Ps[pane], options: options[pane], state: state[pane], child: children[pane] } + , south: false // ditto + , west: false // ditto + , east: false // ditto + , center: false // ditto + }; + + // create the border layout NOW + if (_create() === 'cancel') // onload_start callback returned false to CANCEL layout creation + return null; + else // true OR false -- if layout-elements did NOT init (hidden or do not exist), can auto-init later + return Instance; // return the Instance object + +} + + + + +/** + * jquery.layout.state 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * @dependancies: $.ui.cookie (above) + * + * @support: http://groups.google.com/group/jquery-ui-layout + */ +/* + * State-management options stored in options.stateManagement, which includes a .cookie hash + * Default options saves ALL KEYS for ALL PANES, ie: pane.size, pane.isClosed, pane.isHidden + * + * // STATE/COOKIE OPTIONS + * @example $(el).layout({ + stateManagement: { + enabled: true + , stateKeys: "east.size,west.size,east.isClosed,west.isClosed" + , cookie: { name: "appLayout", path: "/" } + } + }) + * @example $(el).layout({ stateManagement__enabled: true }) // enable auto-state-management using cookies + * @example $(el).layout({ stateManagement__cookie: { name: "appLayout", path: "/" } }) + * @example $(el).layout({ stateManagement__cookie__name: "appLayout", stateManagement__cookie__path: "/" }) + * + * // STATE/COOKIE METHODS + * @example myLayout.saveCookie( "west.isClosed,north.size,south.isHidden", {expires: 7} ); + * @example myLayout.loadCookie(); + * @example myLayout.deleteCookie(); + * @example var JSON = myLayout.readState(); // CURRENT Layout State + * @example var JSON = myLayout.readCookie(); // SAVED Layout State (from cookie) + * @example var JSON = myLayout.state.stateData; // LAST LOADED Layout State (cookie saved in layout.state hash) + * + * CUSTOM STATE-MANAGEMENT (eg, saved in a database) + * @example var JSON = myLayout.readState( "west.isClosed,north.size,south.isHidden" ); + * @example myLayout.loadState( JSON ); + */ + +/** + * UI COOKIE UTILITY + * + * A $.cookie OR $.ui.cookie namespace *should be standard*, but until then... + * This creates $.ui.cookie so Layout does not need the cookie.jquery.js plugin + * NOTE: This utility is REQUIRED by the layout.state plugin + * + * Cookie methods in Layout are created as part of State Management + */ +if (!$.ui) $.ui = {}; +$.ui.cookie = { + + // cookieEnabled is not in DOM specs, but DOES works in all browsers,including IE6 + acceptsCookies: !!navigator.cookieEnabled + +, read: function (name) { + var + c = document.cookie + , cs = c ? c.split(';') : [] + , pair // loop var + ; + for (var i=0, n=cs.length; i < n; i++) { + pair = $.trim(cs[i]).split('='); // name=value pair + if (pair[0] == name) // found the layout cookie + return decodeURIComponent(pair[1]); + + } + return null; + } + +, write: function (name, val, cookieOpts) { + var + params = '' + , date = '' + , clear = false + , o = cookieOpts || {} + , x = o.expires + ; + if (x && x.toUTCString) + date = x; + else if (x === null || typeof x === 'number') { + date = new Date(); + if (x > 0) + date.setDate(date.getDate() + x); + else { + date.setFullYear(1970); + clear = true; + } + } + if (date) params += ';expires='+ date.toUTCString(); + if (o.path) params += ';path='+ o.path; + if (o.domain) params += ';domain='+ o.domain; + if (o.secure) params += ';secure'; + document.cookie = name +'='+ (clear ? "" : encodeURIComponent( val )) + params; // write or clear cookie + } + +, clear: function (name) { + $.ui.cookie.write(name, '', {expires: -1}); + } + +}; +// if cookie.jquery.js is not loaded, create an alias to replicate it +// this may be useful to other plugins or code dependent on that plugin +if (!$.cookie) $.cookie = function (k, v, o) { + var C = $.ui.cookie; + if (v === null) + C.clear(k); + else if (v === undefined) + return C.read(k); + else + C.write(k, v, o); +}; + + +// tell Layout that the state plugin is available +$.layout.plugins.stateManagement = true; + +// Add State-Management options to layout.defaults +$.layout.config.optionRootKeys.push("stateManagement"); +$.layout.defaults.stateManagement = { + enabled: false // true = enable state-management, even if not using cookies +, autoSave: true // Save a state-cookie when page exits? +, autoLoad: true // Load the state-cookie when Layout inits? + // List state-data to save - must be pane-specific +, stateKeys: "north.size,south.size,east.size,west.size,"+ + "north.isClosed,south.isClosed,east.isClosed,west.isClosed,"+ + "north.isHidden,south.isHidden,east.isHidden,west.isHidden" +, cookie: { + name: "" // If not specified, will use Layout.name, else just "Layout" + , domain: "" // blank = current domain + , path: "" // blank = current page, '/' = entire website + , expires: "" // 'days' to keep cookie - leave blank for 'session cookie' + , secure: false + } +}; +// Set stateManagement as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("stateManagement"); + +/* + * State Management methods + */ +$.layout.state = { + + /** + * Get the current layout state and save it to a cookie + * + * myLayout.saveCookie( keys, cookieOpts ) + * + * @param {Object} inst + * @param {(string|Array)=} keys + * @param {Object=} opts + */ + saveCookie: function (inst, keys, cookieOpts) { + var o = inst.options + , oS = o.stateManagement + , oC = $.extend(true, {}, oS.cookie, cookieOpts || null) + , data = inst.state.stateData = inst.readState( keys || oS.stateKeys ) // read current panes-state + ; + $.ui.cookie.write( oC.name || o.name || "Layout", $.layout.state.encodeJSON(data), oC ); + return $.extend(true, {}, data); // return COPY of state.stateData data + } + + /** + * Remove the state cookie + * + * @param {Object} inst + */ +, deleteCookie: function (inst) { + var o = inst.options; + $.ui.cookie.clear( o.stateManagement.cookie.name || o.name || "Layout" ); + } + + /** + * Read & return data from the cookie - as JSON + * + * @param {Object} inst + */ +, readCookie: function (inst) { + var o = inst.options; + var c = $.ui.cookie.read( o.stateManagement.cookie.name || o.name || "Layout" ); + // convert cookie string back to a hash and return it + return c ? $.layout.state.decodeJSON(c) : {}; + } + + /** + * Get data from the cookie and USE IT to loadState + * + * @param {Object} inst + */ +, loadCookie: function (inst) { + var c = $.layout.state.readCookie(inst); // READ the cookie + if (c) { + inst.state.stateData = $.extend(true, {}, c); // SET state.stateData + inst.loadState(c); // LOAD the retrieved state + } + return c; + } + + /** + * Update layout options from the cookie, if one exists + * + * @param {Object} inst + * @param {Object=} stateData + * @param {boolean=} animate + */ +, loadState: function (inst, stateData, animate) { + stateData = $.layout.transformData( stateData ); // panes = default subkey + if ($.isEmptyObject( stateData )) return; + $.extend(true, inst.options, stateData); // update layout options + // if layout has already been initialized, then UPDATE layout state + if (inst.state.initialized) { + var pane, vis, o, s, h, c + , noAnimate = (animate===false) + ; + $.each($.layout.config.borderPanes, function (idx, pane) { + state = inst.state[pane]; + o = stateData[ pane ]; + if (typeof o != 'object') return; // no key, continue + s = o.size; + c = o.initClosed; + h = o.initHidden; + vis = state.isVisible; + // resize BEFORE opening + if (!vis) + inst.sizePane(pane, s, false, false); + if (h === true) inst.hide(pane, noAnimate); + else if (c === false) inst.open (pane, false, noAnimate); + else if (c === true) inst.close(pane, false, noAnimate); + else if (h === false) inst.show (pane, false, noAnimate); + // resize AFTER any other actions + if (vis) + inst.sizePane(pane, s, false, noAnimate); // animate resize if option passed + }); + }; + } + + /** + * Get the *current layout state* and return it as a hash + * + * @param {Object=} inst + * @param {(string|Array)=} keys + */ +, readState: function (inst, keys) { + var + data = {} + , alt = { isClosed: 'initClosed', isHidden: 'initHidden' } + , state = inst.state + , panes = $.layout.config.allPanes + , pair, pane, key, val + ; + if (!keys) keys = inst.options.stateManagement.stateKeys; // if called by user + if ($.isArray(keys)) keys = keys.join(","); + // convert keys to an array and change delimiters from '__' to '.' + keys = keys.replace(/__/g, ".").split(','); + // loop keys and create a data hash + for (var i=0, n=keys.length; i < n; i++) { + pair = keys[i].split("."); + pane = pair[0]; + key = pair[1]; + if ($.inArray(pane, panes) < 0) continue; // bad pane! + val = state[ pane ][ key ]; + if (val == undefined) continue; + if (key=="isClosed" && state[pane]["isSliding"]) + val = true; // if sliding, then *really* isClosed + ( data[pane] || (data[pane]={}) )[ alt[key] ? alt[key] : key ] = val; + } + return data; + } + + /** + * Stringify a JSON hash so can save in a cookie or db-field + */ +, encodeJSON: function (JSON) { + return parse(JSON); + function parse (h) { + var D=[], i=0, k, v, t; // k = key, v = value + for (k in h) { + v = h[k]; + t = typeof v; + if (t == 'string') // STRING - add quotes + v = '"'+ v +'"'; + else if (t == 'object') // SUB-KEY - recurse into it + v = parse(v); + D[i++] = '"'+ k +'":'+ v; + } + return '{'+ D.join(',') +'}'; + }; + } + + /** + * Convert stringified JSON back to a hash object + * @see $.parseJSON(), adding in jQuery 1.4.1 + */ +, decodeJSON: function (str) { + try { return $.parseJSON ? $.parseJSON(str) : window["eval"]("("+ str +")") || {}; } + catch (e) { return {}; } + } + + +, _create: function (inst) { + var _ = $.layout.state; + // ADD State-Management plugin methods to inst + $.extend( inst, { + // readCookie - update options from cookie - returns hash of cookie data + readCookie: function () { return _.readCookie(inst); } + // deleteCookie + , deleteCookie: function () { _.deleteCookie(inst); } + // saveCookie - optionally pass keys-list and cookie-options (hash) + , saveCookie: function (keys, cookieOpts) { return _.saveCookie(inst, keys, cookieOpts); } + // loadCookie - readCookie and use to loadState() - returns hash of cookie data + , loadCookie: function () { return _.loadCookie(inst); } + // loadState - pass a hash of state to use to update options + , loadState: function (stateData, animate) { _.loadState(inst, stateData, animate); } + // readState - returns hash of current layout-state + , readState: function (keys) { return _.readState(inst, keys); } + // add JSON utility methods too... + , encodeJSON: _.encodeJSON + , decodeJSON: _.decodeJSON + }); + + // init state.stateData key, even if plugin is initially disabled + inst.state.stateData = {}; + + // read and load cookie-data per options + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoLoad) // update the options from the cookie + inst.loadCookie(); + else // don't modify options - just store cookie data in state.stateData + inst.state.stateData = inst.readCookie(); + } + } + +, _unload: function (inst) { + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoSave) // save a state-cookie automatically + inst.saveCookie(); + else // don't save a cookie, but do store state-data in state.stateData key + inst.state.stateData = inst.readState(); + } + } + +}; + +// add state initialization method to Layout's onCreate array of functions +$.layout.onCreate.push( $.layout.state._create ); +$.layout.onUnload.push( $.layout.state._unload ); + + + + +/** + * jquery.layout.buttons 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * Docs: [ to come ] + * Tips: [ to come ] + */ + +// tell Layout that the state plugin is available +$.layout.plugins.buttons = true; + +// Add buttons options to layout.defaults +$.layout.defaults.autoBindCustomButtons = false; +// Specify autoBindCustomButtons as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("autoBindCustomButtons"); + +var lang = $.layout.language; + +/* + * Button methods + */ +$.layout.buttons = { + + /** + * Searches for .ui-layout-button-xxx elements and auto-binds them as layout-buttons + * + * @see _create() + * + * @param {Object} inst Layout Instance object + */ + init: function (inst) { + var pre = "ui-layout-button-" + , layout = inst.options.name || "" + , name; + $.each("toggle,open,close,pin,toggle-slide,open-slide".split(","), function (i, action) { + $.each($.layout.config.borderPanes, function (ii, pane) { + $("."+pre+action+"-"+pane).each(function(){ + // if button was previously 'bound', data.layoutName was set, but is blank if layout has no 'name' + name = $(this).data("layoutName") || $(this).attr("layoutName"); + if (name == undefined || name === layout) + inst.bindButton(this, action, pane); + }); + }); + }); + } + + /** + * Helper function to validate params received by addButton utilities + * + * Two classes are added to the element, based on the buttonClass... + * The type of button is appended to create the 2nd className: + * - ui-layout-button-pin // action btnClass + * - ui-layout-button-pin-west // action btnClass + pane + * - ui-layout-button-toggle + * - ui-layout-button-open + * - ui-layout-button-close + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * + * @return {Array.} If both params valid, the element matching 'selector' in a jQuery wrapper - otherwise returns null + */ +, get: function (inst, selector, pane, action) { + var $E = $(selector) + , o = inst.options + , err = o.showErrorMessages + ; + if (!$E.length) { // element not found + if (err) $.layout.msg(lang.errButton + lang.selector +": "+ selector, true); + } + else if ($.inArray(pane, $.layout.config.borderPanes) < 0) { // invalid 'pane' sepecified + if (err) $.layout.msg(lang.errButton + lang.pane +": "+ pane, true); + $E = $(""); // NO BUTTON + } + else { // VALID + var btn = o[pane].buttonClass +"-"+ action; + $E .addClass( btn +" "+ btn +"-"+ pane ) + .data("layoutName", o.name); // add layout identifier - even if blank! + } + return $E; + } + + + /** + * NEW syntax for binding layout-buttons - will eventually replace addToggle, addOpen, etc. + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} action + * @param {string} pane + */ +, bind: function (inst, selector, action, pane) { + var _ = $.layout.buttons; + switch (action.toLowerCase()) { + case "toggle": _.addToggle (inst, selector, pane); break; + case "open": _.addOpen (inst, selector, pane); break; + case "close": _.addClose (inst, selector, pane); break; + case "pin": _.addPin (inst, selector, pane); break; + case "toggle-slide": _.addToggle (inst, selector, pane, true); break; + case "open-slide": _.addOpen (inst, selector, pane, true); break; + } + return inst; + } + + /** + * Add a custom Toggler button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addToggle: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "toggle") + .click(function(evt){ + inst.toggle(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Open button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addOpen: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "open") + .attr("title", lang.Open) + .click(function (evt) { + inst.open(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Close button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + */ +, addClose: function (inst, selector, pane) { + $.layout.buttons.get(inst, selector, pane, "close") + .attr("title", lang.Close) + .click(function (evt) { + inst.close(pane); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Pin button for a pane + * + * Four classes are added to the element, based on the paneClass for the associated pane... + * Assuming the default paneClass and the pin is 'up', these classes are added for a west-pane pin: + * - ui-layout-pane-pin + * - ui-layout-pane-west-pin + * - ui-layout-pane-pin-up + * - ui-layout-pane-west-pin-up + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the pin is for: 'north', 'south', etc. + */ +, addPin: function (inst, selector, pane) { + var _ = $.layout.buttons + , $E = _.get(inst, selector, pane, "pin"); + if ($E.length) { + var s = inst.state[pane]; + $E.click(function (evt) { + _.setPinState(inst, $(this), pane, (s.isSliding || s.isClosed)); + if (s.isSliding || s.isClosed) inst.open( pane ); // change from sliding to open + else inst.close( pane ); // slide-closed + evt.stopPropagation(); + }); + // add up/down pin attributes and classes + _.setPinState(inst, $E, pane, (!s.isClosed && !s.isSliding)); + // add this pin to the pane data so we can 'sync it' automatically + // PANE.pins key is an array so we can store multiple pins for each pane + s.pins.push( selector ); // just save the selector string + } + return inst; + } + + /** + * Change the class of the pin button to make it look 'up' or 'down' + * + * @see addPin(), syncPins() + * + * @param {Object} inst Layout Instance object + * @param {Array.} $Pin The pin-span element in a jQuery wrapper + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin true = set the pin 'down', false = set it 'up' + */ +, setPinState: function (inst, $Pin, pane, doPin) { + var updown = $Pin.attr("pin"); + if (updown && doPin === (updown=="down")) return; // already in correct state + var + pin = inst.options[pane].buttonClass +"-pin" + , side = pin +"-"+ pane + , UP = pin +"-up "+ side +"-up" + , DN = pin +"-down "+side +"-down" + ; + $Pin + .attr("pin", doPin ? "down" : "up") // logic + .attr("title", doPin ? lang.Unpin : lang.Pin) + .removeClass( doPin ? UP : DN ) + .addClass( doPin ? DN : UP ) + ; + } + + /** + * INTERNAL function to sync 'pin buttons' when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), close() + * + * @param {Object} inst Layout Instance object + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns: function (inst, pane, doPin) { + // REAL METHOD IS _INSIDE_ LAYOUT - THIS IS HERE JUST FOR REFERENCE + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(inst, $(selector), pane, doPin); + }); + } + + +, _load: function (inst) { + var _ = $.layout.buttons; + // ADD Button methods to Layout Instance + // Note: sel = jQuery Selector string + $.extend( inst, { + bindButton: function (sel, action, pane) { return _.bind(inst, sel, action, pane); } + // DEPRECATED METHODS + , addToggleBtn: function (sel, pane, slide) { return _.addToggle(inst, sel, pane, slide); } + , addOpenBtn: function (sel, pane, slide) { return _.addOpen(inst, sel, pane, slide); } + , addCloseBtn: function (sel, pane) { return _.addClose(inst, sel, pane); } + , addPinBtn: function (sel, pane) { return _.addPin(inst, sel, pane); } + }); + + // init state array to hold pin-buttons + for (var i=0; i<4; i++) { + var pane = $.layout.config.borderPanes[i]; + inst.state[pane].pins = []; + } + + // auto-init buttons onLoad if option is enabled + if ( inst.options.autoBindCustomButtons ) + _.init(inst); + } + +, _unload: function (inst) { + // TODO: unbind all buttons??? + } + +}; + +// add initialization method to Layout's onLoad array of functions +$.layout.onLoad.push( $.layout.buttons._load ); +//$.layout.onUnload.push( $.layout.buttons._unload ); + + + +/** + * jquery.layout.browserZoom 1.0 + * $Date: 2011-12-29 08:00:00 (Thu, 29 Dec 2011) $ + * + * Copyright (c) 2012 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * @todo: Extend logic to handle other problematic zooming in browsers + * @todo: Add hotkey/mousewheel bindings to _instantly_ respond to these zoom event + */ + +// tell Layout that the plugin is available +$.layout.plugins.browserZoom = true; + +$.layout.defaults.browserZoomCheckInterval = 1000; +$.layout.optionsMap.layout.push("browserZoomCheckInterval"); + +/* + * browserZoom methods + */ +$.layout.browserZoom = { + + _init: function (inst) { + // abort if browser does not need this check + if ($.layout.browserZoom.ratio() !== false) + $.layout.browserZoom._setTimer(inst); + } + +, _setTimer: function (inst) { + // abort if layout destroyed or browser does not need this check + if (inst.destroyed) return; + var o = inst.options + , s = inst.state + // don't need check if inst has parentLayout, but check occassionally in case parent destroyed! + // MINIMUM 100ms interval, for performance + , ms = inst.hasParentLayout ? 5000 : Math.max( o.browserZoomCheckInterval, 100 ) + ; + // set the timer + setTimeout(function(){ + if (inst.destroyed || !o.resizeWithWindow) return; + var d = $.layout.browserZoom.ratio(); + if (d !== s.browserZoom) { + s.browserZoom = d; + inst.resizeAll(); + } + // set a NEW timeout + $.layout.browserZoom._setTimer(inst); + } + , ms ); + } + +, ratio: function () { + var w = window + , s = screen + , d = document + , dE = d.documentElement || d.body + , b = $.layout.browser + , v = b.version + , r, sW, cW + ; + // we can ignore all browsers that fire window.resize event onZoom + if ((b.msie && v > 8) + || !b.msie + ) return false; // don't need to track zoom + + if (s.deviceXDPI) + return calc(s.deviceXDPI, s.systemXDPI); + // everything below is just for future reference! + if (b.webkit && (r = d.body.getBoundingClientRect)) + return calc((r.left - r.right), d.body.offsetWidth); + if (b.webkit && (sW = w.outerWidth)) + return calc(sW, w.innerWidth); + if ((sW = s.width) && (cW = dE.clientWidth)) + return calc(sW, cW); + return false; // no match, so cannot - or don't need to - track zoom + + function calc (x,y) { return (parseInt(x,10) / parseInt(y,10) * 100).toFixed(); } + } + +}; +// add initialization method to Layout's onLoad array of functions +$.layout.onReady.push( $.layout.browserZoom._init ); + + + +})( jQuery ); \ No newline at end of file diff --git a/Webhelp/template/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif b/Webhelp/template/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif new file mode 100755 index 0000000000000000000000000000000000000000..085ccaecaf5fa5c34bc14cd2c2ed5cbbd8e25dcb GIT binary patch literal 1553 zcma)+TTl~c6vwlh>nb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png b/Webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png b/Webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..47acaadd737478ddb090f47f618810712163317b GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*Fsaj7L$B>N1x91EQ8x$BA993)+ za~~)OO5|O5sDCi_{N8&XlRv*c;OQ6|AR59NN?mFzWBXJVGojypu|S6~c)I$ztaD0e F0syyrGF|`x literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png b/Webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..9d149b1c61fdee2de5cb342741c243abb9058bb3 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAGVZ#9R3S1u{Kd978O6pI&z4VlotPxp?2+ z_9ElQf7546?+BK3Q+%u|q&R!~TD`8c>Nm?7lq=+T^Fw3At=o;a{QQ?&v0rW43t78u zKLhT~Z`;~2oo9{ezlW>%eD?g@v!}03FhOcY)5-`I-U~CHGCzC3{y9?4*Y0Z~JJ3=F MPgg&ebxsLQ09`{nxc~qF literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png b/Webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..014951529c315d6042e72febc310a4d2db5b4a82 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq?|lm978O6-<~(*YA_IRxoBVf zfAX@vsV!R#l$@#*eLnw)_Sv|_?i7P!ORnX)SxaXh+BPpZ!Fw~yjr&#G|Jw^YMHDhV X&EsZx`7bsSXc~j3tDnm{r-UW|&(SK+ literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png b/Webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..4443fdc1a156babad4336f004eaf5ca5dfa0f9ab GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hIh978O6-<~(*YA|4MzBvER z|7}eQtdCVXoUc2b{PaWeaIKu7gJx>{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png b/Webhelp/template/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png new file mode 100755 index 0000000000000000000000000000000000000000..81ecc362d50ef5abbc0420aacd5345822f1f6098 GIT binary patch literal 3457 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 literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png b/Webhelp/template/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..6f4bd87c041453ef037c4a9a1a698f0105d02eba GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png b/Webhelp/template/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616 GIT binary patch literal 4369 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

                  N)npz1~X%p6x{M(Gw!!H=!}lmO0Xr*8ewyH(Q+>oy`fxQkxJ zzzB$)%*xM4s_2(O>)T-QXhwP|&DZam#{O+47q|WKfz_ZL-MypRN~o{fE*I#6@eM?I zs%f-6{Lz6j7rB#U$%O$~TIT!j?|Ip1CpSmb=JA9qCY3-mQf|fVCxswPjok|VofUEP zW5^pTd5B;wRkyW%1a;nYHB$ef6Pv8^);`m0jv6p72iNJl+sVBqZugsq6cq_pyNREi z>GN!h6ZQ6`aOMr_2KI@j=XR@$aJj(2jcpY?>f=2kMV@di5W7Swj?ug10zRe}F1nR* ztMm6+T^)LJe^SzGgSxahQajq0h7#|8oMV0>D~*N}jl?9_X`ka42R4@rryDc3o(c$R?1*!1O9zleSOczw zYPS3~xbJ$~C(3+D7Zkrfjs_lneY^zv^kHmxt)aqZ!aeGABHZ`gvA&K`72z}ihI$Ht z9V&)wQy0g@R9irwbf!{uE&_J2l9jXz^Vj#=qA77*3Pd9OjrE_tKDHADd!AjFQv(ji zct-BMUt9()1Ox!dsI_h1(^F_U)_QJrx|%+y`zWWlD4=Nd?JQ=URh0*{fb1!o4tS(H z^r_T(8t1SAHf1oduG+X^*EC_kL(!QnXL6Hp);449yO&1xE>MXGqT)t10lzvALllX;;Q)RiJX$dm zlR8ep5-GdHmRm9?N#QCjNUA);vC03Gw6yds6^?c4;(MH>;O5xmQ2nGK3Dmk8i*v5t z-{jJsQq30%z}0`g7SN-yN`l-`@6rkJ|V|>18`MV zwUeH}DxWw&h+A+Dn|4|YNr&EfKS`Hz_NkeW3*sI5Rq-J&FzG=!{-K`n65#7O%^&f> z`PkqxyC_K)>781~7H${^Nj{`>XEa&OPqqQhySR5%w2{5+sEakXXHazJp6~LP2QKDx zpkvZrkDOa+A4BbqqX6ls&O)5-Q7`qkZ_?6~c-wQ9tseNtET;nhEOL^`*naKwcMX;R zbto&a;oTR0s;vjfj3wigUg)Sj)!OHQfZoJwAsWYI1A4ntz>X=W4s|y?tUk1r=>#Ct zf+?hq^>rQ3$KNboG$UhCdEmp{qAR13DK$f0ES7kAG~7q+g!jfVq`1b5+c62N^0%~o zKw91o@Wv;0EW*7fINAX3O~L-V{`;xB0q()#^HKZOlLrXVL*Dtw-$SUp8*_J{r( zW`6r`cz0yZQ#f0#*y+m64{bs7GP|2V$phf42rswJB?s@9qf;Bfc^pm-ZS#^5dkG{u zzv;l&B$NYcegSqAnjnPN1?17VUQbPummcWry((85IFB(pFQNGN{hhN$Fv?~l_fr?| z9=%dK(+;kZ(8=mwptjwC-ikBD$Z{l2++~*8wq5ynF<+PNlZI7ba5V#fg~L}kE;UH5 zJ;{P(`G{tNl&z5rUiH~e{I>GT8~9&*(J;Myx9z5P!db!F8RTII^I7c)HU=ss*bYB` zgwiIMZ_q>KEC$4lFm+Afvu6^$X1jm1rB*4H)-EIO5Rvz_p24?OkJ zovD4{-1KA6*oL?a;3qR7GZRB!cE5oAdA#M@{w+fGgsJ-lSmQ^-?8E&Q%tbmjd=@gZ z(}Mg*jsDf6Z)|7s%@9pc-tuw5W&zqUXjv2bVkC%-X?O3F72W4EsIl#1e>Mdz=X4k*_>VxCu_2?jjg16N*5fwC-36OW&;Sz}@jMn}hgJdEd pO;bST+>R{W-aENZYk%(=^(_R5N$LmL{Qc?!%+I4tt4z=_{|902Wu5>4 literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png b/Webhelp/template/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..bd2cf079add1ca236adeb509698adabbffb08acb GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png b/Webhelp/template/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..c7c53cb11904843e176e4ce1f4e7247cd90b3590 GIT binary patch literal 5355 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 t>_S@PWkKlK01oMw@pjEVpN literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/treeview/images/folder-closed.gif b/Webhelp/template/common/jquery/treeview/images/folder-closed.gif new file mode 100755 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/treeview/images/folder-closed2.gif b/Webhelp/template/common/jquery/treeview/images/folder-closed2.gif new file mode 100755 index 0000000000000000000000000000000000000000..541107888e6739a7b367ad3d208e1efa933f877d GIT binary patch literal 105 zcmZ?wbhEHb6ky4lrdiO0bk3ZcRLy6E?4f Hg~1vCyv-@{ literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/treeview/images/folder.gif b/Webhelp/template/common/jquery/treeview/images/folder.gif new file mode 100755 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/treeview/images/folder2.gif b/Webhelp/template/common/jquery/treeview/images/folder2.gif new file mode 100755 index 0000000000000000000000000000000000000000..2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18 GIT binary patch literal 106 zcmZ?wbhEHb6ky=hKW2GJ7 I#Kd3?0MGgfG1)nGEmv+vFQVlOP1ypyEg+GkNR`< z^=}p0#2C2dndnyA7hSFrBjL$0jL_o`oqW$*H7rt|$p3g(yp3XB9 zlzV5%LF}xNV^#je;YsG!=DrNSF8CSRQ_BfP@M}u2u3r?a1u@r0hWVj`+ang%OW6nL z1y16rqcf`5MlnAfhW7pSkEXdEt5Ul@@Tcf7{xkK6R8Qt_OTFcg1Olfm_Wo#%SxpN^ z2NOBMu>Dsa5*QaX-Wt4`%7yKFPcvNVb4)HgDb^h{D;*g$kDd&60EQ&q7*-0w_2Vkw;oYJ0-|b* zlR)OR6tWfWeh%Dey81=D9m=dK1KwU+ogMSpG}kxeTht4xS0JjYEOVV&N2B0S)eN*u zC$fe~m^QC(75r&IXHUPpS6in5qrK$iPg^v3>cA{%L+!ZwMiEdYipjb~qrKw5HzJ#d zV>aqr284(7*0Fp%y={uZrn8ot@eS-XK6@*FH`QaC+v!e={!5w+rnm2}%>2|T8;4!) z5NL52JQWN3#x6By>1F<$`|wVWTxfk$w=Qg0(yy21DPe&kRCfn9Dbfakq}iS^Xmara zruUMfC1ymi`!S{mj7Ve(9b}f*MjXF`TpNTWlDnl>rWUpU-Fz z1xAY}(pHDlz`q}|2btmHY_;U%pt55 zbK--1Lpy_rQ;x^RMMt|?l#}k9*tpoWSI)UhgtKVL$;leQt86$oK0Q3uz*9~~a`Us} zjS88!?(8&B_nYS+=~nV`L+XXalJ#6yI=`$qztnfJlj(_&SANso)<&&eC8~LSo#Xzd zr1EV5*}I31S_D4wURA8W&vl1+{{1}-%-n3y-W^VC6Kh0B4A1>Z)cJD{#`zIBu>8^zBEFjWX8?nR-`Wkp*?Cn=0mYtN(g_x83Ag zMshA+(TzEEV$ZHE?i75ckr4TVtHG0JrO$Enq6XbCo|$|a&v@;)39R3X0LXK z=4C5;$$F8ukhcpHt9h#|Z}G%v+dcJfT;CtQ-=9C9=lPxpf_ivHn*f&d)&O6Uk&*Fr zztuMb|2qTrN*yf#Km$1Nh5XAW09!Qxje#w!f##d3Weh^%ezb4RHMH}qgq?N>%r^k5 zhj5M29R-#U*YEa+*>{!bg)r&_S7N*KTu!yGdhlq^%Z{9zMGDQ)eI<}UJ(UMPCbY;M zvllJg5gpD6Azb)FR9y4#tw{Tec)?5bncDM@@-br;v!iS@ntF;{x>wqO9T|?VFmpzT z;fHVecYTQ=v*+Ym);btB~p|8@=<84j@I7qIs!>qhv@; z1(eJQ`*ljXoWj|YY77;~vfc-s1?J30uTyU>CwWxmC{uC3JXP^})h#WC2Q6Q>2}dh1 zcq*XfZFX&yXCIEpo4UPomP9A)+9IVF0Y6$f6g%3$872E%%Nax`KPlsmOPDqDF4zI? zSbF4BC;K+)X6keqq{Nz4?$3a;NGF@5tcsAQ*6hmgK{%TdIa$so2hB-mNa;5W-qA2- z8`bnAhoc{WUzTpKZ{$8sL5zp;dAjj7~R*T{ro+bjX zC=NX64_09Azeep!crc#emC*dA+KDTgre1ayzvDV##Y++|?88;rWvt}$q+(H`i5RPS zEHN9edot#LH?f-f_})iLD)jY-ra{u59Qq%o=a#+)lJ@>@q)xJoJ3$ zC30i;uGaC!9^jB|Q?KI`vgyUXl}gucr_J$?)rZWzc?0f_c;28VxP>?5?XTkX`=0bp zsd70NwTbl+Lav>1lvoy}l$LQQ%CUlL65(s3k4oViy0(u<&T*uQ zCTqc{qw;%cYS9$WA0?h{4yTG|#4$4Q?4#t}n@dl!P&;uQVA8R|HlpNVX)kkk%iItT z)uQMtNN@Qdt&n&xPqeC4>+&I#Wd7|GRkEO1kx3R8wSkY8rZwz`s-8aVF?GLU@t9_8 zrD|0N=Dh{cmochMTQlkO*3BnmzDcGjzt8j8R?~OmLo035Z7an1d0*CQ)_K)7BE)2Y zkgWpCHK(nPTNwA}=w{2c(4^y*&P6wk_;T$eD_^_d{#*;4N!{uklCMKTf1X{yr2bti zzumVJ_he@>5-)Z>GylmnHFyWzlGoV=;x6T{txOuWS^2w$nf~>ITa3{F$-_yqw6wR74o)-lATn!~abYe|(Jp=qK2Z~Mv#F|+M1E7Zo2t_F@i)9itD80A@ z!=JWtheLy@ro^PxX&YboiBL)Loiw)@+fZv*gz@0roa`BUbU6&+JhF}1vNN-#bFE}n2rob1X65+pkEe*DZwLSXi!o7KG!HJYnd?<+74YK9YG>B8y}v#$ z4PTdVxGU6Z+nUJb(dSpiS{vy`Ps;C})+4q3p-ZRd>!LZ`7uVifRnN>VcjoGA??Z~) zf4QCsFnrwCC;z;pV~S4jNfG7bZ7V8^pUs+QDV-;|Ys;0R%YxUttlhQM^V+hXyW%vY z%kJ#vEL=V9>`mkMHxD#(_gl~UQm~6Px4muESBs+6=T0j1o(TDw{48a0^7ef@KYw_1 zXL0vpdH;QTD!cYCUVc2rvi#n)*ZtSUmgj4Go^PGmEFVorRJZ)j%_ zamw-7xaep%i*nMP6B`%1_R2YTiEtJzIXPJ)cvZ~FO-oNtH%LA;NArSHBNL0-g*!7h zI5Bfc%Lr5)*sS5mB%)DL@W7$r;&KmbkEH?+R$gS}lPbx$a3w2{lSL*#!0U>(KPNL2 z&xC|+Yj1BaczkNE_jbLrlggqWosBMBbfmq;{2gykk-@{m9m3jiXLfA7&BMu~vg5&w zWHweQ3zvWi3yqGkNGTX3Feo-Y?`E^`czfW$fy{1BC4-0!42>_Zix{fR=zYMDdPhXj z`ycO~9UmW`n5;d0$DD-^Pt^&#vH#n%^T4ZXo3rnq+q*k-wnb^t-S3=Jbjp`_&9u5J zSDJP8ZN%21*!8k&B0k@_xGMGa-u=L=&1NA`c2;nQgv(Xm_Suc63}?(~KH;eGphZNE zJPV2D+_})00hY#ivR!s literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/treeview/images/treeview-gray-line.gif b/Webhelp/template/common/jquery/treeview/images/treeview-gray-line.gif new file mode 100755 index 0000000000000000000000000000000000000000..37600447dc002bbc0dd16e1391b711360aae2e34 GIT binary patch literal 1877 zcmeH``8OK|0LL@bF~qSc#n50?JXNI+k>{#)#go3O{g`&sTA06+?`JRv{%1VB*=kSggPTmbZ?E2@Hm10RaqGJr~M_swEK9(fuU z9bXMur@nY#Xn3Qp;v6X2AT> zA>EM+>y@m1^a49s_E1X&+bZH^!_a=e{N6Su)s&U>sDnd!~=b?JFEB#FT8 zioZMFaK52~t&52oqdWW~2MJ1ue%%?en#qCfU7u!nC|sSJi5E`}X3h8)ly{+5*|mp+ zYqNE`8MkZN-)k};oze-j%*tB&sNuZif|=0wM%!=l0sXF(V)Zg+3_ zjbW;EBEX2ytHG=$Dx2Ha{HE%5V3a1hHnd2R32m%R*9#gFWf^4tEW&~!6yIiV)*e*l zireg~b4-8KL1b9Tn<4TQc-aUN7>=bBxE!0Aep)ES$dA>bZ zlac_>GSf$}Amq|xpG2f_X<$)PU0E=BExZ&}FuYP8&bwD%fgJCOsK5%!A}jIpO{>+( zGV75wBp|A>JOyOlNY1dq-7SE-P1iq3bVQx6%Yk<{*5}84F?-+_`Yq}S#U}_=SCzX? zX`+&GsCqhDsvFh7AWWM#ck=(Rps}W(-f3)-hf$w$i>58wymeug)RAsnbE^=j9L-?f zpi-Z);Tuuyqj4L}9YcZxTIWO&p4K%*X3?0-?f4ef8jtm%XgkyEBd6Ds8uOK?%`{)>0D(Cr`A4IcZoG`&U18YKqjoYtzQo|Dt=**7zk597IbK9sJXFyhNi zwtW@gRcSW?gGKMW@kxrlG#OY-do~qJ*-V&3Js8`Y3GYwom_@$iB+g=ml}U5>1u1QR zAzAiA(jrL>&74Uwwqm}`xJ1AT;O_GsONn5#!*ULyhq;oEIkp%2g#mF(6lf@Jxhn4i zV~t87;8y4{2KZG5ao+KL=SUTJlQq*4|E@_PjJ3`!o(GG)^}?JsMpy*)mQYPCf1;Sk`8-A8at@Xm#Gb>oe(v%3b{156)aykj?nu&|IbZfh z!lZx$?iVd}BHwuNSkmco3iwy5Drr$xV-lid6PqT(u95$N>8c#Jm2RMN_SB1WJe9Oq z(x$uU@TQLQX@QVr>U~Sa;vEmbZ_QL7odp^*-BsqVXSqmf)oqYES3tl*66F0YO=#d1 rlgk$~puxAlhuJ^ZHqgioD1o1DVtQEUit~KllU0$5nh)jV0N{TCC3Zqn literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/treeview/images/treeview-gray.gif b/Webhelp/template/common/jquery/treeview/images/treeview-gray.gif new file mode 100755 index 0000000000000000000000000000000000000000..cfb8a2f0961b880d9ecc9e59f831d0c0bf9d06db GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5F}1vNN-#bFE}n2rob1X65+pkEe*DZwLSXy)sc-G6LrLE|#j%ny@ltx#{|>*k3`b zudj+f+$8$@s#fHh^zF++cYjOsT#=i)PgZ*SBbQFk<=6g7TzYe_x%fYqoR5WW_>5Nf zsIRkcJbHA@c(c>D3XzqU)=k#8J9nngIK5|{y|vw$2$RE?mT4~XtDRLEe|<_~c?_?$ zLGJZ!!S{W4%zp58Z=>w%X})`Qe0&`0sXRUALwVLJuj#KvHA1S2+ow&BYJYdfr2O^1 zna!)!@5=7^`T51=)#j2iwbhrWRX*39_q(R{^Y??#w#k`8!n#b?Ah=gT4^b_6Je!p-pqnUi6)T{Kw4)JLb3tD)cb}Z;R&ALM=NKo^J zQum3S7LQAK7iB!^v-vhdvhxz-&N&k%mqtvOXdV2 literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/treeview/images/treeview-red-line.gif b/Webhelp/template/common/jquery/treeview/images/treeview-red-line.gif new file mode 100755 index 0000000000000000000000000000000000000000..df9e749a8f1f58862588efc64988003efad01d51 GIT binary patch literal 1877 zcmeH``BxGK0LPh{$5cGF%CuRcF0W^1+Eb91Y0har@ns%QJPI-bCps}CP-u#GY96he zH{=x}8cR_?6wMSBHp}~@d8B5Ec_ztT`#0A2hwu02&*#0br`JzT&Np-c8>+j2FWJW9 z|J$$i)xiJGfXTkfHvoVFVDp9i%O?Qp3V=f6d5==7Sk4KMl>Ucik`YxtvJ<)$%#TPKR% zdeBegW3Nr-TZ$_DvX!7#=EQu`)|{{_NO4?Hnuz--`I}N3UjF&+?uwLk+=>GJd{B_Tc2OKbjN9H> z96NPSF%oo|+^NT@plDh-RsN>!ws$&N>eV+-RSK`GN-+xQlcpP|{VXMbZmGY?Sg+bE z&yqDeRb-m~Xn;($Rkc9os0lNWR0x7V&viYtFw425?`)O{#Xnxi^Z-rV%z`xuPf1K3U`ignx^9LiY{9RF`M1 z((4&CBBq9gRTxIqvdNQH4XvU-teM=&r#I{BRpE@Mf`UowW*aYDTj; zR~d}wJj7bmv%$EvhL%3@95+YnP@jZFjkyaK?LZqem&Cp}E@#J}7%>obDszfKXbSed{!N zqe%A5h1G9<<|OWgt(pyPNUi%mt_OllWQ$!DHV#9VzJogSLla83`aMi%;zcml$vXr7 zf<%YcL08HgN8s@2tufz(==0;jh0Ny@q4f1T-P5MdE9;FzHSA-Pm3Wn^KX5K-#%-h+YndE*c}A#} z97|nymmXX*xOhw~p_=<#*Rp;q1c;i_)TkyvQ;xgVtY5mTyh_&|ZEzU`%%?)%UDt;N sUpBjNE)^Df<9oQ%i{r+6SwTgJWAz*lYeQMK?>m|{T3!EviV6VoFXq=mv;Y7A literal 0 HcmV?d00001 diff --git a/Webhelp/template/common/jquery/treeview/images/treeview-red.gif b/Webhelp/template/common/jquery/treeview/images/treeview-red.gif new file mode 100755 index 0000000000000000000000000000000000000000..3bbb3a157f1568d59d6db02b55a3b3fe9a1ff7a7 GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5q9rFMYXq;dkzBCUd%AXV z7f->2WoKqf=UU0E5MF-1&C2oHA5RfQ-wyu&du5`wWCYCfT`X0jHDP7Qa?|x$vA=>= zUtbk}xJmT)RjtT1>D!lu?*5kMxgs}ppRDxuM=qV7%dh>Fxb)^;bMb#JIUft%@ENV{ zQD0}@c=YI)@n)xQ6(TDyt(&ZGckWD~aeB`@duzKh5hjN(Ez?}&S39dT{`!=}@)%xg zgWT)eg75q8nEl}G-bUHi(|q^r`1m-~Q+ayKhw`jdUejNTYJ^l3w@;fM)&A~|N%`x2 zGn-ed-<93-^Ye?#tIZ{4YO60#t9-6I?{`h@=kEuf$II8+R(@HSYaUSgyf$2+OgK}0 zZsRjUi+L5dHILtK5edt9=qI|b{eIzIMl<7PRm>?O4!tnstX#kf7!b zrS20uEgqNfF3Nb+XY*}_WalNuopUBkE{&Kl(L5+ZuF(6`HI*Fyu5b4nE$kweHiYk+ hA)Dse=Ki!azG~*body { + font-size: 16px; + font-size: 68.75%; +} Reset Base Font Size */ + /* +body { + font-family: Verdana, helvetica, arial, sans-serif; + font-size: 68.75%; + background: #fff; + color: #333; +} */ + +a img { border: none; } \ No newline at end of file diff --git a/Webhelp/template/common/jquery/treeview/jquery.treeview.min.js b/Webhelp/template/common/jquery/treeview/jquery.treeview.min.js new file mode 100755 index 0000000..e693321 --- /dev/null +++ b/Webhelp/template/common/jquery/treeview/jquery.treeview.min.js @@ -0,0 +1,16 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * kasunbg: changed the cookieid name + * + */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("

                  ").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file diff --git a/Webhelp/template/common/main.js b/Webhelp/template/common/main.js new file mode 100755 index 0000000..5957fb4 --- /dev/null +++ b/Webhelp/template/common/main.js @@ -0,0 +1,276 @@ +/** + * Miscellaneous js functions for WebHelp + * Kasun Gajasinghe, http://kasunbg.blogspot.com + * David Cramer, http://www.thingbag.net + * + */ + +//Turn ON and OFF the animations for Show/Hide Sidebar. Extend this to other anime as well if any. +var noAnimations=false; + +$(document).ready(function() { + // When you click on a link to an anchor, scroll down + // 105 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link within a page. + $('a[href*=#]').click(function() { + if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') + && location.hostname == this.hostname) { + var $target = $(this.hash); + $target = $target.length && $target + || $('[name=' + this.hash.slice(1) +']'); + if (!(this.hash == "#searchDiv" || this.hash == "#treeDiv" || this.hash == "") && $target.length) { + var targetOffset = $target.offset().top - 120; + $('html,body') + .animate({scrollTop: targetOffset}, 200); + return false; + } + } + }); + + // $("#showHideHighlight").button(); //add jquery button styling to 'Go' button + //Generate tabs in nav-pane with JQuery + $(function() { + $("#tabs").tabs({ + cookie: { + expires: 2 // store cookie for 2 days. + } + }); + }); + + //Generate the tree + $("#ulTreeDiv").attr("style", ""); + $("#tree").treeview({ + collapsed: true, + animated: "medium", + control: "#sidetreecontrol", + persist: "cookie" + }); + + //after toc fully styled, display it. Until loading, a 'loading' image will be displayed + $("#tocLoading").attr("style", "display:none;"); + // $("#ulTreeDiv").attr("style","display:block;"); + + //.searchButton is the css class applied to 'Go' button + $(function() { + $("button", ".searchButton").button(); + + $("button", ".searchButton").click(function() { + return false; + }); + }); + + //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('ui-tabs-1') === '1') { //search tab is active + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('searchForm'); + searchHighlight($.cookie('textToSearch')); + $("#showHideHighlight").css("display", "block"); + } + } + + syncToc(); //Synchronize the toc tree with the content pane, when loading the page. + //$("#doSearch").button(); //add jquery button styling to 'Go' button + + // When you click on a link to an anchor, scroll down + // 120 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link from another page. + var hash = window.location.hash; + if(hash){ + var targetOffset = $(hash).offset().top - 120; + $('html,body').animate({scrollTop: targetOffset}, 200); + return false; + } +}); + + +/** + * If an user moved to another page by clicking on a toc link, and then clicked on #searchDiv, + * search should be performed if the cookie textToSearch is not empty. + */ +function doSearch() { +//'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('searchForm'); + } +} + +/** + * Synchronize with the tableOfContents + */ +function syncToc() { + var a = document.getElementById("webhelp-currentid"); + if (a != undefined) { + //Expanding the child sections of the selected node. + var nodeClass = a.getAttribute("class"); + if (nodeClass != null && !nodeClass.match(/collapsable/)) { + a.setAttribute("class", "collapsable"); + //remove display:none; css style from
                    block in the selected node. + var ulNode = a.getElementsByTagName("ul")[0]; + if (ulNode != undefined) { + if (ulNode.hasAttribute("style")) { + ulNode.setAttribute("style", "display: block; background-color: #D8D8D8 !important;"); + } else { + var ulStyle = document.createAttribute("style"); + ulStyle.nodeValue = "display: block; background-color: #D8D8D8 !important;"; + ulNode.setAttributeNode(ulStyle); + } } + //adjust tree's + sign to - + var divNode = a.getElementsByTagName("div")[0]; + if (divNode != undefined) { + if (divNode.hasAttribute("class")) { + divNode.setAttribute("class", "hitarea collapsable-hitarea"); + } else { + var divClass = document.createAttribute("class"); + divClass.nodeValue = "hitarea collapsable-hitarea"; + divNode.setAttributeNode(divClass); + } } + //set persistence cookie when a node is auto expanded + // setCookieForExpandedNode("webhelp-currentid"); + } + var b = a.getElementsByTagName("a")[0]; + + if (b != undefined) { + //Setting the background for selected node. + var style = a.getAttribute("style", 2); + if (style != null && !style.match(/background-color: Background;/)) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else if (style != null) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else { + a.setAttribute("style", "background-color: #D8D8D8; "); + b.setAttribute("style", "color: black;"); + } + } + + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. + while (a.parentNode && a.parentNode.nodeName) { + var parentNode = a.parentNode; + var nodeName = parentNode.nodeName; + + if (nodeName.toLowerCase() == "ul") { + parentNode.setAttribute("style", "display: block;"); + } else if (nodeName.toLocaleLowerCase() == "li") { + parentNode.setAttribute("class", "collapsable"); + parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); + } + a = parentNode; +} } } +/* + function setCookieForExpandedNode(nodeName) { + var tocDiv = document.getElementById("tree"); //get table of contents Div + var divs = tocDiv.getElementsByTagName("div"); + var matchedDivNumber; + var i; + for (i = 0; i < divs.length; i++) { //1101001 + var div = divs[i]; + var liNode = div.parentNode; + } +//create a new cookie if a treeview does not exist + if ($.cookie(treeCookieId) == null || $.cookie(treeCookieId) == "") { + var branches = $("#tree").find("li");//.prepareBranches(treesettings); + var data = []; + branches.each(function(i, e) { + data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0; + }); + $.cookie(treeCookieId, data.join("")); + + } + + if (i < divs.length) { + var treeviewCookie = $.cookie(treeCookieId); + var tvCookie1 = treeviewCookie.substring(0, i); + var tvCookie2 = treeviewCookie.substring(i + 1); + var newTVCookie = tvCookie1 + "1" + tvCookie2; + $.cookie(treeCookieId, newTVCookie); + } + } */ + +/** + * Code for Show/Hide TOC + * + */ +function showHideToc() { + var showHideButton = $("#showHideButton"); + var leftNavigation = $("#sidebar"); //hide the parent div of leftnavigation, ie sidebar + var content = $("#content"); + var animeTime=75 + + if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) { + //Hide TOC + showHideButton.removeClass('pointLeft').addClass('pointRight'); + + if(noAnimations) { + leftNavigation.css("display", "none"); + content.css("margin", "125px 0 0 0"); + } else { + leftNavigation.hide(animeTime); + content.animate( { "margin-left": 0 }, animeTime); + } + showHideButton.attr("title", "Show Sidebar"); + } else { + //Show the TOC + showHideButton.removeClass('pointRight').addClass('pointLeft'); + if(noAnimations) { + content.css("margin", "125px 0 0 280px"); + leftNavigation.css("display", "block"); + } else { + content.animate( { "margin-left": '280px' }, animeTime); + leftNavigation.show(animeTime); + } + showHideButton.attr("title", "Hide Sidebar"); + } +} + +/** + * Code for search highlighting + */ +var highlightOn = true; +function searchHighlight(searchText) { + highlightOn = true; + if (searchText != undefined) { + var wList; + var sList = new Array(); //stem list + //Highlight the search terms + searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "I$N~E8N^zO~Pw;a^(H|lo|{Z2pXH!s%dfd}c>`i1a} zv}w~u+O=z^&ucH8I(3rHojXg{u3e>Dw{8*;5FkBz^pKuCdrDwnp!Dg}NBZ{dEB*TQ z6Nkeg0|pF`prAoAc<^8uHf*StVKRL9a2YvrgqD#qdh{p>4GoboW5&q%@jsOb6UNKL zi9gdaQ6^2AB$FpkmZ?*xNO*X-L`Fu+^y$Bp88fEKtXVU)%#sg3oF&oGQ8IgWw9KDB zPs@B+u;4ecaNzt(}+4YG0LAI0POlNOI`@@$gLn>WkWty^W=wr#RKF;TW}-yu78?2ylPeI~ni@0LA# z_Gn3xq&<5jDQSVbpHow1pOJmCZ{L2| zzkk0RI`n5Pha@d6P14fSB|SY&OS)uaWJqRaretMhNls3#g(&}#*G_t^X5&tb?cVgzI{vX-n}dL z?%k7bzx}s7cC;HDBDMsph1qdetv!((`o7b?{;YGKUdEz%jHZ6 zv#c$>;zP!+HFMWmmmYU{0=tATce>bbS#cp9huibSU}xwMrz7~gd6bnH)iEG2$gFd@ zJYy}(9nkA-M`D7<6YF#(>hm}CcMNiS65O6GA54gHMoozRU`S|`t|U=W6Bf^PyW`>( zeLUB_WbTqha~J)u9;eRs)-qNL_1FBx*pl^~qD_9e6q)zZbzybPEX?t%8DrUQ4=n@2+%jQeC=qF~Z#6-(P8( z8EMt3Rm1lV9Xgn2M%LTwSfl%vy7Bj$sjwu+5)t0_|^tKi_DDD!LDm;9u0$<-Bj83<2 z{nO;fh!O7^n~8(X74#qu#0<{kbJpWG+yB_D?;uL||3=v8fuD&b_Mtl?XJHfE!aj7t zFT6v*$M(K``SF#veRv1|N=c9=38e92+=rps~@$$0vM4h#9$K zV>5yYXQ)Ho`1o1hp_=e-#fs$$&VTYrywZ0!6MOQA*n^3!c1_@!c1W;jpi-y>abld`|wsL0|uqAHKRXC$EU7?Pv7BessvrZt61|tGN+O z&b)f{N&`M~@{t_zwVyNK1^$KG`Zs{dV`4~N!a??5yH@|&_LFxCvE>%RaKhWN1tyApEK|ee!F}3U#2dR zd-w!yk|#MiU%qrdXMkzyPr-lt&$@MM4ELz7-nzE*Tw8ltQJ2UA@Tm#Z2>j7p{JhTr zpZp}&S4!fq}EYe$PMg6A8HUafc_3w>BH~8Kgq12FTYML06*u; zye9ZI2W|c^k{9Sj{^MV`2ItU&e5AipH^D|t&;Dzc2r=hn#9|FL{OiV8S_c*tTt}sfFBI;6HkzJ9U&= zNPaP1tG{OKV&psc{O+*tKlqvc0k>M>Keo|t!Nf%1@CAb2oJntiTksWu>-Gp| zz&}~~b))+q^^+K*haG=!Kj^=Qn7bdorWbR^CMNg{{@HQIJ}`(Q@g-b#_ci}7F>~;LEW*zo0GUu5+Ji~wXu%D6o_uZcXzPI5&U0{b) literal 0 HcmV?d00001 diff --git a/Webhelp/template/search/default.props b/Webhelp/template/search/default.props new file mode 100755 index 0000000..22edf43 --- /dev/null +++ b/Webhelp/template/search/default.props @@ -0,0 +1 @@ +DEF01=a \ No newline at end of file diff --git a/Webhelp/template/search/en-us.props b/Webhelp/template/search/en-us.props new file mode 100755 index 0000000..da284ce --- /dev/null +++ b/Webhelp/template/search/en-us.props @@ -0,0 +1,45 @@ +DEF01=this +DEF02=is +DEF03=the +DEF04=in +DEF05=i +DEF06=on +DEF07=a +DEF08=about +DEF09=an +DEF10=are +DEF11=as +DEF12=at +DEF13=be +DEF14=by +DEF15=com +DEF16=de +DEF17=en +DEF18=for +DEF19=from +DEF20=how +DEF21=it +DEF22=la +DEF23=of +DEF24=on +DEF25=or +DEF26=that +DEF27=to +DEF28=was +DEF29=what +DEF30=when +DEF31=where +DEF32=who +DEF33=will +DEF34=with +DEF35=und +DEF36=Next +DEF37=Prev +DEF38=Home +DEF39=Motive +DEF40=Inc +DEF41=Copyright +DEF42=All +DEF43=rights +DEF44=reserved +DEF45=Up \ No newline at end of file diff --git a/Webhelp/template/search/es-es.props b/Webhelp/template/search/es-es.props new file mode 100755 index 0000000..fb73bdc --- /dev/null +++ b/Webhelp/template/search/es-es.props @@ -0,0 +1,179 @@ +DEF01=un +DEF02=una +DEF03=unas +DEF04=unos +DEF05=uno +DEF06=sobre +DEF07=todo +DEF08=también +DEF09=tras +DEF10=otro +DEF11=algún +DEF12=alguno +DEF13=alguna +DEF14=algunos +DEF15=algunas +DEF16=ser +DEF17=es +DEF18=soy +DEF19=eres +DEF20=somos +DEF21=sois +DEF22=estoy +DEF23=esta +DEF24=estamos +DEF25=estais +DEF26=estan +DEF27=como +DEF28=en +DEF29=para +DEF30=atras +DEF31=porque +DEF32=por +DEF33=estado +DEF34=estaba +DEF35=ante +DEF36=antes +DEF37=siendo +DEF38=ambos +DEF39=pero +DEF40=por +DEF41=poder +DEF42=puede +DEF43=puedo +DEF44=podemos +DEF45=podeis +DEF46=pueden +DEF47=fui +DEF48=fue +DEF49=fuimos +DEF50=fueron +DEF51=hacer +DEF52=hago +DEF53=hace +DEF54=hacemos +DEF55=haceis +DEF56=hacen +DEF57=cada +DEF58=fin +DEF59=incluso +DEF60=primero +DEF61=desde +DEF62=conseguir +DEF63=consigo +DEF64=consigue +DEF65=consigues +DEF66=conseguimos +DEF67=consiguen +DEF68=ir +DEF69=voy +DEF70=va +DEF71=vamos +DEF72=vais +DEF73=van +DEF74=vaya +DEF75=gueno +DEF76=ha +DEF77=tener +DEF78=tengo +DEF79=tiene +DEF80=tenemos +DEF81=teneis +DEF82=tienen +DEF83=el +DEF84=la +DEF85=lo +DEF86=las +DEF87=los +DEF88=su +DEF89=aqui +DEF90=mio +DEF91=tuyo +DEF92=ellos +DEF93=ellas +DEF94=nos +DEF95=nosotros +DEF96=vosotros +DEF97=vosotras +DEF98=si +DEF99=dentro +DEF100=solo +DEF101=solamente +DEF102=saber +DEF103=sabes +DEF104=sabe +DEF105=sabemos +DEF106=sabeis +DEF107=saben +DEF108=ultimo +DEF109=largo +DEF110=bastante +DEF111=haces +DEF112=muchos +DEF113=aquellos +DEF114=aquellas +DEF115=sus +DEF116=entonces +DEF117=tiempo +DEF118=verdad +DEF119=verdadero +DEF120=verdadera +DEF121=cierto +DEF122=ciertos +DEF123=cierta +DEF124=ciertas +DEF125=intentar +DEF126=intento +DEF127=intenta +DEF128=intentas +DEF129=intentamos +DEF130=intentais +DEF131=intentan +DEF132=dos +DEF133=bajo +DEF134=arriba +DEF135=encima +DEF136=usar +DEF137=uso +DEF138=usas +DEF139=usa +DEF140=usamos +DEF141=usais +DEF142=usan +DEF143=emplear +DEF144=empleo +DEF145=empleas +DEF146=emplean +DEF147=ampleamos +DEF148=empleais +DEF149=valor +DEF150=muy +DEF151=era +DEF152=eras +DEF153=eramos +DEF154=eran +DEF155=modo +DEF156=bien +DEF157=cual +DEF158=cuando +DEF159=donde +DEF160=mientras +DEF161=quien +DEF162=con +DEF163=entre +DEF164=sin +DEF165=trabajo +DEF166=trabajar +DEF167=trabajas +DEF168=trabaja +DEF169=trabajamos +DEF170=trabajais +DEF171=trabajan +DEF172=podria +DEF173=podrias +DEF174=podriamos +DEF175=podrian +DEF176=podriais +DEF177=yo +DEF178=aquel +DEF179=qué \ No newline at end of file diff --git a/Webhelp/template/search/ja-jp.props b/Webhelp/template/search/ja-jp.props new file mode 100755 index 0000000..2756805 --- /dev/null +++ b/Webhelp/template/search/ja-jp.props @@ -0,0 +1 @@ +J01=\\u306B \ No newline at end of file diff --git a/Webhelp/template/search/nwSearchFnt.js b/Webhelp/template/search/nwSearchFnt.js new file mode 100755 index 0000000..b115dbe --- /dev/null +++ b/Webhelp/template/search/nwSearchFnt.js @@ -0,0 +1,886 @@ +/*---------------------------------------------------------------------------- + * JavaScript for webhelp search + *---------------------------------------------------------------------------- + This file is part of the webhelpsearch plugin for DocBook WebHelp + Copyright (c) 2007-2008 NexWave Solutions All Rights Reserved. + www.nexwave.biz Nadege Quaine + http://kasunbg.blogspot.com/ Kasun Gajasinghe + */ + +//string initialization +var htmlfileList = "htmlFileInfoList.js"; +var htmlfileinfoList = "htmlFileInfoList.js"; +var useCJKTokenizing = false; + +var w = new Object(); +var scoring = new Object(); + +var searchTextField = ''; +var no = 0; +var noWords = 0; +var partialSearch = "There is no page containing all the search terms.
                    Partial results:
                    "; +var warningMsg = '
                    '; +warningMsg+='Please note that due to security settings, Google Chrome does not highlight'; +warningMsg+=' the search results in the right frame.
                    '; +warningMsg+='This happens only when the WebHelp files are loaded from the local file system.
                    '; +warningMsg+='Workarounds:'; +warningMsg+='
                      '; +warningMsg+='
                    • Try using another web browser.
                    • '; +warningMsg+='
                    • Deploy the WebHelp files on a web server.
                    • '; +warningMsg+='
                    '; +txt_filesfound = 'Results'; +txt_enter_at_least_1_char = "You must enter at least one character."; +txt_enter_more_than_10_words = "Only first 10 words will be processed."; +txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended."; +txt_please_wait = "Please wait. Search in progress..."; +txt_results_for = "Results for: "; + +/* This function verify the validity of search input by the user + Cette fonction verifie la validite de la recherche entrre par l utilisateur */ +function Verifie(searchForm) { + + // Check browser compatibility + if (navigator.userAgent.indexOf("Konquerer") > -1) { + + alert(txt_browser_not_supported); + return; + } + + searchTextField = trim(document.searchForm.textToSearch.value); + searchTextField = searchTextField.replace(/['"]/g,''); + var expressionInput = searchTextField; + $.cookie('textToSearch', expressionInput); + + if (expressionInput.length < 1) { + + // expression is invalid + alert(txt_enter_at_least_1_char); + // reactive la fenetre de search (utile car cadres) + + document.searchForm.textToSearch.focus(); + } + else { + var splitSpace = searchTextField.split(" "); + var splitWords = []; + for (var i = 0 ; i < splitSpace.length ; i++) { + var splitDot = splitSpace[i].split("."); + + if(!(splitDot.length == 1)){ + splitWords.push(splitSpace[i]); + } + + for (var i1 = 0; i1 < splitDot.length; i1++) { + var splitColon = splitDot[i1].split(":"); + for (var i2 = 0; i2 < splitColon.length; i2++) { + var splitDash = splitColon[i2].split("-"); + for (var i3 = 0; i3 < splitDash.length; i3++) { + if (splitDash[i3].split("").length > 0) { + splitWords.push(splitDash[i3]); + } + } + } + } + } + noWords = splitWords; + if (noWords.length > 9){ + // Allow to search maximum 10 words + alert(txt_enter_more_than_10_words); + expressionInput = ''; + for (var x = 0 ; x < 10 ; x++){ + expressionInput = expressionInput + " " + noWords[x]; + } + Effectuer_recherche(expressionInput); + document.searchForm.textToSearch.focus(); + } else { + // Effectuer la recherche + expressionInput = ''; + for (var x = 0 ; x < noWords.length ; x++) { + expressionInput = expressionInput + " " + noWords[x]; + } + Effectuer_recherche(expressionInput); + // reactive la fenetre de search (utile car cadres) + document.searchForm.textToSearch.focus(); + } + } +} + +var stemQueryMap = new Array(); // A hashtable which maps stems to query words + +/* This function parses the search expression, loads the indices and displays the results*/ +function Effectuer_recherche(expressionInput) { + + /* Display a waiting message */ + //DisplayWaitingMessage(); + + /*data initialisation*/ + var searchFor = ""; // expression en lowercase et sans les caracte res speciaux + //w = new Object(); // hashtable, key=word, value = list of the index of the html files + scriptLetterTab = new Scriptfirstchar(); // Array containing the first letter of each word to look for + var wordsList = new Array(); // Array with the words to look for + var finalWordsList = new Array(); // Array with the words to look for after removing spaces + var linkTab = new Array(); + var fileAndWordList = new Array(); + var txt_wordsnotfound = ""; + + + // -------------------------------------- + // Begin Thu's patch + /*nqu: expressionInput, la recherche est lower cased, plus remplacement des char speciaux*/ + //The original replacement expression is: + //searchFor = expressionInput.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, " 0){ + var searchedWords = noWords.length; + var foundedWords = fileAndWordList[0][0].motslisteDisplay.split(",").length; + //console.info("search : " + noWords.length + " found : " + fileAndWordList[0][0].motslisteDisplay.split(",").length); + if (searchedWords != foundedWords){ + linkTab.push(partialSearch); + } + } + + + for (var i = 0; i < cpt; i++) { + + var hundredProcent = fileAndWordList[i][0].scoring + 100 * fileAndWordList[i][0].motsnb; + var ttScore_first = fileAndWordList[i][0].scoring; + var numberOfWords = fileAndWordList[i][0].motsnb; + + if (fileAndWordList[i] != undefined) { + linkTab.push("

                    " + txt_results_for + " " + "" + fileAndWordList[i][0].motslisteDisplay + "" + "

                    "); + + linkTab.push("
                      "); + for (t in fileAndWordList[i]) { + //linkTab.push("
                    • "+fl[fileAndWordList[i][t].filenb]+"
                    • "); + + var ttInfo = fileAndWordList[i][t].filenb; + // Get scoring + var ttScore = fileAndWordList[i][t].scoring; + var tempInfo = fil[ttInfo]; + + var pos1 = tempInfo.indexOf("@@@"); + var pos2 = tempInfo.lastIndexOf("@@@"); + var tempPath = tempInfo.substring(0, pos1); + var tempTitle = tempInfo.substring(pos1 + 3, pos2); + var tempShortdesc = tempInfo.substring(pos2 + 3, tempInfo.length); + + + // toc.html will not be displayed on search result + if (tempPath == 'toc.html'){ + continue; + } + /* + //file:///home/kasun/docbook/WEBHELP/webhelp-draft-output-format-idea/src/main/resources/web/webhelp/installation.html + var linkString = "
                    • " + tempTitle + ""; + // var linkString = "
                    • " + tempTitle + ""; + */ + var split = fileAndWordList[i][t].motsliste.split(","); + // var splitedValues = expressionInput.split(" "); + // var finalArray = split.concat(splitedValues); + + arrayString = 'Array('; + for(var x in finalArray){ + if (finalArray[x].length > 2 || useCJKTokenizing){ + arrayString+= "'" + finalArray[x] + "',"; + } + } + arrayString = arrayString.substring(0,arrayString.length - 1) + ")"; + var idLink = 'foundLink' + no; + var linkString = '
                    • ' + tempTitle + ''; + var starWidth = (ttScore * 100/ hundredProcent)/(ttScore_first/hundredProcent) * (numberOfWords/maxNumberOfWords); + starWidth = starWidth < 10 ? (starWidth + 5) : starWidth; + // Keep the 5 stars format + if (starWidth > 85){ + starWidth = 85; + } + /* + var noFullStars = Math.ceil(starWidth/17); + var fullStar = "curr"; + var emptyStar = ""; + if (starWidth % 17 == 0){ + // am stea plina + + } else { + + } + console.info(noFullStars); + */ + // Also check if we have a valid description + if ((tempShortdesc != "null" && tempShortdesc != '...')) { + + linkString += "\n
                      " + tempShortdesc + "
                      "; + } + linkString += "
                    • "; + + // Add rating values for scoring at the list of matches + linkString += "
                      "; + linkString += "
                      "; + //linkString += "
                      " + // + ((ttScore * 100/ hundredProcent)/(ttScore_first/hundredProcent)) * 1 + "
                      "; + linkString += "
                        "; + linkString += "
                      • "; + linkString += "
                      "; + + linkString += "
                      "; + linkString += "
                      "; + linkString += "
                      "; + //linkString += 'Rating: ' + ttScore + ''; + + linkTab.push(linkString); + no++; + } + linkTab.push("
                    "); + } + } + } + + var results = ""; + if (linkTab.length > 0) { + /*writeln ("

                    " + txt_results_for + " " + "" + cleanwordsList + "" + "
                    "+"

                    ");*/ + results = "

                    "; + //write("

                      "); + for (t in linkTab) { + results += linkTab[t].toString(); + } + results += "

                      "; + } else { + results = "

                      " + localeresource.search_no_results + " " + txt_wordsnotfound + "" + "

                      "; + } + + + // Verify if the browser is Google Chrome and the WebHelp is used on a local machine + // If browser is Google Chrome and WebHelp is used on a local machine a warning message will appear + // Highlighting will not work in this conditions. There is 2 workarounds + if (verifyBrowser()){ + document.getElementById('searchResults').innerHTML = results; + } else { + document.getElementById('searchResults').innerHTML = warningMsg + results; + } + +} + + +// Verify if the stemmed word is aproximately the same as the searched word +function verifyWord(word, arr){ + for (var i = 0 ; i < arr.length ; i++){ + if (word[0] == arr[i][0] + && word[1] == arr[i][1] + //&& word[2] == arr[i][2] + ){ + return true; + } + } + return false; +} + +// Look for elements that start with searchedValue. +function wordsStartsWith(searchedValue){ + var toReturn = ''; + for (var sv in w){ + if (searchedValue.length < 3){ + continue; + } else { + if (sv.toLowerCase().indexOf(searchedValue.toLowerCase()) == 0){ + toReturn+=sv + ","; + } + } + } + return toReturn.length > 0 ? toReturn : undefined; +} + + +function tokenize(wordsList){ + var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces + var cleanwordsList = new Array(); // Array with the words to look for + // ------------------------------------------------- + // Thu's patch + for(var j=0;j"; + return this.input.substring(this.offset,this.offset+2); + } + + function getAllTokens(){ + while(this.incrementToken()){ + var tmp = this.tokenize(); + this.tokens.push(tmp); + } + return this.unique(this.tokens); +// document.getElementById("content").innerHTML += tokens+" "; +// document.getElementById("content").innerHTML += "
                      dada"+sortedTokens+" "; +// console.log(tokens.length+"dsdsds"); + /*for(i=0;i t2.length) { + return 1; + } else { + return -1; + } + //return t1.length - t2.length); +} + +// return false if browser is Google Chrome and WebHelp is used on a local machine, not a web server +function verifyBrowser(){ + var returnedValue = true; + var browser = BrowserDetect.browser; + var addressBar = window.location.href; + if (browser == 'Chrome' && addressBar.indexOf('file://') === 0){ + returnedValue = false; + } + + return returnedValue; +} + +// Remove duplicate values from an array +function removeDuplicate(arr) { + var r = new Array(); + o:for(var i = 0, n = arr.length; i < n; i++) { + for(var x = 0, y = r.length; x < y; x++) { + if(r[x]==arr[i]) continue o; + } + r[r.length] = arr[i]; + } + return r; +} + +// Create startsWith method +String.prototype.startsWith = function(str) { + return (this.match("^"+str)==str); +} + +function trim(str, chars) { + return ltrim(rtrim(str, chars), chars); +} + +function ltrim(str, chars) { + chars = chars || "\\s"; + return str.replace(new RegExp("^[" + chars + "]+", "g"), ""); +} + +function rtrim(str, chars) { + chars = chars || "\\s"; + return str.replace(new RegExp("[" + chars + "]+$", "g"), ""); +} diff --git a/Webhelp/template/search/punctuation.props b/Webhelp/template/search/punctuation.props new file mode 100755 index 0000000..d3e3fcd --- /dev/null +++ b/Webhelp/template/search/punctuation.props @@ -0,0 +1,31 @@ +Punct01=\\u3002 +Punct02=\\u3003 +Punct03=\\u300C +Punct04=\\u300D +Punct05=\\u300E +Punct06=\\u300F +Punct07=\\u301D +Punct08=\\u301E +Punct09=\\u301F +Punct10=\\u309B +Punct11=\\u2018 +Punct12=\\u2019 +Punct13=\\u201A +Punct14=\\u201C +Punct15=\\u201D +Punct16=\\u201E +Punct17=\\u2032 +Punct18=\\u2033 +Punct19=\\u2035 +Punct20=\\u2039 +Punct21=\\u203A +Punct22=\\u201E +Punct23=\\u00BB +Punct24=\\u00AB +Punct25=© +Punct26=’ +Punct27=\\u00A0 +Punct28=\\u2014 + + + diff --git a/Webhelp/template/search/stemmers/de_stemmer.js b/Webhelp/template/search/stemmers/de_stemmer.js new file mode 100755 index 0000000..7ff3822 --- /dev/null +++ b/Webhelp/template/search/stemmers/de_stemmer.js @@ -0,0 +1,247 @@ +/* + * Author: Joder Illi + * + * Copyright (c) 2010, FormBlitz AG + * All rights reserved. + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/german/stemmer.html + * Copyright of the algorithm is: Copyright (c) 2001, Dr Martin Porter and can be found at http://snowball.tartarus.org/license.php + * + * Redistribution and use in source and binary forms, with or without modification, is covered by the standard BSD license. + * + */ + +//var stemmer = function Stemmer() { + /* + German includes the following accented forms, + ä ö ü + and a special letter, ß, equivalent to double s. + The following letters are vowels: + a e i o u y ä ö ü + */ + + var stemmer = function(word) { + /* + Put u and y between vowels into upper case + */ + word = word.replace(/([aeiouyäöü])u([aeiouyäöü])/g, '$1U$2'); + word = word.replace(/([aeiouyäöü])y([aeiouyäöü])/g, '$1Y$2'); + + /* + and then do the following mappings, + (a) replace ß with ss, + (a) replace ae with ä, Not doing these, have trouble with diphtongs + (a) replace oe with ö, Not doing these, have trouble with diphtongs + (a) replace ue with ü unless preceded by q. Not doing these, have trouble with diphtongs + So in quelle, ue is not mapped to ü because it follows q, and in feuer it is not mapped because the first part of the rule changes it to feUer, so the u is not found. + */ + word = word.replace(/ß/g, 'ss'); + //word = word.replace(/ae/g, 'ä'); + //word = word.replace(/oe/g, 'ö'); + //word = word.replace(/([^q])ue/g, '$1ü'); + + /* + R1 and R2 are first set up in the standard way (see the note on R1 and R2), but then R1 is adjusted so that the region before it contains at least 3 letters. + R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if there is no such non-vowel. + R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the word if there is no such non-vowel. + */ + + var r1Index = word.search(/[aeiouyäöü][^aeiouyäöü]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } + + var r2Index = -1; + var r2 = ''; + + if (r1Index != -1) { + var r2Index = r1.search(/[aeiouyäöü][^aeiouyäöü]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + } + } + + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Define a valid s-ending as one of b, d, f, g, h, k, l, m, n, r or t. + Define a valid st-ending as the same list, excluding letter r. + */ + + /* + Do each of steps 1, 2 and 3. + */ + + /* + Step 1: + Search for the longest among the following suffixes, + (a) em ern er + (b) e en es + (c) s (preceded by a valid s-ending) + */ + var a1Index = word.search(/(em|ern|er)$/g); + var b1Index = word.search(/(e|en|es)$/g); + var c1Index = word.search(/([bdfghklmnrt]s)$/g); + if (c1Index != -1) { + c1Index++; + } + var index1 = 10000; + var optionUsed1 = ''; + if (a1Index != -1 && a1Index < index1) { + optionUsed1 = 'a'; + index1 = a1Index; + } + if (b1Index != -1 && b1Index < index1) { + optionUsed1 = 'b'; + index1 = b1Index; + } + if (c1Index != -1 && c1Index < index1) { + optionUsed1 = 'c'; + index1 = c1Index; + } + + /* + and delete if in R1. (Of course the letter of the valid s-ending is not necessarily in R1.) If an ending of group (b) is deleted, and the ending is preceded by niss, delete the final s. + (For example, äckern -> äck, ackers -> acker, armes -> arm, bedürfnissen -> bedürfnis) + */ + + if (index1 != 10000 && r1Index != -1) { + if (index1 >= r1Index) { + word = word.substring(0, index1); + if (optionUsed1 == 'b') { + if (word.search(/niss$/) != -1) { + word = word.substring(0, word.length -1); + } + } + } + } + /* + Step 2: + Search for the longest among the following suffixes, + (a) en er est + (b) st (preceded by a valid st-ending, itself preceded by at least 3 letters) + */ + + var a2Index = word.search(/(en|er|est)$/g); + var b2Index = word.search(/(.{3}[bdfghklmnt]st)$/g); + if (b2Index != -1) { + b2Index += 4; + } + + var index2 = 10000; + var optionUsed2 = ''; + if (a2Index != -1 && a2Index < index2) { + optionUsed2 = 'a'; + index2 = a2Index; + } + if (b2Index != -1 && b2Index < index2) { + optionUsed2 = 'b'; + index2 = b2Index; + } + + /* + and delete if in R1. + (For example, derbsten -> derbst by step 1, and derbst -> derb by step 2, since b is a valid st-ending, and is preceded by just 3 letters) + */ + + if (index2 != 10000 && r1Index != -1) { + if (index2 >= r1Index) { + word = word.substring(0, index2); + } + } + + /* + Step 3: d-suffixes (*) + Search for the longest among the following suffixes, and perform the action indicated. + end ung + delete if in R2 + if preceded by ig, delete if in R2 and not preceded by e + ig ik isch + delete if in R2 and not preceded by e + lich heit + delete if in R2 + if preceded by er or en, delete if in R1 + keit + delete if in R2 + if preceded by lich or ig, delete if in R2 + */ + + var a3Index = word.search(/(end|ung)$/g); + var b3Index = word.search(/[^e](ig|ik|isch)$/g); + var c3Index = word.search(/(lich|heit)$/g); + var d3Index = word.search(/(keit)$/g); + if (b3Index != -1) { + b3Index ++; + } + + var index3 = 10000; + var optionUsed3 = ''; + if (a3Index != -1 && a3Index < index3) { + optionUsed3 = 'a'; + index3 = a3Index; + } + if (b3Index != -1 && b3Index < index3) { + optionUsed3 = 'b'; + index3 = b3Index; + } + if (c3Index != -1 && c3Index < index3) { + optionUsed3 = 'c'; + index3 = c3Index; + } + if (d3Index != -1 && d3Index < index3) { + optionUsed3 = 'd'; + index3 = d3Index; + } + + if (index3 != 10000 && r2Index != -1) { + if (index3 >= r2Index) { + word = word.substring(0, index3); + var optionIndex = -1; + var optionSubsrt = ''; + if (optionUsed3 == 'a') { + optionIndex = word.search(/[^e](ig)$/); + if (optionIndex != -1) { + optionIndex++; + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'c') { + optionIndex = word.search(/(er|en)$/); + if (optionIndex != -1) { + if (optionIndex >= r1Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'd') { + optionIndex = word.search(/(lich|ig)$/); + if (optionIndex != -1) { + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } + } + } + + /* + Finally, + turn U and Y back into lower case, and remove the umlaut accent from a, o and u. + */ + word = word.replace(/U/g, 'u'); + word = word.replace(/Y/g, 'y'); + word = word.replace(/ä/g, 'a'); + word = word.replace(/ö/g, 'o'); + word = word.replace(/ü/g, 'u'); + + return word; + }; +//} \ No newline at end of file diff --git a/Webhelp/template/search/stemmers/en_stemmer.js b/Webhelp/template/search/stemmers/en_stemmer.js new file mode 100755 index 0000000..2117c1b --- /dev/null +++ b/Webhelp/template/search/stemmers/en_stemmer.js @@ -0,0 +1,234 @@ +// Porter stemmer in Javascript. Few comments, but it's easy to follow against the rules in the original +// paper, in +// +// Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14, +// no. 3, pp 130-137, +// +// see also http://www.tartarus.org/~martin/PorterStemmer + +// Release 1 +// Derived from (http://tartarus.org/~martin/PorterStemmer/js.txt) - cjm (iizuu) Aug 24, 2009 + +var stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + return function (w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4, + origword = w; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c + re = new RegExp("^(.+" + c + ")y$"); + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + // See http://snowball.tartarus.org/algorithms/english/stemmer.html + // "Exceptional forms in general" + var specialWords = { + "skis" : "ski", + "skies" : "sky", + "dying" : "die", + "lying" : "lie", + "tying" : "tie", + "idly" : "idl", + "gently" : "gentl", + "ugly" : "ugli", + "early": "earli", + "only": "onli", + "singly": "singl" + }; + + if(specialWords[origword]){ + w = specialWords[origword]; + } + + if( "sky news howe atlas cosmos bias \ + andes inning outing canning herring \ + earring proceed exceed succeed".indexOf(origword) !== -1 ){ + w = origword; + } + + // Address words overstemmed as gener- + re = /.*generate?s?d?(ing)?$/; + if( re.test(origword) ){ + w = w + 'at'; + } + re = /.*general(ly)?$/; + if( re.test(origword) ){ + w = w + 'al'; + } + re = /.*generic(ally)?$/; + if( re.test(origword) ){ + w = w + 'ic'; + } + re = /.*generous(ly)?$/; + if( re.test(origword) ){ + w = w + 'ous'; + } + // Address words overstemmed as commun- + re = /.*communit(ies)?y?/; + if( re.test(origword) ){ + w = w + 'iti'; + } + + return w; + } +})(); diff --git a/Webhelp/template/search/stemmers/fr_stemmer.js b/Webhelp/template/search/stemmers/fr_stemmer.js new file mode 100755 index 0000000..34f9743 --- /dev/null +++ b/Webhelp/template/search/stemmers/fr_stemmer.js @@ -0,0 +1,299 @@ +/* + * Author: Kasun Gajasinghe + * E-Mail: kasunbg AT gmail DOT com + * Date: 09.08.2010 + * + * usage: stemmer(word); + * ex: var stem = stemmer(foobar); + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/french/stemmer.html + * + * LICENSE: + * + * Copyright (c) 2010, Kasun Gajasinghe. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * + * THIS SOFTWARE IS PROVIDED BY KASUN GAJASINGHE ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KASUN GAJASINGHE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +var stemmer = function(word){ +// Letters in French include the following accented forms, +// â à ç ë é ê è ï î ô û ù +// The following letters are vowels: +// a e i o u y â à ë é ê è ï î ô û ù + + word = word.toLowerCase(); + var oriWord = word; + word = word.replace(/qu/g, 'qU'); //have to perform first, as after the operation, capital U is not treated as a vowel + word = word.replace(/([aeiouyâàëéêèïîôûù])u([aeiouyâàëéêèïîôûù])/g, '$1U$2'); + word = word.replace(/([aeiouyâàëéêèïîôûù])i([aeiouyâàëéêèïîôûù])/g, '$1I$2'); + word = word.replace(/([aeiouyâàëéêèïîôûù])y/g, '$1Y'); + word = word.replace(/y([aeiouyâàëéêèïîôûù])/g, 'Y$1'); + + var rv=''; + var rvIndex = -1; + if(word.search(/^(par|col|tap)/) != -1 || word.search(/^[aeiouyâàëéêèïîôûù]{2}/) != -1){ + rv = word.substring(3); + rvIndex = 3; + } else { + rvIndex = word.substring(1).search(/[aeiouyâàëéêèïîôûù]/); + if(rvIndex != -1){ + rvIndex +=2; //+2 is to supplement the substring(1) used to find rvIndex + rv = word.substring(rvIndex); + } else { + rvIndex = word.length; + } + } + +// R1 is the region after the first non-vowel following a vowel, or the end of the word if there is no such non-vowel. +// R2 is the region after the first non-vowel following a vowel in R1, or the end of the word if there is no such non-vowel + var r1Index = word.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } else { + r1Index = word.length; + } + + var r2Index = -1; + var r2 = ''; + if (r1Index != -1) { + r2Index = r1.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + r2Index = word.length; + } + } + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Step 1: Standard suffix removal + */ + var a1Index = word.search(/(ance|iqUe|isme|able|iste|eux|ances|iqUes|ismes|ables|istes)$/); + var a2Index = word.search(/(atrice|ateur|ation|atrices|ateurs|ations)$/); + var a3Index = word.search(/(logie|logies)$/); + var a4Index = word.search(/(usion|ution|usions|utions)$/); + var a5Index = word.search(/(ence|ences)$/); + var a6Index = word.search(/(ement|ements)$/); + var a7Index = word.search(/(ité|ités)$/); + var a8Index = word.search(/(if|ive|ifs|ives)$/); + var a9Index = word.search(/(eaux)$/); + var a10Index = word.search(/(aux)$/); + var a11Index = word.search(/(euse|euses)$/); + var a12Index = word.search(/[^aeiouyâàëéêèïîôûù](issement|issements)$/); + var a13Index = word.search(/(amment)$/); + var a14Index = word.search(/(emment)$/); + var a15Index = word.search(/[aeiouyâàëéêèïîôûù](ment|ments)$/); + + if(a1Index != -1 && a1Index >= r2Index){ + word = word.substring(0,a1Index); + } else if(a2Index != -1 && a2Index >= r2Index){ + word = word.substring(0,a2Index); + var a2Index2 = word.search(/(ic)$/); + if(a2Index2 != -1 && a2Index2 >= r2Index){ + word = word.substring(0, a2Index2); //if preceded by ic, delete if in R2, + } else { //else replace by iqU + word = word.replace(/(ic)$/,'iqU'); + } + } else if(a3Index != -1 && a3Index >= r2Index){ + word = word.replace(/(logie|logies)$/,'log'); //replace with log if in R2 + } else if(a4Index != -1 && a4Index >= r2Index){ + word = word.replace(/(usion|ution|usions|utions)$/,'u'); //replace with u if in R2 + } else if(a5Index != -1 && a5Index >= r2Index){ + word = word.replace(/(ence|ences)$/,'ent'); //replace with ent if in R2 + } else if(a6Index != -1 && a6Index >= rvIndex){ + word = word.substring(0,a6Index); + if(word.search(/(iv)$/) >= r2Index){ + word = word.replace(/(iv)$/, ''); + if(word.search(/(at)$/) >= r2Index){ + word = word.replace(/(at)$/, ''); + } + } else if(word.search(/(eus)$/) != -1){ + var a6Index2 = word.search(/(eus)$/); + if(a6Index2 >=r2Index){ + word = word.substring(0, a6Index2); + } else if(a6Index2 >= r1Index){ + word = word.substring(0,a6Index2)+"eux"; + } + } else if(word.search(/(abl|iqU)$/) >= r2Index){ + word = word.replace(/(abl|iqU)$/,''); //if preceded by abl or iqU, delete if in R2, + } else if(word.search(/(ièr|Ièr)$/) >= rvIndex){ + word = word.replace(/(ièr|Ièr)$/,'i'); //if preceded by abl or iqU, delete if in R2, + } + } else if(a7Index != -1 && a7Index >= r2Index){ + word = word.substring(0,a7Index); //delete if in R2 + if(word.search(/(abil)$/) != -1){ //if preceded by abil, delete if in R2, else replace by abl, otherwise, + var a7Index2 = word.search(/(abil)$/); + if(a7Index2 >=r2Index){ + word = word.substring(0, a7Index2); + } else { + word = word.substring(0,a7Index2)+"abl"; + } + } else if(word.search(/(ic)$/) != -1){ + var a7Index3 = word.search(/(ic)$/); + if(a7Index3 != -1 && a7Index3 >= r2Index){ + word = word.substring(0, a7Index3); //if preceded by ic, delete if in R2, + } else { //else replace by iqU + word = word.replace(/(ic)$/,'iqU'); + } + } else if(word.search(/(iv)$/) != r2Index){ + word = word.replace(/(iv)$/,''); + } + } else if(a8Index != -1 && a8Index >= r2Index){ + word = word.substring(0,a8Index); + if(word.search(/(at)$/) >= r2Index){ + word = word.replace(/(at)$/, ''); + if(word.search(/(ic)$/) >= r2Index){ + word = word.replace(/(ic)$/, ''); + } else { word = word.replace(/(ic)$/, 'iqU'); } + } + } else if(a9Index != -1){ word = word.replace(/(eaux)/,'eau') + } else if(a10Index >= r1Index){ word = word.replace(/(aux)/,'al') + } else if(a11Index != -1 ){ + var a11Index2 = word.search(/(euse|euses)$/); + if(a11Index2 >=r2Index){ + word = word.substring(0, a11Index2); + } else if(a11Index2 >= r1Index){ + word = word.substring(0, a11Index2)+"eux"; + } + } else if(a12Index!=-1 && a12Index>=r1Index){ + word = word.substring(0,a12Index+1); //+1- amendment to non-vowel + } else if(a13Index!=-1 && a13Index>=rvIndex){ + word = word.replace(/(amment)$/,'ant'); + } else if(a14Index!=-1 && a14Index>=rvIndex){ + word = word.replace(/(emment)$/,'ent'); + } else if(a15Index!=-1 && a15Index>=rvIndex){ + word = word.substring(0,a15Index+1); + } + + /* Step 2a: Verb suffixes beginning i*/ + var wordStep1 = word; + var step2aDone = false; + if(oriWord == word.toLowerCase() || oriWord.search(/(amment|emment|ment|ments)$/) != -1){ + step2aDone = true; + var b1Regex = /([^aeiouyâàëéêèïîôûù])(îmes|ît|îtes|i|ie|ies|ir|ira|irai|iraIent|irais|irait|iras|irent|irez|iriez|irions|irons|iront|is|issaIent|issais|issait|issant|issante|issantes|issants|isse|issent|isses|issez|issiez|issions|issons|it)$/i; + if(word.search(b1Regex) >= rvIndex){ + word = word.replace(b1Regex,'$1'); + } + } + + /* Step 2b: Other verb suffixes*/ + if (step2aDone && wordStep1 == word) { + if (word.search(/(ions)$/) >= r2Index) { + word = word.replace(/(ions)$/, ''); + } else { + var b2Regex = /(é|ée|ées|és|èrent|er|era|erai|eraIent|erais|erait|eras|erez|eriez|erions|erons|eront|ez|iez)$/i; + if (word.search(b2Regex) >= rvIndex) { + word = word.replace(b2Regex, ''); + } else { + var b3Regex = /e(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i; + if (word.search(b3Regex) >= rvIndex) { + word = word.replace(b3Regex, ''); + } else { + var b3Regex2 = /(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i; + if (word.search(b3Regex2) >= rvIndex) { + word = word.replace(b3Regex2, ''); + } + } + } + } + } + + if(oriWord != word.toLowerCase()){ + /* Step 3 */ + var rep = ''; + if(word.search(/Y$/) != -1) { + word = word.replace(/Y$/, 'i'); + } else if(word.search(/ç$/) != -1){ + word = word.replace(/ç$/, 'c'); + } + } else { + /* Step 4 */ + //If the word ends s, not preceded by a, i, o, u, è or s, delete it. + if (word.search(/([^aiouès])s$/) >= rvIndex) { + word = word.replace(/([^aiouès])s$/, '$1'); + } + var e1Index = word.search(/ion$/); + if (e1Index >= r2Index && word.search(/[st]ion$/) >= rvIndex) { + word = word.substring(0, e1Index); + } else { + var e2Index = word.search(/(ier|ière|Ier|Ière)$/); + if (e2Index != -1 && e2Index >= rvIndex) { + word = word.substring(0, e2Index) + "i"; + } else { + if (word.search(/e$/) >= rvIndex) { + word = word.replace(/e$/, ''); //delete last e + } else if (word.search(/guë$/) >= rvIndex) { + word = word.replace(/guë$/, 'gu'); + } + } + } + } + + /* Step 5: Undouble */ + //word = word.replace(/(en|on|et|el|eil)(n|t|l)$/,'$1'); + word = word.replace(/(en|on)(n)$/,'$1'); + word = word.replace(/(ett)$/,'et'); + word = word.replace(/(el|eil)(l)$/,'$1'); + + /* Step 6: Un-accent */ + word = word.replace(/[éè]([^aeiouyâàëéêèïîôûù]+)$/,'e$1'); + word = word.toLowerCase(); + return word; +}; + +var eqOut = new Array(); +var noteqOut = new Array(); +var eqCount = 0; +/* +To test the stemming, create two arrays named "voc" and "COut" which are for vocabualary and the stemmed output. +Then add the vocabulary strings and output strings. This method will generate the stemmed output for "voc" and will +compare the output with COut. + (I used porter's voc and out files and did a regex to convert them to js objects. regex: /");\nvoc.push("/g . This + will add strings to voc array such that output would look like: voc.push("foobar"); ) drop me an email for any help. + */ +function testFr(){ + var start = new Date().getTime(); //execution time + eqCount = 0; + eqOut = new Array(); + noteqOut = new Array(); + for(var k=0;k + + +End Sub + +Wenn Sie unter Schritt 2 die Möglichkeit 1 gewählt haben, fügen Sie den Untern angefügten Makro-Quellcode komplett ein. Das Ergebnis entspricht dem von Möglichkeit 1. + +4. Gehen Sie im Basic Editor auf "Datei, Speichern" und schließen Sie den Editor mit "Datei, Beenden" + +Schaltfläche / Hotkey einrichten +================================ +Ein Makro rufen Sie unter Libre Office über "Extras, Makros, Makro ausführen" oder "Extras, Makros, Makros verwalten, LibreOffice Basic..." auf. Sie können aber auch ein neues Icon in einer beliebigen Symbolleiste erstellen oder einen Hotkey vergeben. + +Gehen Sie auf "Extras -> Anpassen" und wählen Sie die Registerkarte "Tastatur". Suchen Sie nach einer Tastenkombination, die bisher noch nicht belegt ist, etwa Alt-V. Klicken Sie die Tastenkombination an. Gehen Sie unter "Funktionen" auf "LibreOffice-Makros -> users -> Standard > Module1" und unter "Funktion" klicken Sie das gewünschte Makro an. Klicken Sie auf "Ändern" und dann auf "OK". Jetzt lässt sich das Makro schnell über die gewählte Tastenkombination starten. + +Wenn Sie lieber ein Icon in einer Symbolleiste verwenden möchten, gehen Sie auf "Extras -> Anpassen" und dann auf die Registerkarte "Symbolleisten". Es empfiehlt sich, für individuelle Funktionen eine eigene Symbolleiste anzulegen. Dazu klicken Sie auf "Neu" und legen eine Bezeichnung fest. + +Klicken Sie auf "Hinzufügen" und gehen Sie unter "Bereich" auf "LibreOffice Makros -> Meine Makros -> Standard -> Module1". Unter "Befehle" wählen Sie das gewünschte Ihr Makro. Klicken Sie auf "Hinzufügen" und dann auf "Schließen". + +== Makrotext für die Steuerung von lwTextExporter.py == +Sub FileExport +oDoc=ThisComponent +BasicLibraries.LoadLibrary("Tools") +REM ### Konfiguration - Pfad bitte bei Bedarf anpassen +myHome=Environ ("HOME") +PathToDocBookExporter=myHome + "/lwText/lwTextExporter.py" +myTerminal="/usr/bin/xterm" +AusgabeOrdner=myHome + "/lwText/Ausgabe" +REM ### Konfiguration Ende +REM +If not FileExists(myTerminal) Then +MsgBox("Installieren Sie bitte zuerst xterm (sudo apt install xterm).",0,"Fehler") +stop +End If + +If Not FileExists (PathToDocBookExporter) Then +MsgBox("lwTextExporter.py nicht gefunden. Bitte Pfad im Makro anpassen.",0,"Fehler") +stop +End If +If Not oDoc.hasLocation Then +MsgBox("Sie müssen das Dokument vor dem Konvertieren erst speichern.") +stop +End If + +If (oDoc.isModified) Then + If (oDoc.hasLocation) Then + oDoc.store() + End If +End If + +myDocPath=ConvertfromURL(oDoc.URL) +REM Bitte Parameter für andere Ausgabeformate anpassen +Param=" -title lwTextExporter -e /usr/bin/python " + PathToDocBookExporter + " -d " + AusgabeOrdner +" -c html " + myDocPath +Shell(myTerminal,1,Param, True) +End Sub diff --git a/lib/webhelpindexer.jar b/lib/webhelpindexer.jar old mode 100644 new mode 100755 diff --git a/ooo2dbk/HISTORY b/ooo2dbk/HISTORY new file mode 100644 index 0000000..2da3a9e --- /dev/null +++ b/ooo2dbk/HISTORY @@ -0,0 +1,912 @@ +=========================================================== +Package: ooo2dbk 2.1.0 +=========================================================== +First release built by: lgodard at: 2006-12-29T14:56:36 +SVN Tag: https://svn.nuxeo.org/pub/OOo/ooo2dbk/tags/2.1.0 +Build from: https://svn.nuxeo.org/pub/OOo/ooo2dbk/trunk@50739 + +Requires +~~~~~~~~ +- +New features +~~~~~~~~~~~~ +- +Bug fixes +~~~~~~~~~ +- Removed bad characters in ooo2dbk.xsl file. +New internal features +~~~~~~~~~~~~~~~~~~~~~ +- ooo2dbk.xml defaults first to /etc/ooo2dbk.xml, then to CONF_FILE_NAME + +=========================================================== +Package: ooo2dbk 2.0.3 +=========================================================== +First release built by: madarche at: 2006-12-15T12:28:48 +SVN Tag: https://svn.nuxeo.org/pub/OOo/ooo2dbk/tags/2.0.3 +Build from: https://svn.nuxeo.org/pub/OOo/ooo2dbk/trunk@50617 + +Requires +~~~~~~~~ +- +New features +~~~~~~~~~~~~ +- +Bug fixes +~~~~~~~~~ +- Updated doc and patch. +New internal features +~~~~~~~~~~~~~~~~~~~~~ +- + +=========================================================== +Package: ooo2dbk 2.0.2 +=========================================================== +First release built by: madarche at: 2006-12-15T12:18:10 +SVN Tag: https://svn.nuxeo.org/pub/OOo/ooo2dbk/tags/2.0.2 +Build from: https://svn.nuxeo.org/pub/OOo/ooo2dbk/trunk@50612 + +Requires +~~~~~~~~ +- +New features +~~~~~~~~~~~~ +- +Bug fixes +~~~~~~~~~ +- Improved debugging and doc. +New internal features +~~~~~~~~~~~~~~~~~~~~~ +- + +=========================================================== +Package: ooo2dbk 2.0.1 +=========================================================== +First release built by: lgodard at: 2006-12-05T17:02:17 +SVN Tag: https://svn.nuxeo.org/pub/OOo/ooo2dbk/tags/2.0.1 +Build from: https://svn.nuxeo.org/pub/OOo/ooo2dbk/trunk@50511 + +Requires +~~~~~~~~ +- +New features +~~~~~~~~~~~~ +- +Bug fixes +~~~~~~~~~ +- Updated the doc to state the support for ODT. +New internal features +~~~~~~~~~~~~~~~~~~~~~ +- + +=========================================================== +Package: ooo2dbk 2.0.0 +=========================================================== +First release built by: lgodard at: 2006-12-05T16:56:33 +SVN Tag: https://svn.nuxeo.org/pub/OOo/ooo2dbk/tags/2.0.0 +Build from: https://svn.nuxeo.org/pub/OOo/ooo2dbk/trunk@50506 + +Requires +~~~~~~~~ +- +New features +~~~~~~~~~~~~ +- +Bug fixes +~~~~~~~~~ +- +New internal features +~~~~~~~~~~~~~~~~~~~~~ +- + +=========================================================== +Package: ooo2dbk 2.0.0 +=========================================================== +First release built by: lgodard at: 2006-11-27T14:30:02 +SVN Tag: https://svn.nuxeo.org/pub/OOo/ooo2dbk/tags/2.0.0 +Build from: https://svn.nuxeo.org/pub/OOo/ooo2dbk/trunk@50313 + +Requires +~~~~~~~~ +- +New features +~~~~~~~~~~~~ +- +Bug fixes +~~~~~~~~~ +- +New internal features +~~~~~~~~~~~~~~~~~~~~~ +- + +=========================================================== +Package: ooo2dbk 2.0.0 +=========================================================== +First release built by: lgodard at: 2006-11-24T15:06:09 +SVN Tag: https://svn.nuxeo.org/pub/OOo/ooo2dbk/tags/2.0.0 +Build from: https://svn.nuxeo.org/pub/OOo/ooo2dbk/trunk@50293 + +Requires +~~~~~~~~ +- +New features +~~~~~~~~~~~~ +- +Bug fixes +~~~~~~~~~ +- +New internal features +~~~~~~~~~~~~~~~~~~~~~ +- + +=========================================================== +Package: ooo2dbk 2.0.0 +=========================================================== +First release built by: lgodard at: 2006-11-24T14:50:36 +SVN Tag: https://svn.nuxeo.org/pub/OOo/ooo2dbk/tags/2.0.0 +Build from: https://svn.nuxeo.org/pub/OOo/ooo2dbk/trunk@50288 + +Requires +~~~~~~~~ +- +New features +~~~~~~~~~~~~ +- +Bug fixes +~~~~~~~~~ +- +New internal features +~~~~~~~~~~~~~~~~~~~~~ +- + +=========================================================== +Package: ooo2dbk 2.0.0 +=========================================================== +First release built by: lgodard at: 2006-11-23T19:09:06 +SVN Tag: https://svn.nuxeo.org/pub/OOo/ooo2dbk/tags/2.0.0 +Build from: https://svn.nuxeo.org/pub/OOo/ooo2dbk/trunk@50242 + +Requires +~~~~~~~~ +- +New features +~~~~~~~~~~~~ +- +Bug fixes +~~~~~~~~~ +- +New internal features +~~~~~~~~~~~~~~~~~~~~~ +- + +=========================================================== +Package: ooo2dbk 2.0.0 +=========================================================== +First release built by: lgodard at: 2006-11-23T17:06:46 +SVN Tag: https://svn.nuxeo.org/pub/OOo/ooo2dbk/tags/2.0.0 +Build from: https://svn.nuxeo.org/pub/OOo/ooo2dbk/trunk@50229 + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- supports opendocument OOo 2.x file format +(xslt modifications by TARDELLI Maurice - CERTU/SYS/ITS" ) + +Bug fixes: +~~~~~~~~~~ +- +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- refactoring: no more plateform dependand xslt files in ooo2dbk.xml +- refactoring: OOo file analyzed at first to obtain oooVersion file + +******************************************* +** ooo2dbk V1.5.0 [R1 build 2005/12/06-15:53 by madarche] +** SVN URL: https://svn.nuxeo.org/pub/ooo2dbk/trunk Revision: 30354 +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Now compiles on win32 with py2exe to standalone console executable. +Bug fixes: +~~~~~~~~~~ +- Made ooo2dbk *nix agnostic. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.4.6 [R1 build 2005/11/28-16:33 by madarche] +** SVN URL: https://svn.nuxeo.org/pub/ooo2dbk/trunk Revision: 30028 +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added improved support for bibliography entries. They now can include abbrev + and URL information. This improvements has been contributed by + Paolo Melchiorre . +Bug fixes: +~~~~~~~~~~ +- Added in the documentation some information on how to submit improvement + suggestions. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.4.5 [R1 build 2005/11/25-17:24 by madarche] +** SVN URL: https://svn.nuxeo.org/pub/ooo2dbk/trunk Revision: 29959 +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added support for the OOo file modification date. +- Used the "isrn" attribute in the "bibliomisc" element as it has been + integrated since DocBook 4.4. +Bug fixes: +~~~~~~~~~~ +- Fixed the legalnotice and authorblurb elements structure that must contain + para elements. +- Removed the useless "convert2" method. +- Added a needed check to know if we should output authorgroup or not. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.4.4 [R1 build 2005/11/07-14:50 by madarche] +** SVN URL: https://svn.nuxeo.org/pub/ooo2dbk/trunk Revision: 29056 +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Fixed the DTD of ooo2dbk.xml. +- Fixed typo in the module initialization so that ooo2dbk can be used as a + python module. This fixes #1098. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.4.3 [R1 build 2005/10/21-13:59 by madarche] +** SVN URL: https://svn.nuxeo.org/pub/ooo2dbk/trunk Revision: 28497 +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Updated the DTD of the shipped ooo2dbk.xml config file. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.4.2 [R1 build 2005/10/21-13:46 by madarche] +** SVN URL: https://svn.nuxeo.org/pub/ooo2dbk/trunk Revision: 28492 +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Made the path of the ole2img.py script be configurable through the + configuration file. +Bug fixes: +~~~~~~~~~~ +- Switched to outputting DocBook XML 4.4 since the DocBook 4.3 DTD package had + problems. +- Fixed the use of Saxon with a Catalog Resolver by adding a missing "-u" + option. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- Improved coding style. + +******************************************* +** ooo2dbk V1.4.1 [R1 build 2005/05/21-19:54 by madarche] +** SVN URL: https://svn.nuxeo.org/pub/ooo2dbk/trunk Revision: 21745 +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added a pkg target to the Makefile so that a binary/compiled/prepared + distribution of the package can be done. +Bug fixes: +~~~~~~~~~~ +- Fixed options parsing that was making impossible to generate article + documents. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.4.0 [R1 build 2005/05/19-14:18 by madarche] +** SVN URL: https://svn.nuxeo.org/pub/ooo2dbk/trunk Revision: 21666 +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Made ooo2dbk generate DocBook book document by default, instead of article. +- Added support for contractsponsor and conference metadata. +- Translated wizard into English. +- Added new OOo a new template both in English and French. +Bug fixes: +~~~~~~~~~~ +- +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- wizard: translation engine (GUI, styles, etc.). +- model: French model cleaned. +- xslt, wizard, model: renamed user defined fields for author, corpauthor and + contract sponsor metadata. +- wizard: no more need of autotexts. +- model: TOC style title to "Section Title". + +******************************************* +** ooo2dbk V1.3.13 [R1 build 2005/03/25-10:22 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Added to Unicode missing conversion for image paths. +- Updated information about XML resolver catalog in the ooo2dbk.xml + configuration file. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.3.12 [R1 build 2005/03/22-17:41 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Fixed indentation problems in ole2img.py. +- Fixed help message on --oooserverport in ole2img.py. +- Fixed OOo selection bug on OLE objects in ole2img.py + +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.3.11 [R1 build 2005/03/22-12:14 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Made ooo2dbk able to use output file path containing special characters such + as spaces. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.3.10 [R1 build 2005/03/09-15:14 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Fixed support for "endnote" which was incomplete. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.3.9 [R1 build 2005/02/21-13:18 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Added back support for line-break. "role" attributes are well propagated. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.3.8 [R1 build 2005/02/09-15:35 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Fixed the detection of sections because section titles can be text:p or + text:h. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.3.7 [R1 build 2005/02/07-16:09 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Made ooo2dbk accept OOo accented files. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.3.6 [R1 build 2005/02/01-16:16 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Switched ooo2dbk.xsl stylesheet from Latin9 (ISO-8859-15) to UTF-8 and removed + accented characters, so that more XML/XSLT parsers can use it. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.3.5 [R1 build 2005/01/25-15:50 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Modified ole2img. Some old files were showing odd behavior on selecting OLE + objects. If the OLE Object can not be selected to be exported as a graphic a + text image "Unable to process OLE object" is created. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- Added the build environment to build the RPM file for ooo2dbk. +- Made ooo2dbk more flexible by using OLE2IMG_PATH as a constant so that ooo2dbk + packaging is easier. + +******************************************* +** ooo2dbk V1.3.4 [R1 build 2005/01/21-11:18 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Fixed OLE objects images that were not always contained inside mediaobject + markup. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.3.3 [R1 build 2005/01/20-16:53 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added support in the custom FO layer for table cell borders. +Bug fixes: +~~~~~~~~~~ +- Made OLE objects not included into text-box be also converted. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- Added Makefile to build both .deb and .rpm packages (work in progress). + +******************************************* +** ooo2dbk V1.3.2 [R1 build 2005/01/14-17:23 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added an option to specify another configuration file. +- Added the doc explaining how to use ooo2dbk with the python shipped with + OpenOffice.org to process OLE objects. +- Added the man page contributed by Mohammed Adnène TROJETTE. +Bug fixes: +~~~~~~~~~~ +- Renamed default config file config.xml into ooo2dbk.xml so that the software + is easier to package. +- Made much cleaning. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- Dealt better with the Python shipped with OOo to process OLE objects. + +******************************************* +** ooo2dbk V1.3.1 [R1 build 2004/12/31-17:06 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added FO support for symbol fonts. +Bug fixes: +~~~~~~~~~~ +- Improved example template document. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.3.0 [R1 build 2004/12/31-10:33 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added support for OLE objects (first shot). +- Added support for print-orientation as processing instructions. +Bug fixes: +~~~~~~~~~~ +- +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.2.2 [R1 build 2004/12/29-10:05 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Fixed the numbering for the list items that was always the same. +- Updated the processing of user fields from the OOo document. +- Updated the OpenOffice.org template. +- Made the return error codes be more meaningful. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.2.1 [R1 build 2004/12/22-11:34 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Made any previously existing images directory be deleted so that we don't get + unwanted files in the output. +- Made images path in the DocBook XML be relative to the archive. +- Made suppression of none border information as processing instructions. +- Added "Andale Mono" as a font name that should be passed as a processing + instruction. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.2.0 [R1 build 2004/12/20-12:00 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added bibliography support. +- Added glossary support. +- Added index support. +Bug fixes: +~~~~~~~~~~ +- Changed isbn element to as isbn and issn elements are + deprecated. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- Made cleaning: replaced remaining parameters that should be variables and + removed duplicate xsl:output element. +- Made the preface and appendix templates also match nested sections. It is more + user friendly because less error prone for the user. + +******************************************* +** ooo2dbk V1.1.3 [R1 build 2004/12/15-15:53 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Finally completely and cleanly fixed the hierarchy bug in preface and appendix + template (using generate-id()). +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.1.2 [R1 build 2004/12/13-09:04 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Made font-name matching on "Bitstream" be matching on full font name + "Bitstream Charter", since Bitstream is the name of font provider. +- Fixed some variables that were declared as params (remains from previous + code). +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.1.1 [R1 build 2004/12/10-13:13 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Fixed a bug introduced in V1.0.5 ("Not outputting empty para elements + anymore."): images or other elements present in para elements not having any + text in them were ignored. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.1.0 [R1 build 2004/12/10-10:37 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added support for "font-name" from OOo that could be used to mark fonts with + symbols. +- Added support for "border" styles of table cells. The border information is + passed as processing instructions that the following XSLT stylesheets will or + will not processed. +Bug fixes: +~~~~~~~~~~ +- +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.0.7 [R1 build 2004/12/08-17:29 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Adding support for cell alignment in tables. +Bug fixes: +~~~~~~~~~~ +- +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- Updated the docs. + +******************************************* +** ooo2dbk V1.0.6 [R1 build 2004/12/08-10:56 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Augmented the config.xml configuration file so that each "xslt-command" + element has now a "param-syntax" attribute. This is done because XSLT + processors have different command line options. ooo2dbk now deals better with + the different available XSLT processors. +Bug fixes: +~~~~~~~~~~ +- +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.0.5 [R1 build 2004/12/07-18:16 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added new generic support for both DocBook preface and appendix elements. +- Do not display not visible sections (text:display="none"). +- author elements are now generated inside an authorgroup element. +- Added support for jobtitle. +Bug fixes: +~~~~~~~~~~ +- Not outputting empty para elements anymore. + (bugs from previous authors). +- Used xsl:variable in many places where xsl:parameter was used + (bugs from previous authors). +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- Renamed all "articleinfo" strings into "metainfo" to have a generic approach. +- Moved away specific "collection" and "subcollection" markup. + +******************************************* +** ooo2dbk V1.0.4 [R1 build 2004/12/03-17:35 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- +Bug fixes: +~~~~~~~~~~ +- Fixed XSLT errors (using xsl:param instead of xsl:variable in some places) +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- Added new version of keywordsetContent + +******************************************* +** ooo2dbk V1.0.3 [R1 build 2004/12/03-10:46 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added an -xFILE/--xslt=FILE option to specify an alternative XSLT stylesheet + to be able to simply customize ooo2dbk.xsl by importing it from another + stylesheet. +- Added support for meta-information set via text:user-field-decl OOo elements. +Bug fixes: +~~~~~~~~~~ +- Made the ooo2dbk.xsl XSLT stylesheet be of version "1.0" instead of erroneously + being of version "1.1", because at the moment XSLT 1.1 is only a Working Draft + of the W3C. +- Added a template to support OOo "dc:title". +- Fix book validity bug: a book cannot have para elements outside a chapter. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- Now generating "DocBook XML V4.3". +- Created an HOWTO file. + +******************************************* +** ooo2dbk V1.0.2 [R1 build 2004/12/01-17:16 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added the -a/--article and -b/--book options to respectively produce + DocBook XML articles (default) or DocBook XML books. +Bug fixes: +~~~~~~~~~~ +- Renamed "ooo2dbk.py" into "ooo2dbk" as a standalone script should not have any + suffix. +- Moved the README.txt file at the root of the product. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.0.1 [R1 build 2004/12/01-12:34 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- Added a "-v/--verbose" option to the ooo2dbk.py script. +- Added support for superscript and subscript. +Bug fixes: +~~~~~~~~~~ +- +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- + +******************************************* +** ooo2dbk V1.0.0 [R1 build 2004/11/30-16:47 by madarche] + +Requires: +~~~~~~~~~ +- +New features: +~~~~~~~~~~~~~ +- The modified ooo2dbk is now distributed by Nuxeo as a product in itself and + not as PortalTransforms plugin. +- Added doc. +- Added -zFILE/--zipfile=FILE option for generating zipped archive of output + Docbook document with subobjecs (if any). +- Running ooo2dbk with sxw filename containing spaces without -d/--dbkfile + option like ./ooo2dbk /tmp/my doc one.sxw will result in generating output + Docbook filename with '_' instead of spaces, in our case: my_doc_one.docb.xml +- Added the support for appendix. +Bug fixes: +~~~~~~~~~~ +- When running ./oo2dbk.py /tmp/mydoc.sxw images were created in current + directory and output Docbook file in /tmp. Now if -d/--dbkfile is omitted, + all generated output is stored in current directory. +- Using -z/--zipfile option spontaneously led to arising UnicodeDecodeError + when writing to zip archive generated images. To avoid that string that + represents path to image(filesystem path and path in zipped archive), before + using in zip archive operations is encoded with locale preferred encoding + like: unicode(path_to_img).encode(locale.getpreferredencoding()). +- Running ooo2dbk with sxw filename containing spaces without -d/--dbkfile + option like ./ooo2dbk /tmp/my doc one.sxw led to confusion of xsltproc, + so it couldn't write to output file. Fixed with replacing in output Docbook + filename spaces with '_'. +- Added an extra test to check if there is at least a non-empty Abstract para + before outputting an abstract element in the generated DocBook. +- Fix appendix so that it does now contain text even if there is no title + hierarchy in the appendix. +New internal features: +~~~~~~~~~~~~~~~~~~~~~~ +- Using optparse module instead of old custom one for command line parsing. +- Thanks to optparse module and automatic 'help' generation old stuff for + 'help' handling is no longer necessary. +- Using standard python-mode.el formatting: 1 tab is replaced with 4 spaces all + over the code. +- Some renaming inside the code. + diff --git a/ooo2dbk/README.txt b/ooo2dbk/README.txt new file mode 100644 index 0000000..c261942 --- /dev/null +++ b/ooo2dbk/README.txt @@ -0,0 +1,202 @@ + +====== +README +====== + +:Revision: $Id$ + + +OOo2DBK is an OpenOffice.org document to DocBook XML converter. It can produce +both DocBook article and DocBook book documents. + +The online reference presenting all the available DocBook elements can is +http://docbook.org/tdg/en/html/ + +OOo2DBK can process files generated by both the OpenOffice.org 1.1.x series and +the OpenOffice.org 2.x series, thus supporting the ODT format. + + +Prerequisites +============= + +To run ooo2dbk on your system you need on your system: + + * Python 2.3 (because of the dependence to the optparse module) + + * any supported XSLT processor (check in config.xml) + ooo2dbk defaults to using the faster xsltproc program + http://xmlsoft.org/XSLT/xsltproc2.html But you can use any other XSLT + processor, such as Saxon. + + +Examples +======== + +1. To produce a DocBook XML article out of an OpenOffice.org document: +$ ooo2dbk --article --zipfile=document.zip document.sxw + +2. To produce a DocBook XML book out of an OpenOffice.org document: +$ ooo2dbk --book --zipfile=document.zip document.sxw + + +Styles +====== + +The following styles can be used in OpenOffice.org and map to the corresponding +DocBook tags: + +Abstract abstract +Acronym acronym +Attribution attribution +Author author +Authorblurb authorblurb +Bibliocoverage bibliocoverage +Bibliomisc bibliomisc +Bibliorelation bibliorelation +Bibliosource bibliosource +Blockquote blockquote +Citation citation +Command command +Computeroutput computeroutput +Copyright copyright +Corpauthor corpauthor +Definition element used for variablelist +Editor editor +Email email +Emphasis emphasis +Epigraph epigraph +Example literal +Filename filename +Firstname firstname +Frame element used for figure +Graphics element used for figure +Guillemets element used to mark quotes we don't want to treat +Heading title +Holder holder +Honorific honorific +Jobtitle jobtitle +Keyword keyword +Keywordset keywordset +Legalnotice legalnotice +Lineage lineage +Lineannotation lineannotation +Literal literal +Literallayout literallayout +Note note +Option option +Orgname orgname +Othercredit othercredit +Othername othername +Preformatted Text programlisting +ProgramListing programlisting +Pubdate pubdate +Pubsnumber pubsnumber +Quotations blockquote +Remark remark +Replaceable replaceable +Source Text literal +Strong Emphasis emphasis role="strong" +Subtitle subtitle +Surname surname +Teletype literal +Term term +Title title +Userentry userinput +User Entry userinput +Year year + + +Problems and debugging +====================== + +In case of problems run ooo2dbk with the "--verbose" option. + + +Is it possible to run ooo2dbk on Microsoft Windows ? +==================================================== + +If you get the following problem: + +C:\WINDOWS\Bureau\ooo2dbk-1.0.2-1>c:\python23\python ooo2dbk --book --zipfile=document.zip document.sxw + +Commande ou nom de fichier incorrect +Traceback (most recent call last): + File "ooo2dbk", line 587, in ? + exec_args() + File "ooo2dbk", line 131, in exec_args + deltemp=options.flatxml, xslParams=xslParams) + File "ooo2dbk", line 560, in convert + make_zip() + File "ooo2dbk", line 508, in make_zip + zarchive.write(sDocbookXML, pjoin(archive_top_dir, docbook_fname)) + File "C:\PYTHON23\lib\zipfile.py", line 391, in write + st = os.stat(filename) +OSError: [Errno 2] No such file or directory: 'C:\\WINDOWS\\Bureau\\ooo2dbk-1.0. +2-1\\document.docb.xml' + +The problem is that there is no 'xsltproc' executable installed. +To solve the problem you need to install it. + +1) Download: + - ftp://ftp.zlatkovic.com/pub/libxml/libxml2-2.6.15.win32.zip + - ftp://ftp.zlatkovic.com/pub/libxml/libxslt-1.1.12.win32.zip + - ftp://ftp.zlatkovic.com/pub/libxml/zlib-1.2.1.win32.zip + - ftp://ftp.zlatkovic.com/pub/libxml/iconv-1.9.1.win32.zip + +2) Create directory somewhere on filesystem, for example, c:\libxml + +3) Put c:\libxml into system PATH on windows +(On WinXP you can achieve this with following: Start -> Control Panel -> System, +then choose tab "Advanced" and press "Environment variables". You will see +"System variables", find there "Path" and append "c:\libxml" at the end) + +4) From first 3 above downloaded zip files copy _all_ contents of "bin" +directory into "c:\libxml". As for iconv-1.9.1.win32.zip - copy iconv.dll from +"lib" and "iconv.exe" from "util" into "c:\libxml". + +5) Restart shell from which you ran ooo2dbk (this will take into account +modified PATH) and try again. + +This has been tested with both Microsoft Windows XP (SP2) and Windows 2000. + +Creating standalone executable on Microsoft Windows +=================================================== + +You can build standalone console application with the help of 'py2exe' - +http://py2exe.sourceforge.net + +It's a version 0.6.3 at the moment of the writing. + +After installing py2exe execute in ooo2dbk source directory: + +python setup.py py2exe -b 1 + +As a result you'll get 'dist' directory containing: +library.zip, ooo2dbk.exe, w9xpopen.exe that should be distributed together +to run oo2dbk.exe + +Don't forget that you'll also need at least two additional files from source +distribution: ooo2dbk.xml and ooo2dbk.xsl for proper use of ooo2dbk.exe + +To make ooo2dbk.exe available system wide, put path to directory containing +that executable into system PATH variable. +Good luck! + +ooo2dbk along with a OpenOffice.org instance +============================================ + +If you want to use the OLE objects to image conversion feature you need to +launch the ooo2dbk script with the python shipped with OpenOffice.org. +Since OpenOffice.org 1.1.x series ship with Python 2.2 you need to take extra +steps to make this combination possible. + +The solution is to copy the Python 2.3 specific modules that are needed by +ooo2dbk to the OpenOffice.org shipped Python module location: +/usr/local/openoffice-1.1.4/program/python-core/lib$ cp /usr/lib/python2.3/optparse.py . +/usr/local/openoffice-1.1.4/program/python-core/lib$ cp /usr/lib/python2.3/textwrap.py . + + +.. Local Variables: +.. mode: rst +.. End: +.. vim: set filetype=rst: diff --git a/ooo2dbk/VERSION b/ooo2dbk/VERSION new file mode 100644 index 0000000..7f14295 --- /dev/null +++ b/ooo2dbk/VERSION @@ -0,0 +1,5 @@ +# BUNDLEMAN PRODUCT CONFIGURATION FILE +# do not edit this file +PKG_NAME=ooo2dbk +PKG_VERSION=2.1.0 +PKG_RELEASE=1 diff --git a/ooo2dbk/doc/ABOUT.txt b/ooo2dbk/doc/ABOUT.txt new file mode 100644 index 0000000..9d50f79 --- /dev/null +++ b/ooo2dbk/doc/ABOUT.txt @@ -0,0 +1,86 @@ + +=============================================== +OOo2DBK: Generating DocBook from OpenOffice.org +=============================================== + +:Authors: - Marc-Aurèle Darche + - Laurent Godard + +:Revision: $Id$ + +.. sectnum:: :depth: 4 +.. contents:: :depth: 4 + + +Presentation +============ + +OOo2DBK is an OpenOffice.org document (ODT and SXW) to DocBook XML converter. It +can produce both DocBook "article" and DocBook "book" documents. + +The online reference presenting all the available DocBook elements is +http://docbook.org/tdg/en/html/ + +ooo2dbk widely extends ooo2sdbk, written by Eric Bellot. This +version can still be found at http://www.chez.com/ebellot/ooo2sdbk/ + +A modified version of ooo2sdbk has also be done in 2003 by Stefan Rinke and can +be found at http://www.stefan-rinke.de/articles/publish/en/ + +Use the templates provided in the ooo directory of this package to create your own OOo +documents from which DocBook documents will be generated. +These templates (in French and English) contain all the information on +installing and using OOo2dbk. + +Features and changes over ooo2sdbk +================================== + + * DocBook support + o Generating "DocBook XML V4.3". + o Generating DocBook "article" or DocBook "book" documents based on user + choice, generated documents have the corresponding structure. + o Added new generic support for both DocBook preface and + appendix elements. + o Added support for superscript and subscript elements. + o Adding support for cell alignment in tables. + o Added support for "border" styles of table cells. The + border information is passed as processing instructions that the + following XSLT stylesheets are able to process. + o Added support for "font-name" from OOo that could be used + to mark fonts with symbols. + + * OpenOffice.org interactions + o Added support for meta-information set via + text:user-field-decl OOo elements. + o Do not display not visible sections (text:display="none"). + + * Options and configuration + o Added -zFILE/--zipfile=FILE option for generating zipped archive of output + DocBook document with subobjecs (if any). + o Augmented the config.xml configuration file so that each "xslt-command" + element has now a "param-syntax" attribute. This is done because XSLT + processors have different command line options. ooo2dbk now deals better + with the different available XSLT processors. + o Added an -xFILE/--xslt=FILE option to specify an alternative XSLT + stylesheet to be able to simply customize ooo2dbk.xsl by importing it from + another stylesheet. + o Added a "-v/--verbose" option to the ooo2dbk script. + +Download +======== + +Get the latest ooo2dbk snapshot from Nuxeo SVN repository: +https://svn.nuxeo.org/pub/OOo/ooo2dbk/trunk + +Bugs can be reported at http://svn.nuxeo.org/trac/pub/newticket +Reports must include the output of ooo2sdbk with the "--verbose" option and the +input OOo file. + +Improvements suggestions are welcomed, especially if they come with a diff +file and an input OOo example file. + + +.. Local Variables: +.. mode: rst +.. End: +.. vim: set filetype=rst: diff --git a/ooo2dbk/doc/TODO.txt b/ooo2dbk/doc/TODO.txt new file mode 100644 index 0000000..17b8a5e --- /dev/null +++ b/ooo2dbk/doc/TODO.txt @@ -0,0 +1,38 @@ +==== +TODO +==== + +:Authors: - Marc-Aurèle Darche + - Laurent Godard + +:Revision: $Id$ + +.. sectnum:: :depth: 4 +.. contents:: :depth: 4 + + +- Code cleaning: Remove the use of "global" variables. + +- File and image directory processing should be done in a temporary directory + rather than in the current directory (both when a single file or an archive + file is asked). + +- Rework the RPM generation so that it doesn't rely on any sudo or privileged + processings. + +- On Mandrake the default OpenOffice.org installation resides in + /usr/lib/openoffice so maybe the ooo2dbk.xml conf file of the RPM package + should reflect this. On another hand the default install of a stock + OpenOffice.org is in /opt/OpenOffice.org1.1.4. + +- ???? Automatically generates xslt and user defined textfields based on docbook possible metadatas (DTD ?) + +- Take jobtitle and quality correctly into naccount in the docbook.xsl + +- Deploy ooo2dbk as a module using distutils : need to rename to .py and create a caller script + + +.. Local Variables: +.. mode: rst +.. End: +.. vim: set filetype=rst: diff --git a/ooo2dbk/doc/howto-use_psmi.txt b/ooo2dbk/doc/howto-use_psmi.txt new file mode 100644 index 0000000..f0c9dbd --- /dev/null +++ b/ooo2dbk/doc/howto-use_psmi.txt @@ -0,0 +1,19 @@ +========================================== +Howto use PSMI for page orientation on PDF +========================================== + +1) Process book.xml to book.psmi using docbook-psmi.xsl + +$ xsltproc docbook-psmi.xsl book.xml > book.psmi + + +2) Process book.psmi to book.fo using docbook.xsl + +$ xsltproc docbook/fo/docbook.xsl book.psmi > book.fo + + +3) Process book.fo to book.pdf using an FO formater such as FOP or XEP + +$ xep -fo book.psmi book.pdf + + diff --git a/ooo2dbk/doc/ooo2dbk.1 b/ooo2dbk/doc/ooo2dbk.1 new file mode 100644 index 0000000..b08069d --- /dev/null +++ b/ooo2dbk/doc/ooo2dbk.1 @@ -0,0 +1,51 @@ +.\" Hey, EMACS: -*- nroff -*- +.TH OOo2Dbk 1 "January 7, 2005" +.SH NAME +OOo2Dbk \- program to convert OpenOffice.org-Writer (ODT and SXW) files to DocBook XML documents. +.SH SYNOPSIS +.B OOo2Dbk +.RI [ options ] " openoffice.org-file" +.br +.SH DESCRIPTION +This manual page documents briefly the +.B OOo2Dbk +commands. +.PP +.SH OPTIONS +This version of OOo2Dbk understands the following command line options. +.TP +.B \-h, \-\-help +Show summary of options. +.TP +.B \-cFILE, \-\-config=FILE +Use FILE as the file path for the program configuration file. Defaults to the global /etc/ooo2dbk.xml configuration file or to the ooo2dbk.xml configuration file in the ooo2dbk executable directory. +.TP +.B \-zFILE, \-\-zipfile=FILE +Use FILE as the filename for the generated ZIP archive +.TP +.B \-dFILE, \-\-dbkfile=FILE +Use FILE as the filename for the generated DocBook XML file. This option has no effect if the -z/--zipfile option is used. +.TP +.B \-a, \-\-article +Produce a DocBook XML article. This is the default. +.TP +.B \-b, \-\-book +Produce a DocBook XML book. +.TP +.B \-xFILE, \-\-xslt=FILE +Use FILE as the file path for the XSLT stylesheet. Defaults to the ooo2dbk.xsl stylesheet. +.TP +.B \-mNAME, \-\-cmdxslt=NAME +Use command NAME as the XSLT processor. Available command names are defined in OOo2Dbk /etc/ooo2dbk.xml file. Defaults to xsltproc. +.TP +.B \-f, \-\-flatxml +Preserve the intermediate OpenOffice.org XML file (global.xml) +.TP +.B \-v, \-\-verbose +Print additional information to stdout when running conversion. +.br +.SH AUTHOR +OOo2Dbk was written by Indesko (http://www.indesko.com/) +.PP +This manual page was written by Mohammed Adnène Trojette , +for the Debian project (but may be used by others). diff --git a/ooo2dbk/docbook-psmi.xsl b/ooo2dbk/docbook-psmi.xsl new file mode 100644 index 0000000..8a238d9 --- /dev/null +++ b/ooo2dbk/docbook-psmi.xsl @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + +Note: psmi not supported elements that are not direct descendants of +article, chapter, or appendix. An in this document with orient='land' or +<?landscape?> will not be flagged for landscaping through psmi. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ooo2dbk/images/img001.png b/ooo2dbk/images/img001.png new file mode 100644 index 0000000000000000000000000000000000000000..b37ad9e5fbc051b8931693c8f9114520aa8c4e85 GIT binary patch literal 27904 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 literal 0 HcmV?d00001 diff --git a/ooo2dbk/images/img003.png b/ooo2dbk/images/img003.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c3c645ab9af6318035b026dd86944b9ddc9114 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_aZL!=1#6zZjFSw=b9P0h32wc4#I>K z_7c-vlWWK&NisS`hK|eW{V(1h&hz;^&-3H+`FwwQQmyc2AW^s|00018F~?f}Y^$I4 zJi-4n)l|$>004e~m4yvX04R`^t1GK0Jyc#!o{f!7YjbN@ zXqXICW@2Ju_xmo|5KX;Lt*@)U<$nt-4#r#Hhlhr>wX`=kHtEH5XGdpN2a6I#kvlCn zKR17HbntWTU;Rtq|CWG)Jv9RW5Tabc8ry`=J|T+a73qjeUrdbEO}hLx>e!JWg!yV( zz#7Gisv)@k``J!QMy#derX*J}QjLO`xEsVgddue?_s|NXbnX!$jfZ?Q1>08|2V&RC{G~3i5Vh`$mXsewJ6gT|>Z(z(~hzr)TGn*F~pmQcK_pu(oB_kw?$o8AsAL8`0-Fz)u7wu;=uf2bds_jkX49P5w6Umt+Hk5=2|=O5LWDbq=bB7$&MNRhs~fnOks{jOp@M|8n;-Kjhc0S>D` zEa5zCi7S?E1U;UrolT#flKzT4}_uGYTJa z!3pLOs>-J_t~2^0UikO*Oh3Bk}J#JiGFx~`RzsyVQ|rp^kuTYfR- z+TQh-{gWieEYn)v!k8dYq)6&fEsi_JFq{HcMDf{=>^=7&b{teVzf=ZFwvuI2RQ#BV z!RJ37Xz}Ax5*Uq3nm+sc;;xg# z_#SXKX)SX}lV&gE&KZT)yq_}XPye>!^XtJooPNhL-Ig%l-J}tCD2)t~UF##Kf{EjA zN@yZI9HET!&w$(`>{xD!|9~7dDP78K{A5NO@9Kx^84_l_CtHk~g@o|x65rC1(L^2F z8?h+1mx&JAZKVTFIV52MW@+a`dx<4Vwb<|F?MgiQE2ZXj*)lpwiX}7DlN2EL8~ud4 zUTZkCZTN`5DPiUS%gW#TJpU76&veH0p<7qk)zotAAXJ?)gQ-&FlEhY#ubGyxHkssU z#?V4`s9v=87YxDs@B25NUcEkEH6LRvlfikqc(!tlvs9mt@``%nKerWMn5Sy@ylw?@ z3d&p^JIm?yH8Gx2+1W}vManT|aZ?tzcwlsMzO>3F z*t(hOdPL~7%kS09S1SLxSM=16OCvIF*ZtDu-i;2gL-SpE-3AXg%eN? zwy+t9qo#+0)rHcvq>XMDm?lMHIa~`$B_08ZXm{?6DNaTe(&x=2I|wgM0`i#49{Owx zp6=sCFNrHTrlIB5FRn$tjxg|vbTXRF8qa#RzYWU|-5vG0A9isa5Ir6*CHt3so@r*V zJbpVie8*!!lkzU!0$&1@9B zg$%~6w6sw~hl;DxN_v{xWo!&E9!9E1?Nr%g7$1+qYTiPAvC!B{$8aW@c@DrY_O!2J d+q6T0_X?->9PF$?HERER$tyTKw%)`o{vTbrYZCwf literal 0 HcmV?d00001 diff --git a/ooo2dbk/ole2img.py b/ooo2dbk/ole2img.py new file mode 100644 index 0000000..435fec3 --- /dev/null +++ b/ooo2dbk/ole2img.py @@ -0,0 +1,283 @@ +#!/usr/bin/python +# Copyright (c) 2004-2005 Nuxeo SARL +# Authors: +# Laurent Godard +# M.-A. Darche (Nuxeo) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published +# by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. +# +# See ``COPYING`` for more information +# +# $Id$ + +# UNO +import uno, unohelper +from com.sun.star.beans import PropertyValue +from com.sun.star.connection import NoConnectException + +import sys +import getopt +import os.path +from os import sep +from os import remove +import time + +VERSION = '0.6' + +#filter parameters +FILTER_PARAMS = { + 'png': ('.png', 'image/png'), + 'svg': ('.svg', 'image/svg+xml'), + 'jpg': ('.jpg', 'image/jpeg'), + 'tiff': ('.tiff', 'image/tiff'), + 'eps': ('.eps', 'application/postscript'), + 'bmp-ms': ('.bmp', 'image/x-MS-bmp'), + 'bmp-portable': ('.bmp', 'image/x-portable-bitmap'), + 'gif': ('.gif', 'image/gif'), + } + + +def usage(): + lst_formats = str(FILTER_PARAMS.keys()) + print "usage: ole2img [options] openoffice.org-file" + print + print "options:" + print " --target target directory (mandatory)" + print " --oooserverhost the name of server running OpenOffice.org (defaults to localhost)" + print " --oooserverport the port of the server running OpenOffice.org (defaults to 2002)" + print " --format exported image format (defaults to png)" + print " %s" % lst_formats.replace("'","") + print " --version show version and exit" + print " --help show this help message and exit" + print + print "Example:" + print "~/OpenOffice.org1.1.2/program/python ole2img --format png --target ~/outputdir/ ~/exampleFile.sxw" + print + print "OpenOffice.org must run in listen mode" + print './soffice "-accept=socket,host=localhost,port=2002;urp;"' + + +def version(): + print "Converts all OLE objects of a .sxw OpenOffice.org document as images in a target directory" + print "ole2img version: " + VERSION + + +def exec_args(): + """Analyze command line arguments. + """ + source = None + target = None + # Default server having running OpenOffice.org instance(s) is localhost + oooserver_host = 'localhost' + oooserver_port = '2002' + # Default format is PNG + format = 'png' + try: + opts, args = getopt.getopt(sys.argv[1:], '', + ['target=', + 'oooserverhost=', + 'oooserverport=', + 'format=', + 'version', 'help']) + except: + usage() + # Command line syntax errors return the error code "2" + sys.exit(2) + + if len(args) == 1: + source = args[0] + + for opt in opts: + if opt[0] == '--target': + target = opt[1] + elif opt[0] == '--oooserverhost': + oooserver_host = opt[1] + elif opt[0] == '--oooserverport': + oooserver_port = opt[1] + elif opt[0] == '--format': + format = opt[1] + elif opt[0] == '--version': + version() + sys.exit(0) + elif opt[0] == '--help': + usage() + sys.exit(0) + error = False + + if source == None: + error = True + print "\nOne and only one OpenOffice.org file must be given" + else: + source = os.path.abspath(os.path.expanduser(source)) + if not os.path.isfile(source): + error = True + print "\n--source Invalid file" + + if target == None: + error = True + print "\n--target Missing Parameter" + else: + target = os.path.abspath(os.path.expanduser(target)) + if not os.path.isdir(target): + error = True + print "\n--target Invalid directory" + + if not FILTER_PARAMS.has_key(format): + error = True + print "\n--format Undefined value" + + if error: + usage() + # Command line syntax errors return the error code "2" + sys.exit(2) + + #add Os separator if missing to target + if target[len(target) - 1] != os.sep: + target += os.sep + + return source, target, oooserver_host, oooserver_port, format + + +def ole2img(source, target, + oooserver_host='localhost', oooserver_port='2002', format='png'): + #fileter parameters + extension, theFilter = FILTER_PARAMS[format] + + #Connect to OOo + + # get the uno component context from the PyUNO runtime + localContext = uno.getComponentContext() + # create the UnoUrlResolver + resolver = localContext.ServiceManager.createInstanceWithContext( + 'com.sun.star.bridge.UnoUrlResolver', localContext ) + + # connect to the running office + try: + print "Connecting to server %s:%s ..." % (oooserver_host, oooserver_port) + ctx = resolver.resolve( + 'uno:socket,host=%s,port=%s;urp;StarOffice.ComponentContext' + % (oooserver_host, oooserver_port)) + except NoConnectException: + print "Unable to connect to OpenOffice.org instance" + sys.exit(1) + + smgr = ctx.ServiceManager + + # get the central desktop object + desktop = smgr.createInstanceWithContext('com.sun.star.frame.Desktop', ctx) + + # Now connected to OOo + + # load source file + args = (PropertyValue('Hidden', 0, True, 0),) + url = unohelper.systemPathToFileUrl(source) + sourceDoc = desktop.loadComponentFromURL(url, '_blank', 0, args) + + # Hack/Bug : Needed to sanitize the object hierarchy for use with CurrentController + url = unohelper.systemPathToFileUrl(target + 'temp.sxw') + sourceDoc.storeToURL(url,()) + os.remove(target + 'temp.sxw') + + oGraphic=smgr.createInstanceWithContext( + 'com.sun.star.drawing.GraphicExportFilter', ctx) + + #dispatcher for copy-paste + dispatcher = smgr.createInstanceWithContext( + 'com.sun.star.frame.DispatchHelper', ctx) + + #creates an hidden draw docuement + args = (PropertyValue('Hidden', 0, True, 0),) + url = 'private:factory/sdraw' + drawDoc = desktop.loadComponentFromURL(url, '_blank', 0, args) + + theOleObjects = sourceDoc.EmbeddedObjects + + for i in range(theOleObjects.Count): + oleObject = theOleObjects.getByIndex(i) + print oleObject.Name + # Selection + sourceDoc.CurrentController.select(oleObject) + + # XXX : OOo + # strange random bug on importing documents from previous OOo version + # sometimes the current object may not be selected + # the selection remains on the previous in the loop + + # May be not needed any more as done previously ? + + # Verify the selection is ok + obj = sourceDoc.CurrentController.getSelection() + if obj.Name != oleObject.Name: + # Save the file and select again the object + # Updates the object and the can be selected + url = unohelper.systemPathToFileUrl(target + 'temp.sxw') + sourceDoc.storeToURL(url,()) + os.remove(target + 'temp.sxw') + sourceDoc.CurrentController.select(theOleObjects.getByIndex(i)) + obj = sourceDoc.CurrentController.Selection + + # if the previous did not work + # creates an image telling a problem occured + if obj.Name != oleObject.Name: + print "unable to process " + oleObject.Name + drawingShape = drawDoc.createInstance("com.sun.star.drawing.TextShape") + theSapeSize = drawingShape.Size + drawDoc.DrawPages.getByIndex(0).add(drawingShape) + theSapeSize.Width = 5000 + theSapeSize.Height = 2500 + drawingShape.setSize(theSapeSize) + drawingShape.String = oleObject.Name + " - Unable to process OLE object" + drawingShape.CharColor = 255 + drawingShape.CharHeight = 8 + objDraw = drawingShape + else: + # Normal behaviour + # Copy + dispatcher.executeDispatch(sourceDoc.CurrentController.Frame, + '.uno:Copy', + '', + 0, + ()) + # Paste into draw + dispatcher.executeDispatch(drawDoc.CurrentController.Frame, + '.uno:Paste', + '', + 0, + ()) + + # get draw object + objDraw = drawDoc.CurrentController.Selection + + # Export + oGraphic.setSourceDocument(objDraw) + url = unohelper.systemPathToFileUrl(target + oleObject.Name + extension) + argsExport = (PropertyValue('URL' , 0 , url, 0 ), + PropertyValue('MediaType' , 0 , theFilter, 0 )) + oGraphic.filter(argsExport) + + # Close files + drawDoc.close(True) + sourceDoc.close(True) + + +# Shell access +if __name__ == "__main__": + startTime = time.time() + source, target, oooserver_host, oooserver_port, format = exec_args() + print "Exporting into %s format to target %s..." % (format, target) + ole2img(source, target, oooserver_host, oooserver_port, format) + endTime = time.time() + duration = round(endTime - startTime, 2) + print 'duration : %s sec' % duration diff --git a/ooo2dbk/ooo2dbk-fo.xsl b/ooo2dbk/ooo2dbk-fo.xsl new file mode 100644 index 0000000..6b14d07 --- /dev/null +++ b/ooo2dbk/ooo2dbk-fo.xsl @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + center + after + + + Unexpected valign value: + + , center used. + + center + + + + + + + + + + + + + + + + + + + + + diff --git a/ooo2dbk/ooo2dbk.odf.xsl b/ooo2dbk/ooo2dbk.odf.xsl new file mode 100755 index 0000000..90695ae --- /dev/null +++ b/ooo2dbk/ooo2dbk.odf.xsl @@ -0,0 +1,4367 @@ + + +]> + + + + + + + + + + +book + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + de + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:apply-templates/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: Title hierarchy is wrong, section title is in bad position. + + + + + + + + + + + + + + + + + + + + + ERROR: Section title should not be in a cell. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      +
                      +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Address + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:apply-templates/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:apply-templates/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="$prefaceTitle"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="$appendixTitle"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <ulink> + <xsl:attribute name="url"><xsl:value-of select="$url"/></xsl:attribute> + <xsl:value-of select="@text:title"/> + </ulink> + + + + <xsl:value-of select="@text:title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="$glossaryTitle"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + + + + +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + + +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + <xsl:apply-templates/> + + + + + + + + + + + + + + + + + + <xsl:apply-templates/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + continues + + + restarts + + + + + + + + + loweralpha + + + upperalpha + + + arabic + + + lowerroman + + + upperroman + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + strong + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top + + + + + + + + + + + + + + + + + + + + + +
                      + + + + + <xsl:apply-templates select="text:p"/> + + + + + + + + + +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top + + + + + + + + + WARNING ! Incorporated graphics are not supported. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      + + + + + + <xsl:apply-templates select="text:sequence/following-sibling::node()"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1; + + + + + + + + + yes + no + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + 0 + + + + + + + + false + + + + + + + + 0 + + + + + + + + 1 + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      diff --git a/ooo2dbk/ooo2dbk.py b/ooo2dbk/ooo2dbk.py new file mode 100755 index 0000000..235057a --- /dev/null +++ b/ooo2dbk/ooo2dbk.py @@ -0,0 +1,940 @@ +#!/usr/bin/python +# (C) Copyright 2003-2007 Nuxeo SAS +# (C) Copyright 2002 Eric Bellot +# +# Authors: +# M.-A. Darche (Nuxeo) +# Ruslan Spivak (Nuxeo) +# Eric Bellot +# Laurent Godard (lgodard@indesko.com) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as published +# by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. +# +# See ``COPYING`` for more information +# +# $Id$ + +import zipfile +import os, os.path, sys +from string import join, split, find +import codecs +from xml.dom import minidom +import time, base64 +import re +import xml.sax +import shutil +import locale +from optparse import OptionParser + +VERSION = '2.0' + +CONF_FILE_NAME = 'ooo2dbk.xml' + +# OpenOffice.org canonical XML files +OOO_META_FILE_NAME = 'meta.xml' +OOO_STYLES_FILE_NAME = 'styles.xml' +OOO_CONTENT_FILE_NAME = 'content.xml' + +DOCBOOK_FILE_SUFFIX = '.docb.xml' + +# ZIP entries paths are stored in "code page 437" encoding (cp437). +# One cannot use UTF-8 for the ZIP entries paths. +# Read [ 878120 ] Zipfile archive name can't be unicode +# https://sourceforge.net/tracker/?func=detail&atid=105470&aid=878120&group_id=5470 +ZIP_FILE_ENCODING = 'cp437' + +# Initialization (attempt to remove some global statements) +oooVersion = 'ooo1' +docbookXSL = None +verbose = True +zipfile_target = None +docbook_top_element = 'book' +process_ole_objects = False + +def execArgs(): + """Analyze command line arguments. + """ + usage = "usage: %prog [options] openoffice.org-file" + parser = OptionParser(usage=usage, version="%prog " + VERSION) + + parser.add_option('-z', '--zipfile', + action='store', + dest='zipfile_target', + type='string', + metavar='FILE', + default=None, + help="Use FILE as the filename for " + "the generated ZIP archive") + + parser.add_option('-d', '--dbkfile', + action='store', + dest='dbkfile', + type='string', + metavar='FILE', + default=None, + help="Use FILE as the filename for " + "the generated DocBook XML file. " + "This option has no effect if the " + "-z/--zipfile option is used.") + + parser.add_option('-b', '--book', + action='store_true', + dest='book', + default=False, + help="Produce a DocBook XML book. " + "This is the default.") + + parser.add_option('-a', '--article', + action='store_true', + dest='article', + default=False, + help="Produce a DocBook XML article.") + + parser.add_option('--ole', + action='store_true', + dest='ole', + default=False, + help="Include potential OLE objects as images in the " + "resulting DocBook XML document. This option needs that " + "a listening OpenOffice.org instance be running.") + + parser.add_option('-c', '--config', + action='store', + dest='config', + type='string', + metavar='FILE', + default=None, + help="Use FILE as the file path for the program configuration file. " + "Defaults to the global /etc/%s configuration file or to the " + "%s configuration file in the ooo2dbk executable directory." + % (CONF_FILE_NAME, CONF_FILE_NAME)) + + parser.add_option('-x', '--xslt', + action='store', + dest='xslt', + type='string', + metavar='FILE', + default=None, + help="Use FILE as the file path for the XSLT stylesheet. " + "Defaults to the ooo2dbk ooo2dbk.xsl stylesheet.") + + parser.add_option('-m', '--cmdxslt', + action='store', + dest='cmdxslt', + type='string', + metavar='NAME', + default=None, + help="Use command NAME as the XSLT processor. " + "Available command names are defined in the " + "ooo2dbk configuration file. " + "Defaults to xsltproc.") + + parser.add_option('-f', '--flatxml', + action='store_false', + dest='flatxml', + default=True, + help="Preserve the intermediate OpenOffice.org " + "XML file (global.xml)") + + parser.add_option('-v', '--verbose', + action='store_true', + dest='verbose', + default=False, + help="Print additional information to stdout " + "when running conversion") + + if len(sys.argv) < 2: + parser.print_help() + # Command line syntax errors return the error code "2" + sys.exit(2) + + (options, args) = parser.parse_args() + + if len(args) != 1: + parser.error("incorrect number of arguments") + + ooo_file_path = args[0] + + if options.book: + docbook_top_element = 'book' + elif options.article: + docbook_top_element = 'article' + else: + docbook_top_element = 'book' + xslParams = [] + xslParams.append('topElementName') + xslParams.append(docbook_top_element) + + process_ole_objects = options.ole + + convert(ooo_file_path, + conf_file_path=options.config, + command=options.cmdxslt, + xslt_file_path=options.xslt, + xslParams=xslParams, + docbook_file_path=options.dbkfile, + deltemp=options.flatxml, + verbose=options.verbose, + zipfile_target=options.zipfile_target, + docbook_top_element=docbook_top_element, + process_ole_objects=options.ole, + docbookXSL=None, + ) + return + +# --------- +# Utilities +# --------- + +def getModulePath(): + """Return the path of the directory in which the ooo2dbk executable resides. + """ + moduleFullname = os.path.abspath(execArgs.func_code.co_filename) + modulePath = os.path.split(moduleFullname)[0] + return modulePath + +def fileExist(file): + if file != '': + return os.path.isfile(file) + else: + print "Bad filename: ", file + sys.exit(1) + +def writeFile(file,strContent): + b = open(file, 'w') + b.write(strContent) + b.close() + + +def verifSys(): + """Current system identification. + """ + global preferred_encoding + preferred_encoding = locale.getpreferredencoding() + + global currentSys + if sys.platform == 'win32': + currentSys = 'windows' + else: + currentSys = 'unix' + + +def verifPath(path): + """Syntax path verification. + """ + global currentSys + if currentSys == 'windows': + modPathWin = re.compile(r"^(([a-zA-Z]:\\)?|(\.\.\\)*)([^\?:/\*\"<>\|]+[^\s\?:/\*\"<>\|]\\)*[^\?:/\*\"<>\|]+(\.[a-zA-Z0-9]+)?$") + verifPath = modPathWin.match(path) + if currentSys == 'unix': + modPathUnix = re.compile(r"^(~|(\.\./)*)?([^\\\?:\*\"<>\|]+[^\\\s\?:\*\"<>\|]/)*[^\\\?:\*\"<>\|]+(\.[a-zA-Z0-9]+)*$") + verifPath = modPathUnix.match(path) + if verifPath == None: + print "Bad path :\n", path + sys.exit(1) + else: + return verifPath.group() + + +def createDirectory(path): + drive = '' + if currentSys == 'windows' and os.path.isabs(path): + dualWin = os.path.splitdrive(path) + drive = dualWin[0] + path = dualWin[1][1:] + listDir = split(path, os.sep) + i = 1 + while i <= len(listDir): + testPath = join(listDir[:i], os.sep) + if drive != '': + testPath = join([drive, testPath], os.sep) + if os.path.isdir(testPath) == 0: + os.mkdir(testPath) + i += 1 + +# -------- +# SETTINGS +# -------- + +def getXSLfile(oooVersion): + + # Using the XSLT stylesheets specified in the CONF_FILE_NAME file + stylesheet_file_name = getConfigValue('xslt-stylesheet', + 'stylesheetPath', + name=oooVersion) + stylesheet_file_name = verifPath(stylesheet_file_name) + if stylesheet_file_name == None: + print "Bad filename %s for 'xslt-stylesheet' %s in '%s'" % ( + stylesheet_file_name, + oooVersion, + CONF_FILE_NAME, + ) + + xsltfile = os.path.join(getModulePath(), stylesheet_file_name) + + return xsltfile + +def setConfFileSettings(conf_file_path=None): + global configXML + global configElts, imgRelDir, imgRootName + global oooserver_host, oooserver_port + global ole_img_format, ole2img_script_path, ooopython_path + + # Configuration file + # look at options.config priorities for parameters file + # 1- c file.xml + # 2- /etc/ooo2dbk.xml + # 3- ooo2dbk.xml in the cuurent directory + if conf_file_path is not None: + configXML = conf_file_path + else: + conf_file_path_global = os.path.join('/etc', CONF_FILE_NAME) + if os.path.isfile(conf_file_path_global): + configXML = conf_file_path_global + else: + configXML = os.path.join(getModulePath(), CONF_FILE_NAME) + + configParse = minidom.parse(configXML) + configDocElt = configParse.documentElement + eltsParse = configDocElt.childNodes + configElts = [] + for node in eltsParse: + if node.nodeType == node.ELEMENT_NODE: + lenAtt = node.attributes.length + dictAtt = {} + i = 0 + while i < lenAtt: + att = node.attributes.item(i) + dictAtt[att.name] = att.value + i += 1 + tupleElt = (node.nodeName, dictAtt) + configElts.append(tupleElt) + + + + # Images relative directory + imgRelDir = getConfigValue('images', 'imagesRelativeDirectory') + verifPathIRD = re.match(r"^[a-zA-Z0-9]+$", imgRelDir) + if verifPathIRD == None: + msg = ("Only one depth relative directory (no '%s') " + "and only alphanum chars for 'imagesRelativeDirectory' in '%s'\n" + "Actual name is : '%s'" + % (os.sep, CONF_FILE_NAME, imgRelDir)) + print msg + sys.exit(1) + # Images root name + imgRootName = getConfigValue('images', 'imageNameRoot') + verifPathIR = re.match(r"^[a-zA-Z0-9]+$", imgRootName) + if verifPathIR == None: + print "Only alphanum chars for 'imageNameRoot' in '%s'" % CONF_FILE_NAME + print "Actual name is :", imgRootName + sys.exit(1) + + oooserver_host = getConfigValue('oooserver', 'host') + oooserver_port = getConfigValue('oooserver', 'port') + ole_img_format = getConfigValue('ole', 'imgFormat') + ole2img_script_path = getConfigValue('ole', 'scriptPath') + ooopython_path = getConfigValue('ooopython', 'path') + + +def getConfigValue(element, attribute, name=''): + """ + Return from the CONF_FILE_NAME file the value of the specified attribute + ('command', 'param-syntax', etc.) for the specified element type + 'xslt-command', 'xslt-stylesheet', etc.) with its 'name' attribute having + the name value. + """ + global configElts + value = '' + i = len(configElts) - 1 + while i >= 0 : + elt = configElts[i] + if name != '': + if elt[0] == element and elt[1]['name'] == name: + value = elt[1][attribute] + else: + # We take the default element + if elt[0] == element: + value = elt[1][attribute] + i = i - 1 + if value != '': + return value + else: + if name != '': + print ("There isn't any value for this parameter. " + "There should be an error in your %s." % CONF_FILE_NAME) + sys.exit(1) + + +def setUserSettings(ooofile, docbook, command, imagesrew, deltemp, dtd, + xslt_file_path, xslParams, verbose): + global docOOoSXW, docbookXML, globalXML + global imgRelDir, imgAbsDir, rewriteImg + global XSLCmdTemplate, dtdPublic, dtdSystem, XSLParams + + # OpenOffice.org filename + ooofile = verifPath(ooofile) + if fileExist(ooofile) == 0: + errorMsg = ("\n>> ERROR : Incorrect OpenOffice.org file : \n>> " + + ooofile + "\n") + print errorMsg + sys.exit(1) + else: + docOOoSXW = ooofile + # DocBook filename + if docbook is not None: + docbook = verifPath(docbook) + path = os.path.split(docbook)[0] + docbookXML = docbook + else: + OOoSplit = os.path.split(docOOoSXW) + #path = OOoSplit[0] + # This line will result producing subobjects(images) and + # OOo & DocBook xml under directory where ooo2dbk.py resides + #path = os.path.abspath(os.path.dirname(__file__)) + # This line will result producing subobjects(images) and + # OOo & DocBook xml under directory from which ooo2dbk.py was launched + path = os.getcwd() + rootName = os.path.splitext(OOoSplit[1])[0] + docbookXML = os.path.join(path, rootName) + DOCBOOK_FILE_SUFFIX + # Replace spaces in Writer document name with '_' + docbookXML = re.sub('\s', '_', docbookXML) + # Destination directory + if path != '' and os.path.isdir(path) == 0: + createDirectory(path) + # Temporary files names + if deltemp == 0: + globalXML = os.path.join(path, 'global.xml') + else: + import tempfile + tempfile.tempdir = path + globalXML = tempfile.mktemp('g.xml') + + # Images Directory + imgAbsDir = os.path.join(toUnicode(path), imgRelDir) + + # Force image rewriting (0|1) + rewriteImg = imagesrew + + # XSL processor command + if command is not None: + XSLCmdTemplate = getConfigValue('xslt-command', 'command', command) + else: + XSLCmdTemplate = getConfigValue('xslt-command', 'command') + + # DTD + if dtd is not None: + dtdPublic = getConfigValue('dtd', 'doctype-public', dtd) + dtdSystem = getConfigValue('dtd', 'doctype-system', dtd) + else: + dtdPublic = getConfigValue('dtd', 'doctype-public') + dtdSystem = getConfigValue('dtd', 'doctype-system') + + # XSLT stylesheet + if xslt_file_path is not None: + docbookXSL = xslt_file_path + + # XSLT Params + if xslParams is not None: + if command is not None: + param_syntax = getConfigValue('xslt-command', 'param-syntax', + command) + else: + param_syntax = getConfigValue('xslt-command', 'param-syntax') + # Retrieve the XSLT params and set them according to the param syntax. + # This is done because XSLT processors have different command line + # options. + #XSLParams='' + #XSLParams = ("%s" % (param_syntax)) % tuple(xslParams) + if xslParams != 0: + XSLParams = xslParams + else: + XSLParams = " " + print "XSL-Parameter:" + XSLParams + else: + XSLParams = ' ' + if verbose: + print " - xslParams = %s" % xslParams + print " - param_syntax = %s" % param_syntax + print " - XSLParams = %s" % XSLParams + + +def initializeSets(ooo_file_path, docbook, command, imagesrew, deltemp, dtd, + conf_file_path, xslt_file_path, xslParams, verbose): + verifSys() + setConfFileSettings(conf_file_path) + setUserSettings(ooo_file_path, docbook, command, imagesrew, deltemp, dtd, + xslt_file_path, xslParams, verbose) + +# -------------------- +# Conversion functions +# -------------------- + +def extractOooArchive(docOOoSXW, XMLFile): + """Generic XML files extraction. + """ + # Checking that the OOo file is truly of the ZIP format + if zipfile.is_zipfile(docOOoSXW): + zip_file = zipfile.ZipFile(docOOoSXW, 'r') + # Listing the file content + contentListZip = zip_file.namelist() + # Checking that a "content.xml" file is truly present + for i in contentListZip: + if i == XMLFile: + # If "content.xml" is truly present, we open it. + # The result, "docOOoXML" is the content as text. + docOOoXMLExist = 1 + strOOoXML = zip_file.read(XMLFile) + zip_file.close() + return strOOoXML + +def listChildNodes(docOOoSXW, XMLFile, ooo_file_path, verbose): + """Extract and parse Zip XML files for concat. + """ + # Extract and parse XML file + strXML = extractOooArchive(docOOoSXW, XMLFile) + XMLparse = minidom.parseString(strXML) + rootNode = XMLparse.documentElement + vChildNodes = rootNode.childNodes + # Images treatment + if XMLFile == OOO_CONTENT_FILE_NAME: + global dictImg, myZip, numImg, dictNamespace + numImg = 0 + dictImg = {} + dictNamespace = {} + myZip = zipfile.ZipFile(docOOoSXW, 'r') + # Creating the directory where the images will be dropped. + # The exported OLE images go in this directory too. + if not (os.path.exists(imgAbsDir) + and os.path.isdir(imgAbsDir)): + os.mkdir(imgAbsDir) + if process_ole_objects: + cmd = (('%s %s --target "%s" ' + '--oooserverhost %s --oooserverport %s ' + '--format %s "%s"') + % ( + ooopython_path, + ole2img_script_path, + imgAbsDir, + oooserver_host, oooserver_port, + ole_img_format, ooo_file_path)) + if verbose: + print cmd + os.system(cmd) + replaceImageNode(vChildNodes) + myZip.close() + # Extract all root element's childs + listChildElts = [] + for node in vChildNodes: + if node.nodeType == node.ELEMENT_NODE: + listChildElts.append(node) + return listChildElts + + +def replaceImageNode(vChildNodes): + """Replace the incorporated images links by the new images links + and extract and copy all incorporated images. + XXX: Why renaming images (apart from making their path relative)? + Please add comment if you know. + """ + global numImg + for node in vChildNodes: + if node.nodeName == 'draw:image': + hRefValue = node.attributes['xlink:href'].value + if find(hRefValue, 'Pictures/', 0) != -1: + nameImgOld = os.path.split(hRefValue)[1] + + # XXX: What is this block for? Please add comment if you know. + if dictImg.has_key(nameImgOld): + node.attributes['xlink:href'].value = dictImg[nameImgOld] + else: + extImg = os.path.splitext(nameImgOld)[1] + numImg += 1 + nameImgNew = imgRootName + "%03i" % numImg + extImg + hrefImgNew = os.path.join(imgRelDir, nameImgNew) + pathImgNew = os.path.join(imgAbsDir, nameImgNew) + if hRefValue.startswith('#'): + # OOo 1 + pathImgZip = hRefValue[1:] + else: + # OOo 2 + pathImgZip = hRefValue + zipImg = myZip.read(pathImgZip) + if os.path.isfile(pathImgNew) and rewriteImg: + os.remove(pathImgNew) + if not os.path.isfile(pathImgNew): + imgNew = open(pathImgNew, 'wb') + imgNew.write(zipImg) + imgNew.close() + dictImg[nameImgOld] = hrefImgNew + node.attributes['xlink:href'].value = dictImg[nameImgOld] + else: + pass + + # XXX: What is this block for? Please add comment if you know. + if node.hasChildNodes(): + wChilNodes = node.childNodes + replaceImageNode(wChilNodes) + + +def getGlobalRootHead(sourcefile, XMLFile): + + strXML = extractOooArchive(docOOoSXW, XMLFile) + XMLparse = minidom.parseString(strXML) + rootNode = XMLparse.documentElement + + if rootNode.attributes['xmlns:office'].value == 'http://openoffice.org/2000/office': + oooVersion = 'ooo1' + elif rootNode.attributes['xmlns:office'].value == 'urn:oasis:names:tc:opendocument:xmlns:office:1.0': + oooVersion = 'ooo2' + + if oooVersion == 'ooo1': + # OpenOffice.org 1.x + globalRootHead = """\ + + + +""" + + elif oooVersion == 'ooo2': + # OpenOffice.org 2.x - OpenDocument + globalRootHead = """\ + + +""" + + globalRootFoot = """\ + +""" + + + return globalRootHead, globalRootFoot, oooVersion + +def createGlobalXML(globalFile, ooo_file_path, verbose): + """ + Create a global XML file by concatening the different XML files contained + within a .sxw OOo file (meta.xml, styles.xml, content.xml). + """ + # First let's delete any previous images directory, because if we don't + # delete it there might be a previous directory with content in it and we + # don't want to get this unrequested content in a generated archive. + if os.path.exists(imgAbsDir): + shutil.rmtree(imgAbsDir) + + globalRootHead, globalRootFoot, oooVersion = getGlobalRootHead(docOOoSXW, + OOO_META_FILE_NAME) + globalRootStr = globalRootHead + globalRootFoot + + globalStrParse = minidom.parseString(globalRootStr) + globalRoot = globalStrParse.documentElement + metaListElts = listChildNodes(docOOoSXW, OOO_META_FILE_NAME, ooo_file_path, verbose) + stylesListElts = listChildNodes(docOOoSXW, OOO_STYLES_FILE_NAME, ooo_file_path, verbose) + contentListElts = listChildNodes(docOOoSXW, OOO_CONTENT_FILE_NAME, ooo_file_path, verbose) + globalListElts = metaListElts + stylesListElts + contentListElts + for node in globalListElts: + globalRoot.appendChild(node) + strXML = globalRoot.toxml() + listLine = split(strXML, '\n')[1:] + strXMLNS = join([globalRootHead, join(listLine, u"\n")], u"\n") + fileXML = codecs.open(globalFile, 'w', 'utf-8') + fileXML.write(strXMLNS) + fileXML.close() + + return oooVersion + + +def tempFilesDelete(deltemp): + if deltemp == 1: + os.remove(globalXML) + + +def getXsltCommand(input_file_path, output_file_path, stylesheet, verbose): + """Return the actual XSLT processing command. + """ + global XSLCmdTemplate + cmd = XSLCmdTemplate + gListVar = ['%o', '%i', '%s', '%p', '%y', '%v'] + listVar = [] + for var in gListVar: + if find(cmd, var) != -1: + listVar.append(var) + for var in listVar: + varSplit = split(cmd, var) + if var == '%o': + # Note that the file path has to be protected by "" in case it + # contains special characters such as spaces. + varSplit = '%s"%s"%s' % (varSplit[0], toUnicode(output_file_path), varSplit[1]) + elif var == '%i': + # Note that the file path has to be protected by "" in case it + # contains special characters such as spaces. + varSplit = '%s"%s"%s' % (varSplit[0], toUnicode(input_file_path), varSplit[1]) + elif var == '%s': + varSplit = '%s"%s"%s' % (varSplit[0], stylesheet, varSplit[1]) + elif var == '%p': + varSplit = '%s%s%s' % (varSplit[0], dtdPublic, varSplit[1]) + elif var == '%y': + varSplit = '%s%s%s' % (varSplit[0], dtdSystem, varSplit[1]) + elif var == '%v': + varSplit = '%s%s%s' % (varSplit[0], XSLParams, varSplit[1]) + cmd = join(varSplit, '') + if verbose: + print cmd + return cmd.encode(preferred_encoding) + + +def toUnicode(s): + return unicode(s, preferred_encoding) + + +def o2dConvert(input, output, stylesheet, verbose): + """Generic conversion. + """ + startTime = time.time() + os.system(getXsltCommand(input, output, stylesheet,verbose)) + endTime = time.time() + duration = round(endTime - startTime, 2) + +# Generic conversion changed by te +def o2dConvert2(input, output, stylesheet, xslParams): + startTime = time.time() + os.system(getXsltCommand(xslParams,input, output, stylesheet,verbose)) + endTime = time.time() + duree = round(endTime - startTime, 2) + print " ==>", duree, "sec." + + +# ------------- +# User commands +# ------------- + +def createDocbookArchive(zipfile_target): + pjoin = os.path.join + psplit = os.path.split + psplitext = os.path.splitext + pbasename = os.path.basename + + arch_dest_dir = psplit(zipfile_target)[0] + arch_top_dir = psplitext(pbasename(zipfile_target))[0] + arch_path = pjoin(arch_dest_dir, arch_top_dir + '.zip') + arch = zipfile.ZipFile(arch_path, 'w', zipfile.ZIP_DEFLATED) + docbook_fname = pbasename(docbookXML) + docbook_path_in_arch = pjoin(arch_top_dir, docbook_fname) + # ZIP entries paths are stored in "code page 437" encoding (cp437). + # One cannot use UTF-8 for the ZIP entries paths. + docbook_path_in_arch_enc = toUnicode(docbook_path_in_arch).encode(ZIP_FILE_ENCODING) + arch.write(docbookXML, docbook_path_in_arch_enc) + # Adding in the arch the images contained in the original OOo arch + if os.path.exists(imgAbsDir): + for img_name in os.listdir(imgAbsDir): + img_path = pjoin(imgAbsDir, img_name) + img_path_in_arch = pjoin(arch_top_dir, 'images', img_name) + # ZIP entries paths are stored in "code page 437" encoding (cp437). + # One cannot use UTF-8 for the ZIP entries paths. + img_path_in_arch_enc = img_path_in_arch.encode(ZIP_FILE_ENCODING) + arch.write(img_path, img_path_in_arch_enc) + arch.close() + # Remove created DocBook XML and subobjects, if any + os.remove(docbookXML) + if os.path.exists(imgAbsDir): + shutil.rmtree(imgAbsDir) + +# Free XSL conversion +def convert2(xmlinput=None, + command=None, + file_output=None, + imagesrew=1, + deltemp=1, + dtd=None, + conf_file_path=None, + xslt_file_path=None, + xslParams=None, + verbose=False, + zipfile_target=False, + docbook_top_element='book', + process_ole_objects=False, + docbookXSL=None, + ): + print """ +OOo2sDBK - Free conversion +-------------------------- +""" + print "Run conversion..." + print " 1 - Initialization" + startTime = time.time() + #initializeSets(input, output, command, 0, 0, 0, xslParams) + + initializeSets(xmlinput, file_output, command, imagesrew, + deltemp, dtd, conf_file_path, xslt_file_path, xslParams, + verbose) + + endTime = time.time() + duree = round(endTime - startTime, 2) + print " - Input file :", xmlinput + print " - Stylesheet :", xslt_file_path + print " - Output file :", file_output,"\n" + print " - top element is : %s" % docbook_top_element + print " - current dir is:", os.getcwd() + print " ==>", duree, "sec." + print " 2 - Conversion" + + o2dConvert(xmlinput, file_output, xslt_file_path,verbose) + #o2dConvert(globalXML, docbookXML, docbookXSL, verbose) + print "Conversion completed" + +def convert(ooo_file_path, + command=None, + docbook_file_path=None, + imagesrew=1, + deltemp=1, + dtd=None, + conf_file_path=None, + xslt_file_path=None, + xslParams=None, + verbose=False, + zipfile_target=False, + docbook_top_element='book', + process_ole_objects=False, + docbookXSL=None, + ): + """Convert OpenOffice.org Writer file to DocBook XML. + """ + startTime = time.time() + + if verbose: + print " 1 - Command line options" + print " - OOo2DBK config file : %s" % conf_file_path + print " - OpenOffice.org file : %s" % ooo_file_path + print " - DocBook file : %s" % docbook_file_path + print " - top element is : %s" % docbook_top_element + print " - process OLE objects : %s" % process_ole_objects + + initializeSets(ooo_file_path, docbook_file_path, command, imagesrew, + deltemp, dtd, conf_file_path, xslt_file_path, xslParams, + verbose) + + ooo_file_path = toUnicode(ooo_file_path) + if docbook_file_path is not None: + docbook_file_path = toUnicode(docbook_file_path) + if xslt_file_path is not None: + xslt_file_path = toUnicode(xslt_file_path) + + endTime = time.time() + duration = round(endTime - startTime, 2) + + if verbose: + print " ==>", duration, "sec.\n" + print " 2 - Unzip and concat OpenOffice.org XML files" + + startTime = time.time() + + oooVersion = createGlobalXML(globalXML, ooo_file_path, verbose) + + endTime = time.time() + duration = round(endTime - startTime, 2) + + if verbose: + print " - Detected file format: %s" % (oooVersion) + print " ==>", duration, "sec.\n" + print " 3 - Initialization (configuration file and computed options)" + + if docbookXSL is None: + # Get XSLT file to use from configuration file + docbookXSL = getXSLfile(oooVersion) + + if verbose: + global configXML + print " - preferred encoding : %s" % preferred_encoding + print " - OOo2DBK config file : %s" % configXML + print " - XSLT file : %s" % docbookXSL + print " - OpenOffice.org file path : %s" % docOOoSXW + print " - DocBook file path : %s" % docbookXML + if process_ole_objects: + print " - oooserver host : %s" % oooserver_host + print " - oooserver port : %s" % oooserver_port + print " - exported OLE image format : %s" % ole_img_format + print " - OOo Python path: %s" % ooopython_path + print "\n 4 - DocBook file creation" + + startTime = time.time() + o2dConvert(globalXML, docbookXML, docbookXSL, verbose) + + tempFilesDelete(deltemp) + endTime = time.time() + duration = round(endTime - startTime, 2) + if verbose: + print " ==>", duration, "sec.\n" + print "Conversion completed\n" + + if zipfile_target: + createDocbookArchive(zipfile_target) + if verbose: + print "Zip archive created\n" + +# Shell conversion +if __name__ == "__main__": + execArgs() diff --git a/ooo2dbk/ooo2dbk.pyc b/ooo2dbk/ooo2dbk.pyc new file mode 100644 index 0000000000000000000000000000000000000000..29a1c4b9d6194982d6b7eef428874a43cbb650cd GIT binary patch literal 24984 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 literal 0 HcmV?d00001 diff --git a/ooo2dbk/ooo2dbk.xml b/ooo2dbk/ooo2dbk.xml new file mode 100644 index 0000000..0f60c7a --- /dev/null +++ b/ooo2dbk/ooo2dbk.xml @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ooo2dbk/ooo2dbk.xsl b/ooo2dbk/ooo2dbk.xsl new file mode 100644 index 0000000..289ec56 --- /dev/null +++ b/ooo2dbk/ooo2dbk.xsl @@ -0,0 +1,4097 @@ + + +]> + + + + + + + book + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:apply-templates/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: Title hierarchy is wrong, section title is in bad position. + + + + + + + + + + + + + + + + + + + + + + ERROR: Section title should not be in a cell. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      +
                      +
                      +
                      +
                      +
                      + +
                      + +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      +
                      +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Address + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:apply-templates/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:apply-templates/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="$prefaceTitle"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="$appendixTitle"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <ulink> + <xsl:attribute name="url"><xsl:value-of select="$url"/></xsl:attribute> + <xsl:value-of select="@text:title"/> + </ulink> + + + + <xsl:value-of select="@text:title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="$glossaryTitle"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + + + + +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + + +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +      + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:apply-templates/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + continues + + + restarts + + + + + + + + loweralpha + + + upperalpha + + + arabic + + + lowerroman + + + upperroman + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + strong + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top + + + + + + + + + + + + + + + + +
                      + + + + + <xsl:apply-templates select="text:p"/> + + + + + + +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top + + + + + + + WARNING ! Incorporated graphics are not supported. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      + + + + + + <xsl:apply-templates + select="text:sequence/following-sibling::node()"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1; + + + + + + + + + yes + no + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + 0 + + + + + + + + false + + + + + + + + 0 + + + + + + + + 1 + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      diff --git a/ooo2dbk/options.py b/ooo2dbk/options.py new file mode 100644 index 0000000..50aa3da --- /dev/null +++ b/ooo2dbk/options.py @@ -0,0 +1,1194 @@ +# Options -- POSIX compatible options parsing +# Port of PERL GetOpt::Long.pm, GetoptLong.pm by Johan Vromans +# Port author: Tim Colles + +# 1.01 Fixes to '+' flag handling, contributed by Sean Laurent, +# Sonic Foundry, Inc., +# 1.0 First Release + +################ Copyright ################ + +# This program is Copyright 1990,1998 by Johan Vromans. +# This port is Copyright 2001 by Tim Colles. +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# If you do not have a copy of the GNU General Public License write to +# the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, +# MA 02139, USA. + +from os import environ, sys +import types +import re +from string import split, join + +VERSION = '1.01' +FROM_VERSION = '2.17' + +class OptionClass: + def __init__(self, **args): + for (key, value) in args.items(): + setattr(self, key, value) + +def ConfigDefaults(): + global genprefix, autoabbrev, bundling, getopt_compat, order, \ + debug, error, ignorecase, passthrough, myOptions + if environ.has_key('POSIXLY_CORRECT'): + genprefix = '(--|-)' + autoabbrev = 0 + bundling = 0 + getopt_compat = 0 + order = REQUIRE_ORDER + else: + genprefix = '(--|-|\\+)' + autoabbrev = 1 + bundling = 0 + getopt_compat = 1 + order = PERMUTE + debug = 0 + error = 0 + ignorecase = 1 + passthrough = 0 + myOptions = OptionClass() # for global vars! + +def Configure(*options): + global autoabbrev, getopt_compat, ignorecase, bundling, order, \ + passthrough, genprefix, debug, myOptions + for opt in options: + if type(opt) == types.InstanceType: + myOptions = opt + else: + opt = opt.lower() + action = 1 + pm = re.search('^no_?(.*)$',opt) + if pm: + action = 0 + opt = pm.group(1) + if opt == 'default' or opt == 'defaults': + if action: + ConfigDefaults() + elif opt == 'auto_abbrev' or opt == 'autoabbrev': + autoabbrev = action + elif opt == 'getopt_compat': + getopt_compat = action + elif opt == 'ignorecase' or opt == 'ignore_case': + ignorecase = action + elif opt == 'ignore_case_always': + if action: + ignorecase = 2 + else: + ignorecase = 0 + elif opt == 'bundling': + bundling = action + elif opt == 'bundling_override': + if action: + bundling = 2 + else: + bundling = 0 + elif opt == 'require_order': + if action: + order = REQUIRE_ORDER + else: + order = PERMUTE + elif opt == 'permute': + if action: + order = PERMUTE + else: + order = REQUIRE_ORDER + elif opt == 'pass_through' or opt == 'passthrough': + passthrough = action + elif opt == 'debug': + debug = action + else: + pm = re.search('^prefix=(.+)$',opt) + if pm: + genprefix = pm.group(1) + genprefix = '(' + re.escape(genprefix) + ')' + try: + pm = re.search(genprefix,'') + except: + print 'Invalid pattern "'+genprefix+'"' + else: + pm = re.search('^prefix_pattern=(.+)$',opt) + if pm: + genprefix = pm.group(1) + if not re.search('^\(.*\)$',genprefix): + genprefix = '(' + genprefix + ')' + try: + pm = re.search(genprefix,'') + except: + print 'Invalid pattern "'+genprefix+'"' + else: + print 'Unknown config parameter "'+opt+'"' + +def GetOptions(*options): + global genprefix, error + + optionlist = list(options) # local copy of the option descriptions + argend = '--' # option list terminator + opctl = {} # table of arg.specs (long and abbrevs) + bopctl = {} # table of arg.specs (bundles) + aliases = {} # alias table + ret = [] # accum for non-options + linkage = {} # linkage + userlinkage = None # user supplied HASH + opt = None # current option + optref = None # current option reference +# opctl = None # the possible long option names +# above conflicts, used as array type in Perl + + error = '' + + if debug: + print 'Options '+VERSION+'\n'\ + +'ARGV: ('+join(sys.argv,', ')+')\n'\ + +'autoabbrev='+`autoabbrev`\ + +',bundling='+`bundling`\ + +',getopt_compat='+`getopt_compat`\ + +',order='+`order`+',\n'\ + +'ignorecase='+`ignorecase`\ + +',passthrough='+`passthrough`\ + +',genprefix="'+`genprefix`+'".'\ + + userlinkage = None + if type(optionlist[0]) == types.DictionaryType: + userlinkage = optionlist.pop(0) + if debug: print '=> user linkage: '+userlinkage + + while len(optionlist) > 0: + opt = optionlist.pop(0) + if type(opt) == types.TupleType: + opt, optref = opt + else: + optref = None + + pm = re.search('^'+genprefix+'+(.*)$',opt) + if pm: opt = opt[pm.end(1):] + + if opt == '<>': + if userlinkage != None and userlinkage.has_key(opt): + optref = userlinkage[opt] + if type(optref) != types.FunctionType: + error += 'Option spec <> requires a reference to a subroutine' + continue + linkage['<>'] = optref + continue + + pm = re.search(r'^((\w+[-\w]*)(\|(\?|\w[-\w]*)?)*)?([!~+]|[=:][infse][@%]?)?$',opt) + if not pm: + error += 'Error in option spec: "'+opt+'"' + continue + ( o, c ) = pm.group(1,5) + if c == None: + c = '' + a = None + + if o == None: + o = '' + opctl[o] = c + else: + oa = split(o,'|') + o = oa[0] + if o != o.lower(): + a = o + if ignorecase > 1 \ + or (ignorecase and ((bundling and len(o) > 1) or not bundling)): + o = o.lower() +# We differ from the Perl here - in the Perl it lowercases 'o' and then +# never seems to use it (just resets 'o' to 'linko' value, unlowercased, so +# the lowercase statement in Perl is redundant) - so here we have shifted +# the 'linko' copy until AFTER the lowercasing of 'o' + linko = o + for o in oa: + if bundling and len(o) == 1: + if ignorecase > 1: + o = o.lower() + if c == '!': + opctl['no'+o] = c + print "Warning: Ignoring '!' modifier for short option"+o + c = '' + opctl[o] = bopctl[o] = c + else: + if ignorecase: + o = o.lower() + if c == '!': + opctl['no'+o] = c + c = '' + opctl[o] = c + if a != None: + aliases[o] = a + else: + a = o + o = linko + + if userlinkage != None: + if optref == None: + if userlinkage.has_key(o): + optref = userlinkage[o] + if debug: + print '=> found userlinkage for "'+o+'": '+optref + else: + continue + + if optref != None: + if type(optref) == types.StringType: + if debug: + print '=> link "'+o+'" to myOptions.'+optref + linkage[o] = 'myOptions.'+optref + exec linkage[o]+' = None' + else: +# Can't find a way to get the list/dict 'name' out here, works okay +# for a function though + if debug: + print '=> link "'+o+'" to '+`optref` + if type(optref) == types.FunctionType: + linkage[o] = optref + elif type(optref) == types.ListType: + linkage[o] = optref +# These don't seem right, ie. if missing '@' or empty string want to add +# the '@' - below (from Perl) doesn't add '@' if its an empty string? + if opctl[o] != '' and not re.search(r'\@$',opctl[o]): + opctl[o] += '@' + if bundling and bopctl.has_key(o) and bopctl[o] != '' \ + and not re.search(r'\@$',bopctl[o]): + bopctl[o] += '@' + elif type(optref) == types.DictionaryType: + linkage[o] = optref +# These don't seem right, ie. if missing '%' or empty string want to add +# the '%' - below (from Perl) doesn't add '%' if its an empty string? + if opctl[o] != '' and not re.search(r'\%$',opctl[o]): + opctl[o] += '%' + if bundling and bopctl.has_key(o) and bopctl[o] != '' \ + and not re.search(r'\%$',bopctl[o]): + bopctl[o] += '%' + else: + error += 'Invalid option linkage for "'+opt+'"' + else: + ov = o + ov = re.sub('\W','_',ov) + linkage[o] = 'myOptions.'+ov + if re.search('@',c): + if debug: + print '=> link "'+o+'" to myOptions.'+ov+'[]' + exec linkage[o]+' = []' + elif re.search('%',c): + if debug: + print '=> link "'+o+'" to myOptions.'+ov+'{}' + exec linkage[o]+' = {}' + print linkage[o] + else: + if debug: + print '=> link "'+o+'" to myOptions.'+ov + if (None == getattr(myOptions,o,None)): + exec linkage[o]+' = None' + + if error: + return 0 + + error = 0 + + opctla = opctl.keys() + if autoabbrev: + opctla.sort() + + if debug: + arrow = '=> ' + for k in opctla: + v = opctl[k] + print arrow+'opctl["'+k+'"] = "'+v+'"' + arrow = ' ' + arrow = '=> ' + for k in bopctl.keys(): + v = bopctl[k] + print arrow+'bopctl["'+k+'"] = "'+v+'"' + arrow = ' ' + + while len(sys.argv) > 0: + + opt = sys.argv.pop(0) + if debug: + print '=> option "'+opt+'"' + + if opt == argend: + if order == PERMUTE: + sys.argv.extend(ret) + return not error + + tryopt = opt + ( found, opt, arg, dsttype, incr, key ) = \ + FindOption(genprefix,argend,opt,opctl,bopctl,opctla,aliases) + + if found: + if opt == None: + continue + if arg != None: + if aliases.has_key(opt): + opt = aliases[opt] + if linkage.has_key(opt): + if debug: + print '=> ref(L['+opt+']) -> '+`linkage[opt]` + if dsttype == 's': + carg = arg + elif dsttype == 'f': + carg = float(arg) + else: + carg = int(arg) + if type(linkage[opt]) == types.ListType or \ + ( type(linkage[opt]) == types.StringType and \ + type(eval(linkage[opt])) == types.ListType ): + if debug: + print '=> L['+opt+'].append('+`arg`+')' + if type(linkage[opt]) == types.ListType: + linkage[opt].append(carg) + else: + exec linkage[opt]+'.append(carg)' + elif type(linkage[opt]) == types.DictionaryType or \ + ( type(linkage[opt]) == types.StringType and \ + type(eval(linkage[opt])) == types.DictionaryType ): + if debug: + print '=> L['+opt+']['+key+'] = '+`arg` + if type(linkage[opt]) == types.DictionaryType: + linkage[opt][key] = carg + else: + exec linkage[opt]+'[key] = carg' + elif type(linkage[opt]) == types.FunctionType or \ + ( type(linkage[opt]) == types.StringType and \ + type(eval(linkage[opt])) == types.FunctionType ): + if debug: + print '=> L['+opt+']("'+opt+'",'+`arg`+')' + if type(linkage[opt]) == types.FunctionType: + linkage[opt](opt,carg) + else: + exec linkage[opt]+'(opt,carg)' + elif type(linkage[opt]) == types.StringType: + if incr: + if debug: + print '=> L['+opt+'] += '+`arg` + if eval(linkage[opt]+'==None'): + exec linkage[opt]+' = carg' + else: + exec linkage[opt]+' += carg' + else: + if debug: + print '=> L['+opt+'] = '+`arg` + exec linkage[opt]+' = carg' + else: +# PERL has fatal error here + pass + elif dsttype == '@': + if userlinkage[opt] == None: + if debug: + print '=> L['+opt+'] = [ '+`arg`+' ]' + userlinkage[opt] = [ arg ] + else: + if debug: + print '=> L['+opt+'].append('+`arg`+')' + userlinkage[opt].append(arg) + elif dsttype == '%': + if userlinkage[opt] == None: + if debug: + print '=> L['+opt+'] = { '+key+' : '+`arg`+' }' + userlinkage[opt] = { key : arg } + else: + if debug: + print '=> L['+opt+']['+key+'] = '+`arg` + userlinkage[opt][key] = arg + else: + if dsttype == 's': + carg = arg + elif dsttype == 'f': + carg = float(arg) + else: + carg = int(arg) + if incr: + if debug: + print '=> L['+opt+'] += '+`arg` + if eval(userlinkage[opt]+'==None'): + exec userlinkage[opt]+' += carg' + else: + exec userlinkage[opt]+' = carg' + else: + if debug: + print '=> L['+opt+'] = '+`arg` + exec userlinkage[opt]+' = carg' + elif order == PERMUTE: + cb = None + if linkage.has_key('<>'): + cb = linkage['<>'] + if cb != None: + cb(tryopt) + else: + if debug: + print '=> saving "'+tryopt+'" (not an option, may permute)' + ret.insert(0,tryopt) + continue + else: + sys.argv.insert(0,tryopt) + return not error + + if order == PERMUTE: + if len(ret) > 0: + if debug: + print '=> restoring "'+join(ret,'" "')+'"' + sys.argv.extend(ret) + + return not error + +def FindOption(prefix,argend,opt,opctl,bopctl,names,aliases): + global error + if debug: + print '=> find "'+opt+'", prefix="'+prefix+'"' + + key = None + arg = None + + pm = re.search('^'+prefix+'(.*)$',opt) + if not pm: return(0,None,None,None,None,None) + + opt = opt[pm.end(1):] + starter = pm.group(1) + + if debug: print '=> split "'+starter+'"+"'+opt+'"' + + optarg = None + rest = None + + if starter == '--' or (getopt_compat and not bundling): + pm = re.search('^([^=]+)=(.*)$',opt) + if pm: + opt = pm.group(1) + optarg = pm.group(2) + if debug: + print '=> option "'+opt+'", optarg = "'+optarg+'"' + + tryopt = opt + optbl = opctl + opttype = None + dsttype = '' + incr = 0 + + if bundling and starter == '-': + rest = tryopt[1:] + tryopt = tryopt[0] + if ignorecase > 1: + tryopt = tryopt.lower() + if debug: + print '=> '+starter+tryopt+' unbundled from '+starter+tryopt+rest + if rest == '': + rest = None + optbl = bopctl + if bundling == 2 and opctl.has_key(tryopt+rest): + opttype = opctl[tryopt+rest] + if debug: + print '=> '+starter+tryopt+' rebundled to '+starter+tryopt+rest + tryopt += rest + rest = None + elif autoabbrev: + if ignorecase: tryopt = opt = opt.lower() + pat = re.escape(opt) + hits = [] + p = re.compile('^'+pat) + for o in names: + if re.search(p,o): hits.append(o) + if debug: + print '=> %d hits with "%s" out of %d' % (len(hits),pat,len(names)) + nhits = 0 + for h in hits: + if h == opt: nhits += 1 + if len(hits) > 1 and nhits != 1: + hit = {} + for h in hits: + if aliases.has_key(h): h = aliases[h] + hit[h] = 1 + if len(hit.keys()) != 1: + if passthrough: return(0,None,None,None,None,None) + print 'Warning: Option "'+opt+'" is ambiguous (%s)' % join(hits,', ') + error += 1 + opt = None + return(1,opt,arg,dsttype,incr,key) + hits = hit.keys() + if len(hits) == 1 and hits[0] != opt: + tryopt = hits[0] + if ignorecase: tryopt = tryopt.lower() + if debug: print '=> option "'+opt+'" -> "'+tryopt+'"' + elif ignorecase: + tryopt = tryopt.lower() + + if opttype == None and optbl.has_key(tryopt): + opttype = optbl[tryopt] + if opttype == None: + if passthrough: return(0,None,None,None,None,None) + print 'Unknown option: '+opt + error += 1 + return(1,opt,arg,dsttype,incr,key) + opt = tryopt + if debug: print '=> found "'+opttype+'" for '+opt + + if opttype == '' or opttype == '!' or opttype == '+': + if optarg != None: + if passthrough: return(0,None,None,None,None,None) + print 'Warning: Option '+opt+' does not take an argument' + error += 1 + opt = None + elif opttype == '' or opttype == '+': + arg = 1 + if opttype == '+': incr = 1 + else: + opt = opt[2:] + arg = 0 + if rest != None: sys.argv.insert(0,starter+rest) + return(1,opt,arg,dsttype,incr,key) + + pm = re.search('^(.)(.)([@%]?)$',opttype) + ( mand, opttype, dsttype ) = pm.groups() + + if (optarg != None and optarg == '') \ + or (optarg == None and not (rest != None or len(sys.argv) > 0)): + if mand == '=': + if passthrough: return(0,None,None,None,None,None) + print 'Warning: Option '+opt+' requires an argument' + error += 1 + opt = None + if mand == ':': + if opttype == 's': arg = '' + else: arg = 0 + return(1,opt,arg,dsttype,incr,key) + + if rest != None: arg = rest + elif optarg != None: arg = optarg + else: arg = sys.argv.pop(0) + + key = None + if dsttype == '%' and arg != None: + pm = re.search('^(.*)=(.*)$',arg) + if pm: key, arg = pm.groups() + else: key, arg = ( arg, 1 ) + +# Needed to do the re pattern matching only + if type(arg) == types.IntType: rarg = `arg` + else: rarg = arg + + dsttype = opttype + if opttype == 's': + if mand == '=' or optarg != None or rest != None or arg == '-': + return(1,opt,arg,dsttype,incr,key) + if arg == argend or re.search('^'+prefix+'.+',arg): + sys.argv.insert(0,arg) + arg = '' + elif opttype == 'n' or opttype == 'i': + pm = None + if rest != None: + pm = re.search('^(-?[0-9]+)(.*)$',rest) + if bundling and pm: + arg = pm.group(1) + rest = pm.group(2) + if rest != None and rest != '': sys.argv.insert(0,starter+rest) + elif not re.search('^-?[0-9]+$',rarg): + if optarg != None or mand == '=': + if passthrough: + if optarg == None: + if rest != None: sys.argv.insert(0,starter+rest) + else: sys.argv.insert(0,arg) + return(0,None,None,None,None,None) + print 'Warning: Value "'+`arg`+'" invalid for option '+opt\ + +' (number expected)' + error += 1 + opt = None + if rest != None: sys.argv.insert(0,starter+rest) + else: + if rest != None: sys.argv.insert(0,starter+rest) + else: sys.argv.insert(0,arg) + arg = 0 + elif opttype == 'f': + pm = None + if rest != None: + pm = re.search('^(-?[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?)(.*)$',rest) + if bundling and pm: + arg = pm.group(1) +# Should be last match bracket (not always 2nd group) + rest = pm.group(2) + if rest != None and rest != '': sys.argv.insert(0,starter+rest) + elif not re.search('^-?[0-9.]+(\.[0-9]+)?([eE]-?[0-9]+)?$',rarg): + if optarg != None or mand == '=': + if passthrough: + if optarg == None: + if rest != None: sys.argv.insert(0,starter+rest) + else: sys.argv.insert(0,arg) + return(0,None,None,None,None,None) + print 'Warning: Value "'+`arg`+'" invalid for option '+opt\ + +' (real number expected)' + error += 1 + opt = None + if rest != None: sys.argv.insert(0,starter+rest) + else: + if rest != None: sys.argv.insert(0,starter+rest) + else: sys.argv.insert(0,arg) + arg = 0.0 + else: +# Perl croaks/aborts here - internal error can't happen + pass + return(1,opt,arg,dsttype,incr,key) + +# Values for $order. See GNU getmyOptions.c for details. +REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER = 0, 1, 2 + +( major_version, minor_version ) = re.search('^(\d+)\.(\d+)',VERSION).groups() + +ConfigDefaults() + +################ Documentation ################ +""" + +=head1 NAME + +Options - extended processing of command line options + +=head1 SYNOPSIS + + import Options + from Options import OptionClass, Configure, GetOptions, myOptions + + Configure(...configuration-parameters...) + result = GetOptions(...option-descriptions...) + +=head1 DESCRIPTION + +The Options module implements an extended getopt function called +GetOptions(). This function adheres to the POSIX syntax for command +line options, with GNU extensions. In general, this means that options +have long names instead of single letters, and are introduced with a +double dash "--". Support for bundling of command line options, as was +the case with the more traditional single-letter approach, is provided +but not enabled by default. For example, the UNIX "ps" command can be +given the command line "option" + + -vax + +which means the combination of B<-v>, B<-a> and B<-x>. With the new +syntax B<--vax> would be a single option, probably indicating a +computer architecture. + +Command line options can be used to set values. These values can be +specified in one of two ways: + + --size 24 + --size=24 + +GetOptions is called with a list of option-descriptions. Each is either +just a string with the option specifier or a tuple consisting of a +string with the option specifier and the option linkage. The option +specifier defines the name of the option and, optionally, the value it +can take. The option linkage is a string with a reference name or a +reference to a list, dictionary or function that will be set/called +when the option is used. For example, the following call to GetOptions: + + GetOptions(('size=i','offset')); + +will accept a command line option "size" that must have an integer +value. With a command line of "--size 24" this will cause the offset +member of the myOptions class instance to get the value 24. You can +use an alternative class instance to myOptions by passing the name +in the Configure call (see later section). + +Alternatively, the first argument to GetOptions may be a reference to +a dictionary describing the linkage for the options. The following call +is equivalent to the example above: + + optctl = { 'size' : 'offset' } + GetOptions(optctl, 'size=i'); + +Linkage may be specified using either of the above methods, or both. +Linkage specified in the argument list takes precedence over the +linkage specified in the dictionary. + +The command line options are taken from the sys.argv list. Upon completion +of GetOptions, sys.argv will contain the rest (i.e. the non-options) of +the command line. + +Each option specifier designates the name of the option, optionally +followed by an argument specifier. + +Options that do not take arguments will have no argument specifier. +The option variable will be set to 1 if the option is used. + +For the other options, the values for argument specifiers are: + +=over 8 + +=item ! + +Option does not take an argument and may be negated, i.e. prefixed by +"no". E.g. "foo!" will allow B<--foo> (with value 1) and B<-nofoo> +(with value 0). The option variable will be set to 1, or 0 if negated. + +=item + + +Option does not take an argument and will be incremented by 1 every +time it appears on the command line. E.g. "more+", when used with +B<--more --more --more>, will set the option variable to 3 (provided +it was 0 or undefined at first). + +The B<+> specifier is ignored if the option destination is not a SCALAR. + +=item =s + +Option takes a mandatory string argument. +This string will be assigned to the option variable. +Note that even if the string argument starts with B<-> or B<-->, it +will not be considered an option on itself. + +=item :s + +Option takes an optional string argument. +This string will be assigned to the option variable. +If omitted, it will be assigned "" (an empty string). +If the string argument starts with B<-> or B<-->, it +will be considered an option on itself. + +=item =i + +Option takes a mandatory integer argument. +This value will be assigned to the option variable. +Note that the value may start with B<-> to indicate a negative +value. + +=item :i + +Option takes an optional integer argument. +This value will be assigned to the option variable. +If omitted, the value 0 will be assigned. +Note that the value may start with B<-> to indicate a negative +value. + +=item =f + +Option takes a mandatory real number argument. +This value will be assigned to the option variable. +Note that the value may start with B<-> to indicate a negative +value. + +=item :f + +Option takes an optional real number argument. +This value will be assigned to the option variable. +If omitted, the value 0 will be assigned. + +=back + +A lone dash B<-> is considered an option, the corresponding option +name is the empty string. + +A double dash on itself B<--> signals end of the options list. + +=head2 Linkage specification + +The linkage specifier is optional. If no linkage is explicitly +specified but a dictionary is passed, GetOptions will place the value in +the dictionary. For example: + + optctl = {} + GetOptions(optctl,'size=i') + +with command line "--size 24" will perform the equivalent of +the assignment + + optctl['size'] = 24 + +For list options, a reference to a list is used, e.g.: + + optctl = {}; + GetOptions(optctl,'sizes=i@') + +with command line "-sizes 24 -sizes 48" will perform the equivalent of +the assignment + + optctl['sizes'] = [24, 48] + +For dictionary options (an option whose argument looks like "name=value"), +a reference to a dictionary is used, e.g.: + + optctl = {}; + GetOptions(optctl,'define=s%') + +with command line "--define foo=hello --define bar=world" will perform the +equivalent of the assignment + + optctl['define'] = { foo : 'hello', bar : 'world' } + +If no linkage is explicitly specified and no dictionary is passed, +GetOptions will put the value in a class member named after the +option, prefixed by "myOptions.". To yield a usable name, +characters that are not part of the syntax for variables are +translated to underscores. For example, "--fpp-struct-return" will set +the variable myOptions.fpp_struct_return. For example: + + GetOptions('size=i','sizes=i@') + +with command line "-size 10 -sizes 24 -sizes 48" will perform the +equivalent of the assignments + + myOptions.size = 10 + myOptions.sizes = [ 24, 48 ] + +A lone dash B<-> is considered an option, the corresponding +identifier is myOptions.??? . + +The linkage specifier can be a string (reference to a variable name), +a reference to a list, a reference to a dictionary or a reference +to a function. + +If a STRING is supplied, the new value is stored in the referenced +variable. If the option occurs more than once, the previous value is +overwritten. For example with command line "--size=24": + + myOptions.mysize = 4 + GetOptions(('size=i','mysize')) + myOptions.mysize == 24 + +If a LIST is supplied, the new value is appended (pushed) to the +referenced list. For example with command line "--size=24": + + myOptions.mysizes = [ 4 ] + GetOptions(('size=i',mysizes)) + myOptions.mysizes == [ 4, 24 ] + +If a DICTIONARY is supplied, the option value should look like "key" or +"key=value" (if the "=value" is omitted then a value of 1 is implied). +In this case, the element of the referenced dictionary with the key "key" +is assigned "value". For example with command line "--define TEST=YES": + + myOptions.mydefines = {} + GetOptions(('define=s',mydefines)) + myOptions.mydefines['TEST'] == 'YES' + +If a FUNCTION is supplied, the referenced subroutine is called with +two arguments: the option name and the option value. +The option name is always the true name, not an abbreviation or alias. +For example with command line "--size=24": + + def myarg(opt,arg): + x = opt + y = arg + + GetOptions(('size=i',myarg)) + x == 'size' + y == 24 + +=head2 Aliases and abbreviations + +The option name may actually be a list of option names, separated by +"|"s, e.g. "foo|bar|blech=s". In this example, "foo" is the true name +of this option. If no linkage is specified, options "foo", "bar" and +"blech" all will set myOptions.foo. For convenience, the single character +"?" is allowed as an alias, e.g. "help|?". + +Option names may be abbreviated to uniqueness, depending on +configuration option B. + +=head2 Non-option call-back routine + +A special option specifier, EE, can be used to designate a function +to handle non-option arguments. GetOptions will immediately call this +function for every non-option it encounters in the options list. +This function gets the name of the non-option passed. +This feature requires configuration option B, see section +CONFIGURATION OPTIONS. + +See also the examples. + +=head2 Option starters + +On the command line, options can start with B<-> (traditional), B<--> +(POSIX) and B<+> (GNU, now being phased out). The latter is not +allowed if the environment variable B has been +defined. + +Options that start with "--" may have an argument appended, separated +with an "=", e.g. "--foo=bar". + +=head2 Return values and Errors + +Configuration errors and errors in the option definitions return to +the calling program. Messages are printed. + +A return value of 1 (true) indicates success. + +A return status of 0 (false) indicates that the function detected one +or more errors during option parsing. + +=head1 COMPATIBILITY + +If an "@" sign is appended to the argument specifier, the option is +treated as a list. Value(s) are not set, but pushed into list +myOptions.name. If explicit linkage is supplied, this must be a reference +to a list. + +If an "%" sign is appended to the argument specifier, the option is +treated as a dictionary. Value(s) of the form "name=value" are set by +setting the element of the dictionary myOptions.name with key "name" to "value" +(if the "=value" portion is omitted it defaults to 1). If explicit +linkage is supplied, this must be a reference to a dictionary. + +If configuration option B is set (see section +CONFIGURATION OPTIONS), options that start with "+" or "-" may also +include their arguments, e.g. "+foo=bar". This is for compatiblity +with older implementations of the GNU "getopt" routine. + +For convenience, option specifiers may have a leading B<-> or B<-->, +so it is possible to write: + + Options.GetOptions('-foo=s','--bar=i','--ar=s') + +=head1 EXAMPLES + +If the option specifier is "one:i" (i.e. takes an optional integer +argument), then the following situations are handled: + + -one -two -> myOptions.one = '', -two is next option + -one -2 -> myOptions.one = -2 + +Also, assume specifiers "foo=s" and "bar:s" : + + -bar -xxx -> myOptions.bar = '', '-xxx' is next option + -foo -bar -> myOptions.foo = '-bar' + -foo -- -> myOptions.foo = '--' + +In GNU or POSIX format, option names and values can be combined: + + +foo=blech -> myOptions.foo = 'blech' + --bar= -> myOptions.bar = '' + --bar=-- -> myOptions.bar = '--' + +Example of using variable references: + + ret = Options.GetOptions(('foo=s','foo'),'bar=i',('ar=s',ar)) + +With command line options "-foo blech -bar 24 -ar xx -ar yy" +this will result in: + + foo = 'blech' + myOptions.bar = 24 + ar = [ 'xx', 'yy' ] + +Example of using the EE option specifier: + + sys.argv = [ '-foo', 1, 'bar', '-foo', 2, 'blech' ] + Options.GetOptions(('foo=i','myfoo'),('<>',mysub)) + +Results: + + mysub('bar') will be called (with myfoo being 1) + mysub('blech') will be called (with myfoo being 2) + +Compare this with: + + sys.argv = [ '-foo', 1, 'bar', '-foo', 2, 'blech' ] + Options.GetOptions(('foo=i','myfoo')) + +This will leave the non-options in sys.argv: + + myfoo -> 2 + sys.argv -> [ 'bar', 'blech' ] + +=head1 CONFIGURATION OPTIONS + +B can be configured by calling subroutine +B. This subroutine takes a list of quoted +strings, each specifying a configuration option to be set, e.g. +B. Options can be reset by prefixing with B, e.g. +B. Case does not matter. Multiple calls to B +are possible. + +Any configuration option can be given as a class instance instead. In +this case that class will be used for the creation of option member +variables rather than the default (which is Options.OptionClass). If +so desired it can be subclassed. Initial arguments create those members +with default values for options. For example: + + sys.argv -> [ '--Test=5' ] + + opt = OptionClass(test=0) + Configure(opt,'ignorecase') + GetOptions('test=i') + + opt.test -> 5 + +Without the above the default assignment is: + + myOptions.test -> 5 + +The following configuration parameters are available: + +=over 12 + +=item default + +This option causes all configuration options to be reset to their +default values. + +=item auto_abbrev + +Allow option names to be abbreviated to uniqueness. +Default is set unless environment variable +POSIXLY_CORRECT has been set, in which case B is reset. + +=item getopt_compat + +Allow '+' to start options. +Default is set unless environment variable +POSIXLY_CORRECT has been set, in which case B is reset. + +=item require_order + +Whether non-options are allowed to be mixed with +options. +Default is set unless environment variable +POSIXLY_CORRECT has been set, in which case b is reset. + +See also B, which is the opposite of B. + +=item permute + +Whether non-options are allowed to be mixed with +options. +Default is set unless environment variable +POSIXLY_CORRECT has been set, in which case B is reset. +Note that B is the opposite of B. + +If B is set, this means that + + -foo arg1 -bar arg2 arg3 + +is equivalent to + + -foo -bar arg1 arg2 arg3 + +If a non-option call-back routine is specified, sys.argv will always be +empty upon succesful return of GetOptions since all options have been +processed, except when B<--> is used: + + -foo arg1 -bar arg2 -- arg3 + +will call the call-back routine for arg1 and arg2, and terminate +leaving arg2 in sys.argv. + +If B is set, options processing +terminates when the first non-option is encountered. + + -foo arg1 -bar arg2 arg3 + +is equivalent to + + -foo -- arg1 -bar arg2 arg3 + +=item bundling (default: reset) + +Setting this variable to a non-zero value will allow single-character +options to be bundled. To distinguish bundles from long option names, +long options must be introduced with B<--> and single-character +options (and bundles) with B<->. For example, + + ps -vax --vax + +would be equivalent to + + ps -v -a -x --vax + +provided "vax", "v", "a" and "x" have been defined to be valid +options. + +Bundled options can also include a value in the bundle; for strings +this value is the rest of the bundle, but integer and floating values +may be combined in the bundle, e.g. + + scale -h24w80 + +is equivalent to + + scale -h 24 -w 80 + +Note: resetting B also resets B. + +=item bundling_override (default: reset) + +If B is set, bundling is enabled as with +B but now long option names override option bundles. In the +above example, B<-vax> would be interpreted as the option "vax", not +the bundle "v", "a", "x". + +Note: resetting B also resets B. + +B Using option bundling can easily lead to unexpected results, +especially when mixing long options and bundles. Caveat emptor. + +=item ignore_case (default: set) + +If set, case is ignored when matching options. + +Note: resetting B also resets B. + +=item ignore_case_always (default: reset) + +When bundling is in effect, case is ignored on single-character +options also. + +Note: resetting B also resets B. + +=item pass_through (default: reset) + +Unknown options are passed through in sys.argv instead of being flagged +as errors. This makes it possible to write wrapper scripts that +process only part of the user supplied options, and passes the +remaining options to some other program. + +This can be very confusing, especially when B is also set. + +=item prefix + +The string that starts options. See also B. + +=item prefix_pattern + +A regular expression that identifies the strings that introduce options. +Default is C<(--|-|\+)> unless environment variable +POSIXLY_CORRECT has been set, in which case it is C<(--|-)>. + +=item debug (default: reset) + +Enable copious debugging output. + +=back + +=head1 AUTHOR + +Johan Vromans Ejvromans@squirrel.nlE +Port from Perl to Python by Tim Colles Etimc@dai.ed.ac.ukE + +=head1 COPYRIGHT AND DISCLAIMER + +This program is Copyright 1990,1998 by Johan Vromans. +This port is Copyright 2001 by Tim Colles. +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +If you do not have a copy of the GNU General Public License write to +the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, +MA 02139, USA. + +=cut + +""" diff --git a/ooo2dbk/options.pyc b/ooo2dbk/options.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c8d31dfad3295a2e5312b4a62a70c72cb0137138 GIT binary patch literal 13675 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 + + + + + + Beispieldatei Konvertierung Docbook + mit m-Docbook-Exporter SXW- und DOC-Dateien konvertieren + 2015-01-01 + + Thorsten + Eggeling + + Email: te@myria.de + Web. http://www.myria.de + Copyright © 2002 Thorsten Eggeling + + Persmission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation;with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.A copy of the license is included in the section entitled "GNU Free Documentation License". + Es folgt eine Übersetzung des oben stehenden Hinweises, der nur zur Klarheit hier angegeben ist ! (anm.: des Übersetzers) + Kopieren, Verbreiten und/oder Modifizieren ist unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder einer späteren Version, veröffentlicht von der Free Software Foundation, erlaubt. + Es gibt keine unveränderlichen Abschnitte,keinen vorderen Umschlagtext und keinen hinteren Umschlagtext. Eine Kopie des Lizenztextes ist unter dem Titel GNU Free Documentation License enthalten. (Ende der Übersetzung des Lizenzhinweistextes) + + + + http://www.gnu.org/licenses/fdl.html + + + + + + + + + 2015-01-01T20:39:10.876000000 + + + + + Absätze + Das ist ein normaler Absatz (Formatvorlage Textkörper oder Standard) + Das ist ein Beispiel für einen Codeblock (Formatvorlage Vorformatierter Text oder ProgrammListing): + Beispiel für Vorformatierten Text Die Leerzeichen bleiben erhalten (Anmerkungen im Code: Format Lineannotation) Drei Leerzeichen [ ] Zeilenumbrüche bleiben erhalten(2 Return folgen) Tabulatoren werden in Leerzeichen konvertiert Zwei Tabulatoren in eckigen Klammern [] + Zitat (Formatvorlage: Zitat) mit Attribution (Formatvorlage: Attribution): +
                      + Philosophy of the GNU Project + Free software is a matter of freedom: people should be free to use software in all the ways that are socially useful. Software differs from material objects--such as chairs, sandwiches, and gasoline--in that it can be copied and changed much more easily. These possibilities make software as useful as it is; we believe software users should be able to make use of them. +
                      +
                      + + Text-Vorlagen +
                      + Textattribute + Hier ist ein Text mit einer Hervorhebung oder kursiv. + Hier ist ein stark betonter Text Hervorhebung in fett. + Hier ist ein Text mit nicht proportionalen Zeichen gesetzt. + Hier ist eine Pfadbezeichnung /usr/lib/python21 (Formatvorlage: Filename) +
                      +
                      + Informelle Vorlagen + The option on the UNIX ls command or the option on the DOS attrib command, for example. + Hier ist ein weiteres Beispiel für eine Kommandozeile + java com.icl.saxon.StyleSheet output input stylesheet +
                      +
                      + + Abschnitts-Titel + Die Konvertierung erlaubt auch verschachtelte Abschnitte, wie sie in den Open Office Kapiteln vorkommen. +
                      + Beispiel für eine Überschrift 2 + Text in einem Unterabschnitt +
                      + Beispiel für eine Überschrift 3 + Text in einem Unter-Unter-Abschnitt +
                      +
                      +
                      + Beispiel für eine Überschrift 2 + Text in einem Unter-Abschnitt +
                      +
                      + + Listen +
                      + Listen mit Bullets + Die unterschiedlichen Zeichen für ungeordnete Listen überträgt das Tool nicht. Aufzählungszeichen erscheinen immer mit dem Standard-Symbol. + + + Eintrag in der Aufzählung + + + Eintrag in der Aufzählung + + + Unter-Eintrag in der Aufzählung + + + Unter-Eintrag in der Aufzählung + + + + + Eintrag in der Aufzählung + + +
                      +
                      + Nummerierte Listen + Die unterschiedlichen nummerierten Listen werden inclusive der Einzüge übertragen. Die fortlaufende Nummerierung wird in das DocBook-Format überführt. + + + Nummerierung mit arabischen Ziffern + + + Nummerierung mit arabischen Ziffern + + + Nummerierung mit kleinen Buchstaben + + + Nummerierung mit kleinen Buchstaben + + + Nummerierung mit römischen Ziffern + + + Nummerierung mit römischen Ziffern + + + + + Nummerierung mit kleinen Buchstaben + + + + + Nummerierung mit arabischen Ziffern + + +
                      +
                      + Bullets und nummerierte Listen gemischt + + + Nummerierung mit großen Buchstaben + + + Nummerierung mit großen Buchstaben + + + Bullet + + + Bullet + + + Nummerierung mit kleinen römischen Ziffern + + + Nummerierung mit kleinen römischen Ziffern + + + + + Bullet + + + + +
                      +
                      + Wörterlisten + Wörterlisten sind auf zwei Formatvorlagen beschränkt: + + + Zu definierendes Wort + Definition des Wortes + + + + + Eine weitere Definition + Eine Definition, die mehrere Zeilen in OpenOffice umfaßt... wird eine Paragraphenfolge im Docbook-Dokument. + + +
                      +
                      + + Tabellen + Verbundene Zellen sind möglich, aber nur horizontal (zwei Zellen markieren und dann : +
                      + Tabelle ohne Legende + + + + + + + + + + + + + + Spalte 1 + + + + + + Spalte 2 + + + + + + Spalte 3 + + + + + + Spalte 4 + + + + Spalte 5 + + + + + + + + + Zellinhalt + + + + + verbundene Zellen + + + + + Zellinhalt + + + + + + Zellinhalt + + + + + + + Zellinhalt + + + + + Zelleninhalt + über mehrere Spalten + + + + + verbundene Zellen + + + + + + Zellinhalt + + + + + + + Zellinhalt + + + + + Zellinhalt + + + + + Zellinhalt + + + + + Zellinhalt + + + + + + Zellinhalt + + + + + +
                      +
                      + Tabelle mit Legende: + + Beispiel einer Tabelle mit Legende + + + + + + + + + + + + + Spalte 1 + + + + + + Spalte 2 + + + + + + Spalte 3 + + + + + + Spalte 4 + + + + Spalte 5 + + + + + + + + + Zellinhalt + + + + + verbundene Zellen + + + + + Zellinhalt + + + + + + Zellinhalt + + + + + + + Zellinhalt + + + + + Zelleninhalt + über mehrere Spalten + + + + + verbundene Zellen + + + + + + Zellinhalt + + + + + + + Zellinhalt + + + + + Zellinhalt + + + + + Zellinhalt + + + + + Zellinhalt + + + + + + Zellinhalt + + + + +
                      +
                      +
                      + (Sehr) komplexe Tabellen + + Sehr komplexe Tabelle + + + + + + + + + + + + + + + + + + + + + Titel 1 + + + + + + Titel 2 + + + + + + Titel 3 + + + + + + Titel 4 + + + + Titel 5 + + + + + + + Untertitel + + + + + Untertitel + + + + + Untertitel + + + + + Untertitel + + + + + Untertitel + + + + + Untertitel + + + + + Untertitel + + + + + + Untertitel + + + + + + + + + Horizontale und vertikale verbundene Zellen + + + + + Horizontal verbundenen Zellen + + + + + Inhalt + + + + + + Vertikal verbundenen Zellen + + + + + + + Inhalt + + + + + Horizontal verbundenen Zellen + + + + + + + Die 4 Zellen sind vertikal und horizontal verbunden + + + + + Inhalt + + + + + Inhalt + + + + + Zelle + + + + + Zelle + + + + + Zelle + + + + + + Zelle + + + + + + + Inhalt über mehrere Absätze. Inhalt über mehrere Absätze. Inhalt über mehrere Absätze + + + + + v + + + + + Inhalt + Inhalt + + + + + Inhalt + + + + + + Inhalt + + + + + + + v + + + + + Inhalt + + + + + Inhalt + + + + + + Inhalt + + + + + + + v + + + + + + + v + + + + +
                      +
                      +
                      + + Hyperlinks, Verweise und Fußnoten +
                      + Hyperlinks + Diese Zeile enthält einen Hyperlink auf OpenOffice.org und einen anderen auf die Seite der Docbook Entwickler. +
                      +
                      + Interne Verweise + Hier ist ein Verweis auf den Titel des Dokuments Absätze. Der Titel "Absätze" ist in diesem Dokument mit einer Textmarke versehen. Um einen Textmarke einzufügen markieren Sie den gewünschten Text beziehungsweise die komplette Überschrift. Gehen Sie auf „Einfügen → Textmarke“. Geben Sie den gewünschten Verweis-Text ein und klicken Sie auf „OK“. Bei Überschriften können Sie auch den kompletten Text der Überschrift einsetzen. Um einen Verweis einzubauen, setzen Sie den Cursor auf die gewünschte Position und gehen auf „Einfügen → Querverweis“. Wählen Sie unter „Typ“ den Eintrag „Lesezeichen“ und unter „Referenz einfügen“ den Eintrag „Referenztext“. Klicken Sie auf „Einfügen“. Auf diese Weise eingefügte Verweise funktionieren auch in gesplitteten Dokumenten wie „HTML (mehrere Dateien)“. Die Verweise werden korrekt auf das jeweilige Teildokument verlinkt. + Hier ist ein weiterer Verweis auf eine Tabelle 1 Beispiel einer Tabelle mit Legende. +
                      +
                      + Fußnoten + Hier steht ein Text mit einem Verweis auf eine FußnoteText einer Fußnote.. + Und hier ist eine weitere FußnoteUnd eine weitere Fußnote,. +
                      +
                      + + Abbildungen und Grafiken +
                      + Bild ohne Beschriftung + + + + + + Notre Dame de Paris +
                      +
                      + Bild mit Beschriftung +
                      + Titelblatt von "Docbook - The Definitive Guide" + + + + + +
                      + +
                      +
                      + Inline Images + + Dieser Absatz kann ein kleines, in den Text integriertes Icon enthalten Symbole de note. Es zeigt das Standard-Icon für Notizen in Docbook. In OpenOffice.org wird so etwas als verankert "am Zeichen" bezeichnet, im Docbook-Jargon ist es ein Inline-Image. + Inline-Bilder sind die einzigen, die in Docbook auch anklickbar sind. + Auf das Gnu können Sie klicken GNU +
                      +
                      + + Anmerkungen + + Dies ist eine einfache Anmerkung. Sie basiert auf dem Absatz-Formatvorlage Note. Dieser erlaubt es kleine Kommentare schnell im Text unterzubringen. + Sie kann mit einem Zeilenumbruch versehen werden (<Shift>-<Return>), aber zwei Absätze in einer Anmerkung ergeben zwei Anmerkungen und nicht eine Anmerkung mit zwei Absätzen. + +
                      + Komplexe Anmerkungen mit Rahmen + Hinweis: Dieses Beispiel funktioniert im Moment nicht. Die Funktion steht nicht zur Verfügung. + Es folgt eine etwas komplexerer Anmerkung. Sie wird mit einem Rahmen ("Einfügen, Rahmen") und der Rahmenvorlage "Note" erzeugt. Der Rahmen kann beliebige Absatzarten aufnehmen. Diese Funktion will Eric Bellot noch weiterentwickeln und auf andere Elemente wie Begriffs-Definitionen und Zitate ausdehnen. + +
                      +
                      +
                      diff --git a/xsl/common/gentext.xsl b/xsl/common/gentext.xsl new file mode 100644 index 0000000..90754e2 --- /dev/null +++ b/xsl/common/gentext.xsl @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/common/inline.xsl b/xsl/common/inline.xsl new file mode 100644 index 0000000..9d11529 --- /dev/null +++ b/xsl/common/inline.xsl @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + after + before + + + + + + + + + + + + + + diff --git a/xsl/common/l10n.xml b/xsl/common/l10n.xml new file mode 100644 index 0000000..965e8b9 --- /dev/null +++ b/xsl/common/l10n.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/xsl/common/l10n.xsl b/xsl/common/l10n.xsl new file mode 100644 index 0000000..3777c5e --- /dev/null +++ b/xsl/common/l10n.xsl @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/xsl/common/param-refdocs.xsl b/xsl/common/param-refdocs.xsl new file mode 100644 index 0000000..c45733b --- /dev/null +++ b/xsl/common/param-refdocs.xsl @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + diff --git a/xsl/common/param.xsl b/xsl/common/param.xsl new file mode 100644 index 0000000..1e2752c --- /dev/null +++ b/xsl/common/param.xsl @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/common/special-hyph.xsl b/xsl/common/special-hyph.xsl new file mode 100644 index 0000000..dc82593 --- /dev/null +++ b/xsl/common/special-hyph.xsl @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/common/titles.xsl b/xsl/common/titles.xsl new file mode 100644 index 0000000..f186d94 --- /dev/null +++ b/xsl/common/titles.xsl @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/custom_fo.xsl b/xsl/custom_fo.xsl new file mode 100644 index 0000000..686641a --- /dev/null +++ b/xsl/custom_fo.xsl @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + 1pt + solid + red + + + + + + + + + + 1pt + solid + red + + + + + + + + + + diff --git a/xsl/fo.xsl b/xsl/fo.xsl new file mode 100644 index 0000000..65db3a6 --- /dev/null +++ b/xsl/fo.xsl @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/admon.xsl b/xsl/fo/admon.xsl new file mode 100644 index 0000000..45736bd --- /dev/null +++ b/xsl/fo/admon.xsl @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + F0F8FF + FFE4E1 + FFE4E1 + F0F8FF + FFE4E1 + + + + + + + + blue + red + red + blue + red + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/autotoc.xsl b/xsl/fo/autotoc.xsl new file mode 100644 index 0000000..96ae103 --- /dev/null +++ b/xsl/fo/autotoc.xsl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + 1 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/block.xsl b/xsl/fo/block.xsl new file mode 100644 index 0000000..0f2778e --- /dev/null +++ b/xsl/fo/block.xsl @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + 1 + + + + + + fo:block + fo:inline + + + + + + keep-with-next.within-column + keep-with-next.within-line + + + + + always + + bold + + + italic + + + + + + + + + + + + + + + + + + 0.8em + 1em + 1.2em + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/component.xsl b/xsl/fo/component.xsl new file mode 100644 index 0000000..3f1b20d --- /dev/null +++ b/xsl/fo/component.xsl @@ -0,0 +1,566 @@ + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inherit + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto-odd + + + no-force + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto-odd + + + no-force + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto-odd + + + no-force + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + auto-odd + + + + + no-force + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + : + + + + + + + + + + + diff --git a/xsl/fo/fo-fix.xsl b/xsl/fo/fo-fix.xsl new file mode 100644 index 0000000..995a86a --- /dev/null +++ b/xsl/fo/fo-fix.xsl @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/fop.xsl b/xsl/fo/fop.xsl new file mode 100644 index 0000000..409bd0c --- /dev/null +++ b/xsl/fo/fop.xsl @@ -0,0 +1,83 @@ + + + + + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/fop1.xsl b/xsl/fo/fop1.xsl new file mode 100644 index 0000000..033d064 --- /dev/null +++ b/xsl/fo/fop1.xsl @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/formal.xsl b/xsl/fo/formal.xsl new file mode 100644 index 0000000..f46189c --- /dev/null +++ b/xsl/fo/formal.xsl @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + cals + html + + + + + + + Broken table: tr descendent of CALS Table. + The text in the first tr is: + + + + + + Broken table: row descendent of HTML table. + The text in the first row is: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/htmltbl.xsl b/xsl/fo/htmltbl.xsl new file mode 100644 index 0000000..55d015a --- /dev/null +++ b/xsl/fo/htmltbl.xsl @@ -0,0 +1,349 @@ + + + + + + + + + + + + Broken table: row descendant of HTML table. + + + + + + + + + + + + + + + + + + + + + + before + after + + + + + + + + fixed + + + + + + + + 100% + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + start + end + + + center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + center + after + + + "valign=baseline" not supported in XSL-FO, using "after" + + after + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/index.xsl b/xsl/fo/index.xsl new file mode 100644 index 0000000..4e41ca8 --- /dev/null +++ b/xsl/fo/index.xsl @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + body + + + + + + + + + + + + + auto-odd + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/inline.xsl b/xsl/fo/inline.xsl new file mode 100644 index 0000000..945e3ad --- /dev/null +++ b/xsl/fo/inline.xsl @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/lists.xsl b/xsl/fo/lists.xsl new file mode 100644 index 0000000..f5a5b54 --- /dev/null +++ b/xsl/fo/lists.xsl @@ -0,0 +1,573 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1em + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/pagesetup.xsl b/xsl/fo/pagesetup.xsl new file mode 100644 index 0000000..f17e653 --- /dev/null +++ b/xsl/fo/pagesetup.xsl @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/param-refdocs.xsl b/xsl/fo/param-refdocs.xsl new file mode 100644 index 0000000..7219a71 --- /dev/null +++ b/xsl/fo/param-refdocs.xsl @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/xsl/fo/param-rlsnotes.xsl b/xsl/fo/param-rlsnotes.xsl new file mode 100644 index 0000000..bba8ea4 --- /dev/null +++ b/xsl/fo/param-rlsnotes.xsl @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + #F0F8FF + 2pt + + + + always + start + + + pt + + + + + + 0.20em + 0.20em + 0.20em + always + center + + + pt + + 0.20em + 0.20em + 0.20em + + + + + + + + + + always + start + + + + + + pt + + #F0F8FF + 1.12em + 1.40em + 1.68em + + + + + pt + + 1.04em + 1.30em + 1.56em + + + + + pt + + italic + 0.96em + 1.20em + 1.44em + + + + + pt + + 0.88em + 1.10em + 1.32em + + + + + pt + + italic + + + + + pt + + + + + + + + + 9.4pt + + + + diff --git a/xsl/fo/param.xsl b/xsl/fo/param.xsl new file mode 100644 index 0000000..9ffd54e --- /dev/null +++ b/xsl/fo/param.xsl @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + 1.0in + 0.75in + + + + + 0.5in + 0.75in + + + + + + 0pt + 0pt + 0pt + 4pc + + + + 11 + + 0pc + + + + + + + + + + + + +/appendix toc,title +article/appendix nop +/article toc,title +article toc +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +qandadiv toc +qandaset toc +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.97em + + + + 0.8em + 1em + 1.2em + + 0em + 0em + 0.2em + + + + + 0.9em + + + + 2pt + #FFFFEC + + + + + + #D8F8F0 + + + + 0pt + #FFFFFF + + + + + 4pt + 4pt + 4pt + 4pt + + + + + + + + + #D0D0D0 + 2pt + + + + always + start + + + pt + + + + + + 0.48em + 0.60em + 0.72em + always + center + + + pt + + + + + always + center + + + pt + + + + + + + + + + + always + false + start + + + + + + pt + + 1.12em + 1.40em + 1.68em + center + #E8E8E8 + 2pt + + + + + + pt + + italic + 0.96em + 1.20em + 1.44em + + + + + + pt + + 0.91em + 1.14em + 1.37em + + + + + + pt + + italic + 0.86em + 1.08em + 1.30em + + + + + + pt + + + + + + + pt + + italic + black + + + + + + bold + + + pt + + start + false + 0.4em + 0.6em + 0.8em + + + + + + + 0em + 0em + 0.2em + + + + + + + 1em + 0.8em + 1.2em + 0em + 0em + 0.2em + + + + + + + + + pt + + + + + + + + + pt + + + + + + + + + + + + + + + diff --git a/xsl/fo/sections.xsl b/xsl/fo/sections.xsl new file mode 100644 index 0000000..0c5229e --- /dev/null +++ b/xsl/fo/sections.xsl @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + + + 2 + + + + + + 1 + 2 + 3 + 4 + 5 + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsl/fo/table.xsl b/xsl/fo/table.xsl new file mode 100644 index 0000000..cb76054 --- /dev/null +++ b/xsl/fo/table.xsl @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + none + none + + + + + + + + + + + + + + + + + + none + none + + + + + + + + + + + + + + + none + none + + + + none + + + + + + + + + none + none + + + + + + + + + + + + + + + + + + + + + none + none + none + none + + + + Impossible frame on table: + + + none + none + none + none + + + + + + + + + + diff --git a/xsl/fo/titlepage.templates.xml b/xsl/fo/titlepage.templates.xml new file mode 100644 index 0000000..7b95dcd --- /dev/null +++ b/xsl/fo/titlepage.templates.xml @@ -0,0 +1,424 @@ + + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + <subtitle/> + + <corpauthor space-before="0.5em" + font-size="&hsize2;"/> + <authorgroup space-before="0.5em" + font-size="&hsize2;"/> + <author space-before="0.5em" + font-size="&hsize2;"/> + <edition space-before="0.5em"/> + + <othercredit space-before="0.5em"/> + <releaseinfo space-before="0.5em"/> + <copyright space-before="0.5em"/> + + <legalnotice text-align="justify" + font-family="{$body.fontset}"/> + <!-- no space-before here; this is (for now) taken care of in + template match="legalnotice" mode="titlepage.mode" + where it either gets a preceding pagebreak (toplevel article) + or a space-before (non-toplevel article) + --> + + <pubdate space-before="0.5em"/> + <revhistory space-before="0.5em"/> + <abstract space-before="0.5em" + text-align="start" + margin-left="0.5in" + margin-right="0.5in" + font-family="{$body.fontset}"/> + </t:titlepage-content> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + </t:titlepage> + + + <!-- ==================================================================== --> + + + <t:titlepage t:element="set" t:wrapper="fo:block"> + + <t:titlepage-before t:side="recto"> + <xsl:call-template name="titlepage.logo"/> + </t:titlepage-before> + + <t:titlepage-content t:side="recto"> + <title + t:named-template="division.title" + param:node="ancestor-or-self::set[1]" + text-align="center" + font-size="&hsize5;" + space-before="&hsize5space;" + font-weight="bold" + font-family="{$title.fontset}" + color="{$highlevel.title.color}"/> + <subtitle + font-family="{$title.fontset}" + text-align="center"/> + <corpauthor/> + <authorgroup/> + <author/> + <edition/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + </t:titlepage> + + + <!-- ==================================================================== --> + + + <t:titlepage t:element="book" t:wrapper="fo:block"> + + <t:titlepage-before t:side="recto"> + <xsl:call-template name="titlepage.logo"/> + </t:titlepage-before> + + <t:titlepage-content t:side="recto"> + <title + t:named-template="division.title" + param:node="ancestor-or-self::book[1]" + text-align="center" + font-size="&hsize5;" + space-before="&hsize5space;" + font-weight="bold" + font-family="{$title.fontset}" + color="{$highlevel.title.color}"/> + <subtitle + text-align="center" + space-before="0.5em" + font-family="{$title.fontset}" + font-style="italic" + color="{$highlevel.title.color}"/> + <corpauthor font-size="&hsize3;" + keep-with-next="always" + space-before="2in"/> + <authorgroup space-before="2in"/> + <author font-size="&hsize3;" + space-before="2em" + keep-with-next="always"/> + <edition space-before="0.5em"/> + </t:titlepage-content> + + <t:titlepage-before t:side="verso"> + <fo:block break-after="page"/> + </t:titlepage-before> + + <t:titlepage-content t:side="verso"> + <title + t:named-template="book.verso.title" + font-size="&hsize3;" + font-weight="bold" + font-family="{$title.fontset}"/> + <subtitle + font-weight="bold" + font-style="italic" + font-family="{$title.fontset}" + space-after="1em"/> + <edition/> + <corpauthor/> + <authorgroup t:named-template="verso.authorgroup"/> + <author/> + <othercredit/> + <pubdate space-before="1em"/> + <copyright/> + <abstract/> + <legalnotice/> + </t:titlepage-content> + + <t:titlepage-separator> + <fo:block break-after="page"/> + </t:titlepage-separator> + + </t:titlepage> + + + <!-- ==================================================================== --> + + + <t:titlepage t:element="part" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:named-template="division.title" + param:node="ancestor-or-self::part[1]" + text-align="center" + font-size="&hsize5;" + space-before="&hsize5space;" + font-weight="bold" + font-family="{$title.fontset}" + color="{$midlevel.title.color}"/> + <subtitle + text-align="center" + font-size="&hsize4;" + space-before="&hsize4space;" + font-weight='bold' + font-style='italic' + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + + + <!-- ==================================================================== --> + + + <t:titlepage t:element="preface" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::preface[1]" + margin-left="{$title.margin.left}" + font-size="&hsize5;" + font-family="{$title.fontset}" + font-weight="bold" + color="{$midlevel.title.color}"/> + <subtitle + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + + + <!-- ==================================================================== --> + + + <t:titlepage t:element="chapter" t:wrapper="fo:block" + font-family="{$title.fontset}" space-after="2em"> + <t:titlepage-content t:side="recto" margin-left="{$title.margin.left}"> + <title t:named-template="component.title" + param:node="ancestor-or-self::chapter[1]" + font-size="&hsize5;" + font-weight="bold" + color="{$midlevel.title.color}"/> + + <subtitle space-before="0.5em" + font-style="italic" + font-size="&hsize2;" + font-weight="bold" + color="{$midlevel.title.color}"/> + + <corpauthor space-before="0.5em" + space-after="0.5em" + font-size="&hsize2;"/> + + <authorgroup space-before="0.5em" + space-after="0.5em" + font-size="&hsize2;"/> + + <author space-before="0.5em" + space-after="0.5em" + font-size="&hsize2;"/> + + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + + + <!-- ==================================================================== --> + + + <t:titlepage t:element="section" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto" keep-with-next.within-page="always"> + <title + margin-left="{$title.margin.left}" + font-family="{$title.fontset}"/> + <subtitle + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + + + <!-- ==================================================================== --> + + + <t:titlepage t:element="appendix" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:named-template="component.title" + param:node="ancestor-or-self::appendix[1]" + margin-left="{$title.margin.left}" + font-size="&hsize5;" + font-weight="bold" + font-family="{$title.fontset}" + color="{$midlevel.title.color}"/> + <subtitle + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + + +</t:templates> diff --git a/xsl/fo/titlepage.templates.xsl b/xsl/fo/titlepage.templates.xsl new file mode 100644 index 0000000..290c868 --- /dev/null +++ b/xsl/fo/titlepage.templates.xsl @@ -0,0 +1,1537 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl"> + +<!-- This stylesheet was created by template/titlepage.xsl; do not edit it by hand. --> + +<xsl:template name="article.titlepage.before.recto"><xsl:call-template name="titlepage.logo"/> +</xsl:template> + +<xsl:template name="article.titlepage.recto"> + <xsl:choose> + <xsl:when test="articleinfo/title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/> + </xsl:when> + <xsl:when test="artheader/title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="articleinfo/subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/> + </xsl:when> + <xsl:when test="artheader/subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/edition"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/edition"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/edition"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/abstract"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/abstract"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="article.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="article.titlepage.verso"> +</xsl:template> + +<xsl:template name="article.titlepage.separator"> +</xsl:template> + +<xsl:template name="article.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}"> + <xsl:variable name="recto.content"> + <xsl:call-template name="article.titlepage.before.recto"/> + <xsl:call-template name="article.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block text-align="center"><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="article.titlepage.before.verso"/> + <xsl:call-template name="article.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="article.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" keep-with-next="always" font-size="24.8832pt" font-weight="bold" color="{$highlevel.title.color}"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::article[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="edition" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" text-align="justify" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="set.titlepage.before.recto"><xsl:call-template name="titlepage.logo"/> +</xsl:template> + +<xsl:template name="set.titlepage.recto"> + <xsl:choose> + <xsl:when test="setinfo/title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="setinfo/subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/edition"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/edition"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="set.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="set.titlepage.verso"> +</xsl:template> + +<xsl:template name="set.titlepage.separator"> +</xsl:template> + +<xsl:template name="set.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="set.titlepage.before.recto"/> + <xsl:call-template name="set.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="set.titlepage.before.verso"/> + <xsl:call-template name="set.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="set.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}" color="{$highlevel.title.color}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::set[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" font-family="{$title.fontset}" text-align="center"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="edition" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="book.titlepage.before.recto"><xsl:call-template name="titlepage.logo"/> +</xsl:template> + +<xsl:template name="book.titlepage.recto"> + <xsl:choose> + <xsl:when test="bookinfo/title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="bookinfo/subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/authorgroup"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/author"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/edition"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/edition"/> +</xsl:template> + +<xsl:template name="book.titlepage.before.verso"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/> +</xsl:template> + +<xsl:template name="book.titlepage.verso"> + <xsl:choose> + <xsl:when test="bookinfo/title"> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="bookinfo/subtitle"> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/edition"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/edition"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/corpauthor"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/authorgroup"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/author"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/author"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/othercredit"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/abstract"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/abstract"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/legalnotice"/> +</xsl:template> + +<xsl:template name="book.titlepage.separator"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/> +</xsl:template> + +<xsl:template name="book.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="book.titlepage.before.recto"/> + <xsl:call-template name="book.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="book.titlepage.before.verso"/> + <xsl:call-template name="book.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="book.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}" color="{$highlevel.title.color}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::book[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" space-before="0.5em" font-family="{$title.fontset}" font-style="italic" color="{$highlevel.title.color}"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" font-size="17.28pt" keep-with-next="always" space-before="2in"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="2in"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" font-size="17.28pt" space-before="2em" keep-with-next="always"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="edition" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="title" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="book.verso.title"> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" font-weight="bold" font-style="italic" font-family="{$title.fontset}" space-after="1em"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="edition" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:call-template name="verso.authorgroup"> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" space-before="1em"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="part.titlepage.recto"> + <xsl:choose> + <xsl:when test="partinfo/title"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="partinfo/subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="part.titlepage.verso"> +</xsl:template> + +<xsl:template name="part.titlepage.separator"> +</xsl:template> + +<xsl:template name="part.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="part.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="part.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="part.titlepage.before.recto"/> + <xsl:call-template name="part.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="part.titlepage.before.verso"/> + <xsl:call-template name="part.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="part.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="part.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}" color="{$midlevel.title.color}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::part[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="preface.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold" color="{$midlevel.title.color}"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::preface[1]"/> +</xsl:call-template></fo:block> + <xsl:choose> + <xsl:when test="prefaceinfo/subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="preface.titlepage.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage.separator"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="preface.titlepage.before.recto"/> + <xsl:call-template name="preface.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="preface.titlepage.before.verso"/> + <xsl:call-template name="preface.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="preface.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="chapter.titlepage.recto"> + <xsl:choose> + <xsl:when test="chapterinfo/title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="chapterinfo/subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/abstract"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="chapter.titlepage.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage.separator"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}" space-after="2em"> + <xsl:variable name="recto.content"> + <xsl:call-template name="chapter.titlepage.before.recto"/> + <xsl:call-template name="chapter.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block margin-left="{$title.margin.left}"><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="chapter.titlepage.before.verso"/> + <xsl:call-template name="chapter.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="chapter.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" font-size="24.8832pt" font-weight="bold" color="{$midlevel.title.color}"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" font-style="italic" font-size="14.4pt" font-weight="bold" color="{$midlevel.title.color}"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="section.titlepage.recto"> + <xsl:choose> + <xsl:when test="sectioninfo/title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sectioninfo/subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="section.titlepage.verso"> +</xsl:template> + +<xsl:template name="section.titlepage.separator"> +</xsl:template> + +<xsl:template name="section.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="section.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="section.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="section.titlepage.before.recto"/> + <xsl:call-template name="section.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block keep-with-next.within-page="always"><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="section.titlepage.before.verso"/> + <xsl:call-template name="section.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="section.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="appendix.titlepage.recto"> + <xsl:choose> + <xsl:when test="appendixinfo/title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="appendixinfo/subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="appendix.titlepage.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage.separator"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="appendix.titlepage.before.recto"/> + <xsl:call-template name="appendix.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="appendix.titlepage.before.verso"/> + <xsl:call-template name="appendix.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="appendix.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-weight="bold" font-family="{$title.fontset}" color="{$midlevel.title.color}"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::appendix[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +</xsl:stylesheet> diff --git a/xsl/fo/titlepage.xsl b/xsl/fo/titlepage.xsl new file mode 100644 index 0000000..bc4d7d8 --- /dev/null +++ b/xsl/fo/titlepage.xsl @@ -0,0 +1,174 @@ +<?xml version='1.0'?> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + version='1.0'> + + + + +<!-- new template to display logo on titlepage --> +<xsl:template name="titlepage.logo"> + <xsl:if test="$fop-093=1"> + <fo:block/> <!-- to get spacing right with FOP 0.93 --> + </xsl:if> + <fo:block space-before.optimum="3em" space-after.optimum="3em" text-align="center"> + <fo:external-graphic src="../common/images/Mein_Logo.png" + width="73.9mm" height="73.9mm" + content-width="73.9mm" content-height="43.9mm"/> + </fo:block> +</xsl:template> + + + +<!-- OVERRIDE: Not everything in bold + (finetuning in titlepage.templates.xml) --> + +<xsl:attribute-set name="book.titlepage.recto.style"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$title.fontset"/> + </xsl:attribute> + <xsl:attribute name="font-weight">normal</xsl:attribute> + <xsl:attribute name="font-size">12pt</xsl:attribute> + <xsl:attribute name="text-align">center</xsl:attribute> +</xsl:attribute-set> + + + +<!-- corpauthor must have own block just like author: --> +<xsl:template match="corpauthor" mode="titlepage.mode"> + <fo:block> + <xsl:apply-templates mode="titlepage.mode"/> + </fo:block> +</xsl:template> + + + +<!-- subtitle template doesn't have to be called from here anymore: --> +<xsl:template name="book.verso.title"> + <xsl:variable name="subtitle-follows"> + <xsl:if test="following-sibling::subtitle + | following-sibling::info/subtitle + | following-sibling::bookinfo/subtitle">1</xsl:if> + </xsl:variable> + + <fo:block> + <xsl:apply-templates mode="titlepage.mode"/> + </fo:block> +<!-- + <xsl:if test="$subtitle-follows = 1"> + <xsl:apply-templates select="(following-sibling::subtitle + |following-sibling::info/subtitle + |following-sibling::bookinfo/subtitle)[1]" + mode="book.verso.subtitle.mode"/> + </xsl:if> +--> +</xsl:template> + + +<!-- following subtitle doesn't have to be called from here anymore: --> +<xsl:template match="subtitle" mode="book.verso.subtitle.mode"> + <fo:block> + <xsl:apply-templates mode="titlepage.mode"/> + <xsl:if test="following-sibling::subtitle"> + <xsl:text>,</xsl:text> + </xsl:if> + </fo:block> +<!-- + <xsl:if test="following-sibling::subtitle"> + <xsl:apply-templates select="following-sibling::subtitle[1]" + mode="book.verso.subtitle.mode"/> + </xsl:if> +--> +</xsl:template> + + + + +<!-- OVERRIDE: Toplevel articleinfo/legalnotice on fresh page. + And nice formatting of course... -paulvink +--> + +<xsl:template match="legalnotice" mode="titlepage.mode"> + + <!-- 0 pt margin must be there, otherwise padding will push the margin 6pt outwards: --> + <fo:block background-color="#FFFFF0" + margin="0pt" + padding="6pt" + border-width="0.50pt" + border-style="solid" + border-color="black"> + + <xsl:variable name="insert-pagebreak"> + <xsl:if test="parent::articleinfo"> + <xsl:variable name="grandpa-id"> + <!-- is there a grandparent ELEMENT? "../.." might select root node! --> + <xsl:if test="../parent::*"> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="../.."/> + </xsl:call-template> + </xsl:if> + </xsl:variable> + <!-- toplevel article? legalnotice on fresh page. otherwise: on "shipped" default spot --> + <xsl:if test="not(../../parent::*) or $grandpa-id=$rootid">1</xsl:if> + </xsl:if> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$insert-pagebreak='1'"> + <xsl:attribute name="break-before">page</xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="space-before.optimum">2em</xsl:attribute> + <xsl:attribute name="space-before.minimum">1.6em</xsl:attribute> + <xsl:attribute name="space-before.maximum">2.4em</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + + <xsl:if test="title"> <!-- FIXME: add param for using default title? --> + <xsl:call-template name="formal.object.heading"> + <xsl:with-param name="title"> + <xsl:apply-templates select="." mode="title.markup"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + <xsl:apply-templates mode="titlepage.mode"/> + + </fo:block> + +</xsl:template> + + + +<!-- make revhistory a little nicer: --> + +<xsl:template match="revhistory" mode="titlepage.mode"> + <fo:block> + <xsl:apply-templates select="."/> <!-- use normal mode --> + </fo:block> +</xsl:template> + + +<xsl:template match="revhistory/revision" mode="titlepage.mode"> + <fo:block> + <xsl:apply-templates select="."/> <!-- use normal mode --> + </fo:block> +</xsl:template> + + +<!-- edition: --> + +<xsl:template match="edition" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> + <!-- We don't want this: --> + <!-- + <xsl:call-template name="gentext.space"/> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Edition'"/> + </xsl:call-template> + --> +</xsl:template> + + + +</xsl:stylesheet> diff --git a/xsl/fo/verbatim.xsl b/xsl/fo/verbatim.xsl new file mode 100644 index 0000000..495a5b6 --- /dev/null +++ b/xsl/fo/verbatim.xsl @@ -0,0 +1,135 @@ +<?xml version='1.0'?> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" + xmlns:xverb="com.nwalsh.xalan.Verbatim" + xmlns:lxslt="http://xml.apache.org/xslt" + exclude-result-prefixes="sverb xverb lxslt" + version='1.0'> + + +<xsl:template match="programlisting|screen|synopsis"> + <xsl:param name="suppress-numbers" select="'0'"/> + <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' + and @linenumbering = 'numbered' + and $use.extensions != '0' + and $linenumbering.extension != '0'"> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf"> + <xsl:apply-templates/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="no-space-before"> + <xsl:if test="not( preceding-sibling::* + or preceding-sibling::text() + or parent::blockquote )">1</xsl:if> + </xsl:variable> + + <xsl:variable name="inside-admon"> + <xsl:if test="ancestor::note + or ancestor::tip + or ancestor::caution + or ancestor::important + or ancestor::warning">1</xsl:if> + </xsl:variable> + + <fo:block wrap-option='no-wrap' + white-space-collapse='false' + white-space-treatment='preserve' + linefeed-treatment='preserve' + xsl:use-attribute-sets="monospace.verbatim.properties"> + <xsl:if test="$no-space-before=1"> + <xsl:attribute name="space-before.optimum">0em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0em</xsl:attribute> + <xsl:attribute name="space-before.maximum">0.2em</xsl:attribute> + </xsl:if> + + <xsl:choose> + <xsl:when test="$shade.verbatim = 0 or $inside-admon = 1"> + <xsl:copy-of select="$content"/> + </xsl:when> + <xsl:when test="self::screen"> + <fo:block xsl:use-attribute-sets="shade.verbatim.style shade.screen.style"> + <xsl:copy-of select="$content"/> + </fo:block> + </xsl:when> + <xsl:otherwise> + <fo:block xsl:use-attribute-sets="shade.verbatim.style"> + <xsl:copy-of select="$content"/> + </fo:block> + </xsl:otherwise> + </xsl:choose> + </fo:block> +</xsl:template> + + + +<xsl:template match="literallayout"> + <xsl:param name="suppress-numbers" select="'0'"/> + + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' + and @linenumbering = 'numbered' + and $use.extensions != '0' + and $linenumbering.extension != '0'"> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf"> + <xsl:apply-templates/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="possibly-shaded-content"> + <xsl:choose> + <xsl:when test="$shade.verbatim = 0"> + <xsl:copy-of select="$content"/> + </xsl:when> + <xsl:otherwise> + <fo:block xsl:use-attribute-sets="shade.verbatim.style shade.literallayout.style"> + <xsl:copy-of select="$content"/> + </fo:block> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <fo:block wrap-option='no-wrap' + white-space-collapse='false' + white-space-treatment='preserve' + linefeed-treatment="preserve"> + <xsl:choose> + <xsl:when test="@class='monospaced'"> + <fo:block xsl:use-attribute-sets="monospace.verbatim.properties"> + <xsl:copy-of select="$possibly-shaded-content"/> + </fo:block> + </xsl:when> + <xsl:otherwise> + <fo:block text-align='start' + xsl:use-attribute-sets="verbatim.properties"> + <xsl:copy-of select="$possibly-shaded-content"/> + </fo:block> + </xsl:otherwise> + </xsl:choose> + </fo:block> +</xsl:template> + + + +</xsl:stylesheet> diff --git a/xsl/fo/xref.xsl b/xsl/fo/xref.xsl new file mode 100644 index 0000000..dce8926 --- /dev/null +++ b/xsl/fo/xref.xsl @@ -0,0 +1,205 @@ +<?xml version="1.0" encoding="utf-8"?> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:src="http://nwalsh.com/xmlns/litprog/fragment" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + exclude-result-prefixes="src" + version="1.0"> + + + <!-- Give anchor zwsp content, otherwise FOP discards + the empty inline and the link target is lost: --> + + <xsl:template match="anchor"> + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + <fo:inline id="{$id}">​</fo:inline> + </xsl:template> + + + <!-- hyphenate URLs in ulinks: --> + + <xsl:template match="ulink//text()"> + <xsl:variable name="me" select="string(.)"/> + <xsl:variable name="url-attr" select="ancestor::ulink[1]/@url"/> + <xsl:choose> + <xsl:when test="$me = $url-attr + or $me = substring-after($url-attr, ':') + or $me = substring-after($url-attr, '//')"> + <xsl:call-template name="hyphenate-url"> + <xsl:with-param name="url" select="$me"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:copy/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="hyphenate-url"> + <xsl:param name="url" select="''"/> + <xsl:call-template name="hyphenate-special"> + <xsl:with-param name="str" select="$url"/> + <xsl:with-param name="before" select="$url-hyph.before"/> + <xsl:with-param name="after" select="$url-hyph.after"/> + <xsl:with-param name="not-before" select="$url-hyph.not-before"/> + <xsl:with-param name="not-after" select="$url-hyph.not-after"/> + <xsl:with-param name="not-between" select="$url-hyph.not-between"/> + <xsl:with-param name="hyph-char" select="$url-hyph.char"/> + <xsl:with-param name="min-before" select="$url-hyph.min-before"/> + <xsl:with-param name="min-after" select="$url-hyph.min-after"/> + </xsl:call-template> + </xsl:template> + + + <!-- ulink appearance. TODO: Parameterize color etc. --> + + <xsl:template match="ulink" name="ulink"> + <fo:basic-link color="#000080" text-decoration="underline" xsl:use-attribute-sets="xref.properties"> + <xsl:attribute name="external-destination"> + <xsl:call-template name="fo-external-image"> + <xsl:with-param name="filename" select="@url"/> + </xsl:call-template> + </xsl:attribute> + <xsl:choose> + <xsl:when test="count(child::node())=0"> + <xsl:call-template name="hyphenate-url"> + <xsl:with-param name="url" select="@url"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </fo:basic-link> + + <xsl:if test="count(child::node()) != 0 + and string(.) != @url + and $ulink.show != 0"> + <!-- yes, show the URI --> + <xsl:choose> + <xsl:when test="$ulink.footnotes != 0 and not(ancestor::footnote)"> + <fo:footnote> + <xsl:call-template name="ulink.footnote.number"/> + <fo:footnote-body font-family="{$body.font.family}" + font-size="{$footnote.font.size}"> + <fo:block> + <xsl:call-template name="ulink.footnote.number"/> + <xsl:text> </xsl:text> + <fo:inline> + <xsl:value-of select="@url"/> + </fo:inline> + </fo:block> + </fo:footnote-body> + </fo:footnote> + </xsl:when> + <xsl:otherwise> + <fo:inline hyphenate="false"> + <xsl:text> [</xsl:text> + <xsl:call-template name="hyphenate-url"> + <xsl:with-param name="url" select="@url"/> + </xsl:call-template> + <xsl:text>]</xsl:text> + </fo:inline> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:template> + + + <!-- ==================================================================== --> + + + <!-- link --> + + <xsl:template match="link" name="link"> + <xsl:param name="linkend" select="@linkend"/> + <xsl:param name="targets" select="key('id',$linkend)"/> + <xsl:param name="target" select="$targets[1]"/> + + <xsl:call-template name="check.id.unique"> + <xsl:with-param name="linkend" select="$linkend"/> + </xsl:call-template> + + <xsl:variable name="xrefstyle"> + <xsl:choose> + <xsl:when test="@role and not(@xrefstyle) + and $use.role.as.xrefstyle != 0"> + <xsl:value-of select="@role"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@xrefstyle"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <fo:basic-link internal-destination="{$linkend}" + xsl:use-attribute-sets="xref.properties"> + <xsl:choose> + <xsl:when test="count(child::node()) > 0"> + <!-- If it has content, use it --> + <xsl:apply-templates/> + </xsl:when> + <xsl:otherwise> + <!-- else look for an endterm --> + <xsl:choose> + <xsl:when test="@endterm"> + <xsl:variable name="etargets" select="key('id',@endterm)"/> + <xsl:variable name="etarget" select="$etargets[1]"/> + <xsl:choose> + <xsl:when test="count($etarget) = 0"> + <xsl:message> + <xsl:value-of select="count($etargets)"/> + <xsl:text>Endterm points to nonexistent ID: </xsl:text> + <xsl:value-of select="@endterm"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$etarget" mode="endterm"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + + <xsl:otherwise> + <xsl:message> + <xsl:text>Link element has no content and no Endterm. </xsl:text> + <xsl:text>Nothing to show in the link to </xsl:text> + <xsl:value-of select="$target"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </fo:basic-link> + + <!-- Add standard page reference? --> + <xsl:choose> + <!-- negative xrefstyle in instance turns it off --> + <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:') + and contains($xrefstyle, 'nopage')"> + </xsl:when> + <!-- so does a negative insert.link.page.number --> + <xsl:when test="$insert.link.page.number = 'no' + or $insert.link.page.number = '0'"> + </xsl:when> + <xsl:when test="($insert.link.page.number = 'yes' or $insert.link.page.number = '1') + or + ($insert.link.page.number = 'maybe' + and (local-name($target) = 'para' + or + (starts-with(normalize-space($xrefstyle), 'select:') + and (contains($xrefstyle, 'page') or contains($xrefstyle, 'Page')))))"> + <xsl:apply-templates select="$target" mode="page.citation"> + <xsl:with-param name="id" select="$linkend"/> + </xsl:apply-templates> + </xsl:when> + </xsl:choose> + </xsl:template> + + + + +</xsl:stylesheet> -- GitLab