# standard css for all
# this should gradually move to the layouts that need it
$layout->use_stylesheet("$_.css") for qw(
- main menu list_accounts jquery.autocomplete
+ main menu common list_accounts jquery.autocomplete
jquery.multiselect2side
ui-lightness/jquery-ui
jquery-ui.custom
$form->{title} = $locale->text('BWA');
+ $::request->layout->add_stylesheets('bwa.css');
$form->header;
print $form->parse_html_template('rp/bwa');
-2012-03-02 - Stylesheet normalization
+Some notes about stylesheets:
-After this, the stylesheets follow these conventions:
+* NOT every directory in css/ is considered a style to be chosen. The available
+ stylesheets are hardcoded in at least 3 places:
+ - SL/Auth.pm:read_user
+ - SL/Controller/Admin.pm:init_stylesheets
+ - bin/mozilla/am.pl:config
+ yes it sucks. change it, if you like.
-* Every directory in css/ is considered a style to be chosen.
-* lx-office-erp is used as the fallback style if no style was found or the
- style chosen was invalid.
-* Missing stylesheets for the other styles have been
- linked from lx-office-erp, so that they will used like before.
-* If you edit a file, make sure it's not a symlink.
-* The previous named stylesheets are now main.css in their respective directories.
-* menuv3 and menuv4 are now distict so that it's possible to include both
- without overriding each other.
-* All relative image links needed to get bumped an additional ../
-* If you add another style, be sure to test tabs, calendars, all menus,
- autocompletion, charts, and multiselect.
+* If a stylesheet is requests from controller code, it is searched in this order:
+ - css/<stylesheet_of_current_user>/<path>
+ - css/<path>
+ - <path>
+
+ so common libraries can be put higher here, to be included by any stylesheet
+
+* 'kivitendo' is used as the fallback style if no style was found or the style
+ chosen was invalid.
+
+* Pay attention to the position of relative image urls. Most should not be
+ included in css anyway but should use the generated icon maps. For the rest,
+ a couple of ../ may be needed to get the right path.
+
+* If you edit another styles, these are things that are known to get broken.
+ Be sure to test them thoroughly:
+ - tabs
+ - calendars
+ - all menus
+ - autocompletion (parts/customers)
+ - charts of accounts
+ - multiselect
+ - ckeeditor
+ - jquery-ui widgets (i hate those things)
--- /dev/null
+/* Jobverwaltung */
+.background_job_list tbody pre,
+.background_job_details tbody pre {
+ margin: 0px;
+}
+
+.background_job_details tbody th {
+ text-align: right;
+ vertical-align: top;
+}
+
+.background_job_details tbody td {
+ vertical-align: top;
+}
--- /dev/null
+/* Allgemeine Schriftdefinition */
+th,td {
+ font-family: Arial, Verdana, Helvetica, Sans-serif;
+ font-size:small;
+}
+
+@page {
+ size: landscape;
+ margin: 0.5cm;
+}
+
+/* Definition Tabellenueberschrift */
+
+.left { text-align:left; }
+.center { text-align:center; }
+.right { text-align:right; }
+
+tr.headline { border:0; }
+tr.headline td { border:0; }
+h3 { font-size:120%; }
+h3 { font-size:100%; }
+
+/* Tabellenkopf */
+th {
+ font-weight: bold;
+ border-bottom: solid thin black;
+ padding:0 10px;
+ text-align:right;
+}
+
+th.left { border-left: solid thin black; }
+th.right { border-right: solid thin black; }
+
+.querkopf th.right { text-align:center; }
+.querkopf th {
+ border-top: solid thin black;
+ border-bottom:0;
+}
+
+/* Tabelleninhalt */
+td {
+ text-align:right;
+ padding:0 0.5em;
+}
+td.left { border-left: solid thin black; }
+td.right { border-right: solid thin black; }
+
+
+/* jede zweite Zeile grau hinterlegen */
+tr.grey {
+ background:#f0f0f0;
+}
+
+/* letzte Zeile in der Tabelle */
+#last td{ border-bottom: solid thin black; }
+
+/* Zwischensumme/-ueberschriften */
+tr.subtotal td { font-weight: bold; }
+
+/* Fusszeile unter der Tabelle */
+td.footer {
+ text-align:right;
+ font-size:smaller;
+}
--- /dev/null
+
+/* class for numeric columns in tables */
+.numeric { text-align: right }
+
+/* various oneshot decoration for legacy purpose. dont use */
+.small-text { font-size: 70% }
+.bold { font-weight: bold }
+
+.float-left { float: left }
+.float-right { float: right }
+
+/* quirk to force certain constructs to block context */
+.block-context { overflow: hidden }
+
+/* position */
+.position-relative { position: relative }
+.position-absolute { position: absolute }
+
+
+/* media stuff */
+@media screen { .noscreen { display: none } }
+@media print { .noprint { display: none } }
+@media handheld { .nomobile { display: none } }
+
+body { behavior:url("csshover.htc") }
+
+/* class to fix container around floats */
+.clearfix:after {
+ clear:both;
+ content:".";
+ display:block;
+ font-size:0;
+ height:0;
+ visibility:hidden;
+}
+
+/* CTI */
+a.cti_call_action {
+ display: inline-block;
+ padding-left: 18px;
+ height: 16px;
+ position: relative;
+ top: 2px;
+ vertical-align: center;
+ background-image: url(../../image/icons/16x16/phone.png);
+ background-repeat: no-repeat;
+}
+
+/* the cvars table in the 2. row */
+.row2-cvars-table tr { vertical-align: top }
+.row2-cvars-table th { text-align: right; padding-left: 15px; padding-right: 0 }
+.row2-cvars-table td, .row2-cvars-table th { padding-top: 10px }
--- /dev/null
+<attach event="ondocumentready" handler="parseStylesheets" />\r
+<script>\r
+/**\r
+ * Whatever:hover - V2.02.060206 - hover, active & focus\r
+ * ------------------------------------------------------------\r
+ * (c) 2005 - Peter Nederlof\r
+ * Peterned - http://www.xs4all.nl/~peterned/\r
+ * License - http://creativecommons.org/licenses/LGPL/2.1/\r
+ *\r
+ * Whatever:hover is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU Lesser General Public\r
+ * License as published by the Free Software Foundation; either\r
+ * version 2.1 of the License, or (at your option) any later version.\r
+ *\r
+ * Whatever:hover is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+ * Lesser General Public License for more details.\r
+ *\r
+ * Credits and thanks to:\r
+ * Arnoud Berendsen, Martin Reurings, Robert Hanson\r
+ *\r
+ * howto: body { behavior:url("csshover.htc"); }\r
+ * ------------------------------------------------------------\r
+ */\r
+\r
+var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea)([#.][^ ]+)?:unknown)/i,\r
+currentSheet, doc = window.document, hoverEvents = [], activators = {\r
+ onhover:{on:'onmouseover', off:'onmouseout'},\r
+ onactive:{on:'onmousedown', off:'onmouseup'},\r
+ onunknown:{on:'onfocus', off:'onblur'}\r
+}\r
+\r
+function parseStylesheets() {\r
+ if(!/MSIE (5|6)/.test(navigator.userAgent)) return;\r
+ window.attachEvent('onunload', unhookHoverEvents);\r
+ var sheets = doc.styleSheets, l = sheets.length;\r
+ for(var i=0; i<l; i++) \r
+ parseStylesheet(sheets[i]);\r
+}\r
+ function parseStylesheet(sheet) {\r
+ if(sheet.imports) {\r
+ try {\r
+ var imports = sheet.imports, l = imports.length;\r
+ for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);\r
+ } catch(securityException){}\r
+ }\r
+\r
+ try {\r
+ var rules = (currentSheet = sheet).rules, l = rules.length;\r
+ for(var j=0; j<l; j++) parseCSSRule(rules[j]);\r
+ } catch(securityException){}\r
+ }\r
+\r
+ function parseCSSRule(rule) {\r
+ var select = rule.selectorText, style = rule.style.cssText;\r
+ if(!csshoverReg.test(select) || !style) return;\r
+ \r
+ var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');\r
+ var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);\r
+ var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];\r
+ var affected = select.replace(/:(hover|active|unknown).*$/, '');\r
+ var elements = getElementsBySelect(affected);\r
+ if(elements.length == 0) return;\r
+\r
+ currentSheet.addRule(newSelect, style);\r
+ for(var i=0; i<elements.length; i++)\r
+ new HoverElement(elements[i], className, activators[pseudo]);\r
+ }\r
+\r
+function HoverElement(node, className, events) {\r
+ if(!node.hovers) node.hovers = {};\r
+ if(node.hovers[className]) return;\r
+ node.hovers[className] = true;\r
+ hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });\r
+ hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });\r
+}\r
+ function hookHoverEvent(node, type, handler) {\r
+ node.attachEvent(type, handler);\r
+ hoverEvents[hoverEvents.length] = { \r
+ node:node, type:type, handler:handler \r
+ };\r
+ }\r
+\r
+ function unhookHoverEvents() {\r
+ for(var e,i=0; i<hoverEvents.length; i++) {\r
+ e = hoverEvents[i]; \r
+ e.node.detachEvent(e.type, e.handler);\r
+ }\r
+ }\r
+\r
+function getElementsBySelect(rule) {\r
+ var parts, nodes = [doc];\r
+ parts = rule.split(' ');\r
+ for(var i=0; i<parts.length; i++) {\r
+ nodes = getSelectedNodes(parts[i], nodes);\r
+ } return nodes;\r
+}\r
+ function getSelectedNodes(select, elements) {\r
+ var result, node, nodes = [];\r
+ var identify = (/\#([a-z0-9_-]+)/i).exec(select);\r
+ if(identify) {\r
+ var element = doc.getElementById(identify[1]);\r
+ return element? [element]:nodes;\r
+ }\r
+ \r
+ var classname = (/\.([a-z0-9_-]+)/i).exec(select);\r
+ var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');\r
+ var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;\r
+ for(var i=0; i<elements.length; i++) {\r
+ result = tagName? elements[i].all.tags(tagName):elements[i].all; \r
+ for(var j=0; j<result.length; j++) {\r
+ node = result[j];\r
+ if(classReg && !classReg.test(node.className)) continue;\r
+ nodes[nodes.length] = node;\r
+ }\r
+ } \r
+ \r
+ return nodes;\r
+ }\r
+</script>
\ No newline at end of file
--- /dev/null
+.ac_results {
+ padding: 0px;
+ border: 1px solid black;
+ background-color: white;
+ overflow: hidden;
+ z-index: 99999;
+}
+
+.ac_results ul {
+ width: 100%;
+ list-style-position: outside;
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.ac_results li {
+ margin: 0px;
+ padding: 2px 5px;
+ cursor: default;
+ display: block;
+ /*
+ if width will be 100% horizontal scrollbar will apear
+ when scroll mode will be used
+ */
+ /*width: 100%;*/
+ font: menu;
+ font-size: 12px;
+ /*
+ it is very important, if line-height not setted or setted
+ in relative units scroll will be broken in firefox
+ */
+ line-height: 16px;
+ overflow: hidden;
+}
+
+.ac_loading {
+ background: white url('indicator.gif') right center no-repeat;
+}
+
+.ac_odd {
+ background-color: #eee;
+}
+
+.ac_over {
+ background-color: #0A246A;
+ color: white;
+}
--- /dev/null
+/* multiselect2side plugin */
+.ms2side__div {
+ clear: left;
+ width: 100%;
+ padding: 1px;
+ float: left;
+ background : url('') repeat-x; /* HACK FOR CHROME */
+}
+
+.ms2side__select {
+ float: left;
+}
+
+.ms2side__header {
+ color: blue;
+ background-color: #EEEEFF;
+}
+
+.ms2side__options, .ms2side__updown {
+ float: left;
+ font-size: 10pt;
+ margin: 0;
+ padding: 0 8px;
+ width: 40px;
+ color: black;
+ text-align: center;
+ overflow: hidden;
+}
+
+.ms2side__updown {
+ font-size: 9pt;
+}
+
+.ms2side__options p, .ms2side__updown p {
+ margin: 2px 0;
+ padding: 0;
+ cursor: pointer;
+ border: 1px solid black;
+}
+
+.ms2side__options p.ms2side_hover, .ms2side__updown p.ms2side_hover {
+ background-color: #F0F0FF;
+ border-color: #0000FF;
+ cursor: pointer;
+}
+
+.ms2side__options p.ms2side__hide, .ms2side__updown p.ms2side__hide {
+ cursor: default;
+ color: grey;
+ border: 1px solid grey;
+ background-color: #F0F0F0;
+}
+
+.ms2side__div select {
+ width: 400px;
+ float: left;
+}
+++ /dev/null
-../lx-office-erp/background_jobs.css
\ No newline at end of file
+++ /dev/null
-/* Allgemeine Schriftdefinition */
-th,td {
- font-family: Arial, Verdana, Helvetica, Sans-serif;
- font-size:small;
-}
-
-@page {
- size: landscape;
- margin: 0.5cm;
-}
-
-/* Definition Tabellenueberschrift */
-
-.left { text-align:left; }
-.center { text-align:center; }
-.right { text-align:right; }
-
-tr.headline { border:0; }
-tr.headline td { border:0; }
-h3 { font-size:120%; }
-h3 { font-size:100%; }
-
-/* Tabellenkopf */
-th {
- font-weight: bold;
- border-bottom: solid thin black;
- padding:0 10px;
- text-align:right;
-}
-
-th.left { border-left: solid thin black; }
-th.right { border-right: solid thin black; }
-
-.querkopf th.right { text-align:center; }
-.querkopf th {
- border-top: solid thin black;
- border-bottom:0;
-}
-
-/* Tabelleninhalt */
-td {
- text-align:right;
- padding:0 0.5em;
-}
-td.left { border-left: solid thin black; }
-td.right { border-right: solid thin black; }
-
-
-/* jede zweite Zeile grau hinterlegen */
-tr.grey {
- background:#f0f0f0;
-}
-
-/* letzte Zeile in der Tabelle */
-#last td{ border-bottom: solid thin black; }
-
-/* Zwischensumme/-ueberschriften */
-tr.subtotal td { font-weight: bold; }
-
-/* Fusszeile unter der Tabelle */
-td.footer {
- text-align:right;
- font-size:smaller;
-}
+++ /dev/null
-<attach event="ondocumentready" handler="parseStylesheets" />\r
-<script>\r
-/**\r
- * Whatever:hover - V2.02.060206 - hover, active & focus\r
- * ------------------------------------------------------------\r
- * (c) 2005 - Peter Nederlof\r
- * Peterned - http://www.xs4all.nl/~peterned/\r
- * License - http://creativecommons.org/licenses/LGPL/2.1/\r
- *\r
- * Whatever:hover is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * Whatever:hover is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * Credits and thanks to:\r
- * Arnoud Berendsen, Martin Reurings, Robert Hanson\r
- *\r
- * howto: body { behavior:url("csshover.htc"); }\r
- * ------------------------------------------------------------\r
- */\r
-\r
-var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea)([#.][^ ]+)?:unknown)/i,\r
-currentSheet, doc = window.document, hoverEvents = [], activators = {\r
- onhover:{on:'onmouseover', off:'onmouseout'},\r
- onactive:{on:'onmousedown', off:'onmouseup'},\r
- onunknown:{on:'onfocus', off:'onblur'}\r
-}\r
-\r
-function parseStylesheets() {\r
- if(!/MSIE (5|6)/.test(navigator.userAgent)) return;\r
- window.attachEvent('onunload', unhookHoverEvents);\r
- var sheets = doc.styleSheets, l = sheets.length;\r
- for(var i=0; i<l; i++) \r
- parseStylesheet(sheets[i]);\r
-}\r
- function parseStylesheet(sheet) {\r
- if(sheet.imports) {\r
- try {\r
- var imports = sheet.imports, l = imports.length;\r
- for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);\r
- } catch(securityException){}\r
- }\r
-\r
- try {\r
- var rules = (currentSheet = sheet).rules, l = rules.length;\r
- for(var j=0; j<l; j++) parseCSSRule(rules[j]);\r
- } catch(securityException){}\r
- }\r
-\r
- function parseCSSRule(rule) {\r
- var select = rule.selectorText, style = rule.style.cssText;\r
- if(!csshoverReg.test(select) || !style) return;\r
- \r
- var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');\r
- var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);\r
- var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];\r
- var affected = select.replace(/:(hover|active|unknown).*$/, '');\r
- var elements = getElementsBySelect(affected);\r
- if(elements.length == 0) return;\r
-\r
- currentSheet.addRule(newSelect, style);\r
- for(var i=0; i<elements.length; i++)\r
- new HoverElement(elements[i], className, activators[pseudo]);\r
- }\r
-\r
-function HoverElement(node, className, events) {\r
- if(!node.hovers) node.hovers = {};\r
- if(node.hovers[className]) return;\r
- node.hovers[className] = true;\r
- hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });\r
- hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });\r
-}\r
- function hookHoverEvent(node, type, handler) {\r
- node.attachEvent(type, handler);\r
- hoverEvents[hoverEvents.length] = { \r
- node:node, type:type, handler:handler \r
- };\r
- }\r
-\r
- function unhookHoverEvents() {\r
- for(var e,i=0; i<hoverEvents.length; i++) {\r
- e = hoverEvents[i]; \r
- e.node.detachEvent(e.type, e.handler);\r
- }\r
- }\r
-\r
-function getElementsBySelect(rule) {\r
- var parts, nodes = [doc];\r
- parts = rule.split(' ');\r
- for(var i=0; i<parts.length; i++) {\r
- nodes = getSelectedNodes(parts[i], nodes);\r
- } return nodes;\r
-}\r
- function getSelectedNodes(select, elements) {\r
- var result, node, nodes = [];\r
- var identify = (/\#([a-z0-9_-]+)/i).exec(select);\r
- if(identify) {\r
- var element = doc.getElementById(identify[1]);\r
- return element? [element]:nodes;\r
- }\r
- \r
- var classname = (/\.([a-z0-9_-]+)/i).exec(select);\r
- var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');\r
- var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;\r
- for(var i=0; i<elements.length; i++) {\r
- result = tagName? elements[i].all.tags(tagName):elements[i].all; \r
- for(var j=0; j<result.length; j++) {\r
- node = result[j];\r
- if(classReg && !classReg.test(node.className)) continue;\r
- nodes[nodes.length] = node;\r
- }\r
- } \r
- \r
- return nodes;\r
- }\r
-</script>
\ No newline at end of file
+++ /dev/null
-../lx-office-erp/jquery.autocomplete.css
\ No newline at end of file
+++ /dev/null
-../lx-office-erp/jquery.multiselect2side.css
\ No newline at end of file
color: black;
font-weight: bolder;
}
-/* media stuff */
-@media screen {
-.noscreen {
-/* items with this class won't display */
- display: none;
-}
-}
-@media print {
-.noprint {
-/* items with this class won't print */
- display: none;
-}
-}
.filecontent {
border: 1px solid blue;
padding-left: 2px;
.unbalanced_ledger {
background-color: #ffa0a0;
}
-.clearfix:after {
- clear: both;
- content: ".";
- display: block;
- height: 0;
- visibility: hidden;
-}
.flash_message_error {
background-color: #FFD6D6;
border: 1px solid #AE0014;
margin-right: 6px;
}
-.small-text {
- font-size: 0.75em;
-}
-
-.float-left {
- float: left;
-}
-.float-right {
- float: right;
-}
-
-.block-context {
- overflow: hidden;
-}
-
-.position-relative {
- position: relative;
-}
-
-.position-absolute {
- position: absolute;
-}
-
-.part_picker {
- padding-right: 16px;
-}
-
.customer-vendor-picker-undefined,
.partpicker-undefined {
color: red;
span.toggle_selected {
font-weight: bold;
}
-
-/* CTI */
-a.cti_call_action {
- display: inline-block;
- padding-left: 18px;
- height: 16px;
- position: relative;
- top: 2px;
- vertical-align: center;
- background-image: url(../../image/icons/16x16/phone.png);
- background-repeat: no-repeat;
-}
-
-/* the cvars table in the 2. row */
-.row2-cvars-table tr {vertical-align: top;}
-.row2-cvars-table th {text-align: right; padding-left: 15px; padding-right: 0;}
-.row2-cvars-table td, .row2-cvars-table th {padding-top: 10px;}
+++ /dev/null
-/* Jobverwaltung */
-.background_job_list tbody pre,
-.background_job_details tbody pre {
- margin: 0px;
-}
-
-.background_job_details tbody th {
- text-align: right;
- vertical-align: top;
-}
-
-.background_job_details tbody td {
- vertical-align: top;
-}
+++ /dev/null
-<attach event="ondocumentready" handler="parseStylesheets" />\r
-<script>\r
-/**\r
- * Whatever:hover - V2.02.060206 - hover, active & focus\r
- * ------------------------------------------------------------\r
- * (c) 2005 - Peter Nederlof\r
- * Peterned - http://www.xs4all.nl/~peterned/\r
- * License - http://creativecommons.org/licenses/LGPL/2.1/\r
- *\r
- * Whatever:hover is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * Whatever:hover is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * Credits and thanks to:\r
- * Arnoud Berendsen, Martin Reurings, Robert Hanson\r
- *\r
- * howto: body { behavior:url("csshover.htc"); }\r
- * ------------------------------------------------------------\r
- */\r
-\r
-var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea)([#.][^ ]+)?:unknown)/i,\r
-currentSheet, doc = window.document, hoverEvents = [], activators = {\r
- onhover:{on:'onmouseover', off:'onmouseout'},\r
- onactive:{on:'onmousedown', off:'onmouseup'},\r
- onunknown:{on:'onfocus', off:'onblur'}\r
-}\r
-\r
-function parseStylesheets() {\r
- if(!/MSIE (5|6)/.test(navigator.userAgent)) return;\r
- window.attachEvent('onunload', unhookHoverEvents);\r
- var sheets = doc.styleSheets, l = sheets.length;\r
- for(var i=0; i<l; i++) \r
- parseStylesheet(sheets[i]);\r
-}\r
- function parseStylesheet(sheet) {\r
- if(sheet.imports) {\r
- try {\r
- var imports = sheet.imports, l = imports.length;\r
- for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);\r
- } catch(securityException){}\r
- }\r
-\r
- try {\r
- var rules = (currentSheet = sheet).rules, l = rules.length;\r
- for(var j=0; j<l; j++) parseCSSRule(rules[j]);\r
- } catch(securityException){}\r
- }\r
-\r
- function parseCSSRule(rule) {\r
- var select = rule.selectorText, style = rule.style.cssText;\r
- if(!csshoverReg.test(select) || !style) return;\r
- \r
- var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');\r
- var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);\r
- var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];\r
- var affected = select.replace(/:(hover|active|unknown).*$/, '');\r
- var elements = getElementsBySelect(affected);\r
- if(elements.length == 0) return;\r
-\r
- currentSheet.addRule(newSelect, style);\r
- for(var i=0; i<elements.length; i++)\r
- new HoverElement(elements[i], className, activators[pseudo]);\r
- }\r
-\r
-function HoverElement(node, className, events) {\r
- if(!node.hovers) node.hovers = {};\r
- if(node.hovers[className]) return;\r
- node.hovers[className] = true;\r
- hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });\r
- hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });\r
-}\r
- function hookHoverEvent(node, type, handler) {\r
- node.attachEvent(type, handler);\r
- hoverEvents[hoverEvents.length] = { \r
- node:node, type:type, handler:handler \r
- };\r
- }\r
-\r
- function unhookHoverEvents() {\r
- for(var e,i=0; i<hoverEvents.length; i++) {\r
- e = hoverEvents[i]; \r
- e.node.detachEvent(e.type, e.handler);\r
- }\r
- }\r
-\r
-function getElementsBySelect(rule) {\r
- var parts, nodes = [doc];\r
- parts = rule.split(' ');\r
- for(var i=0; i<parts.length; i++) {\r
- nodes = getSelectedNodes(parts[i], nodes);\r
- } return nodes;\r
-}\r
- function getSelectedNodes(select, elements) {\r
- var result, node, nodes = [];\r
- var identify = (/\#([a-z0-9_-]+)/i).exec(select);\r
- if(identify) {\r
- var element = doc.getElementById(identify[1]);\r
- return element? [element]:nodes;\r
- }\r
- \r
- var classname = (/\.([a-z0-9_-]+)/i).exec(select);\r
- var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');\r
- var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;\r
- for(var i=0; i<elements.length; i++) {\r
- result = tagName? elements[i].all.tags(tagName):elements[i].all; \r
- for(var j=0; j<result.length; j++) {\r
- node = result[j];\r
- if(classReg && !classReg.test(node.className)) continue;\r
- nodes[nodes.length] = node;\r
- }\r
- } \r
- \r
- return nodes;\r
- }\r
-</script>
\ No newline at end of file
+++ /dev/null
-.ac_results {
- padding: 0px;
- border: 1px solid black;
- background-color: white;
- overflow: hidden;
- z-index: 99999;
-}
-
-.ac_results ul {
- width: 100%;
- list-style-position: outside;
- list-style: none;
- padding: 0;
- margin: 0;
-}
-
-.ac_results li {
- margin: 0px;
- padding: 2px 5px;
- cursor: default;
- display: block;
- /*
- if width will be 100% horizontal scrollbar will apear
- when scroll mode will be used
- */
- /*width: 100%;*/
- font: menu;
- font-size: 12px;
- /*
- it is very important, if line-height not setted or setted
- in relative units scroll will be broken in firefox
- */
- line-height: 16px;
- overflow: hidden;
-}
-
-.ac_loading {
- background: white url('indicator.gif') right center no-repeat;
-}
-
-.ac_odd {
- background-color: #eee;
-}
-
-.ac_over {
- background-color: #0A246A;
- color: white;
-}
+++ /dev/null
-/* multiselect2side plugin */
-.ms2side__div {
- clear: left;
- width: 100%;
- padding: 1px;
- float: left;
- background : url('') repeat-x; /* HACK FOR CHROME */
-}
-
-.ms2side__select {
- float: left;
-}
-
-.ms2side__header {
- color: blue;
- background-color: #EEEEFF;
-}
-
-.ms2side__options, .ms2side__updown {
- float: left;
- font-size: 10pt;
- margin: 0;
- padding: 0 8px;
- width: 40px;
- color: black;
- text-align: center;
- overflow: hidden;
-}
-
-.ms2side__updown {
- font-size: 9pt;
-}
-
-.ms2side__options p, .ms2side__updown p {
- margin: 2px 0;
- padding: 0;
- cursor: pointer;
- border: 1px solid black;
-}
-
-.ms2side__options p.ms2side_hover, .ms2side__updown p.ms2side_hover {
- background-color: #F0F0FF;
- border-color: #0000FF;
- cursor: pointer;
-}
-
-.ms2side__options p.ms2side__hide, .ms2side__updown p.ms2side__hide {
- cursor: default;
- color: grey;
- border: 1px solid grey;
- background-color: #F0F0F0;
-}
-
-.ms2side__div select {
- width: 400px;
- float: left;
-}
color: green;
}
-td.numeric { /* class for numeric columns in tables */
- text-align: right
-}
-
h2.confirm {
color: blue;
font-size: 14pt;
font-weight: bolder;
}
-/* media stuff */
-
-@media screen {
- .noscreen { /* items with this class won't display */
- display: none;
- }
-}
-
-@media print {
- .noprint { /* items with this class won't print */
- display: none;
- }
-}
.filecontent {
border: 1px solid blue;
background-color: #ffa0a0;
}
-.clearfix:after {
- clear:both;
- content:".";
- display:block;
- font-size:0;
- height:0;
- visibility:hidden;
-}
-
.flash_message_error {
background-color:#FFD6D6;
border: 1px solid #AE0014;
margin-right: 6px;
}
-.small-text {
- font-size: 0.75em;
-}
-
-.float-left {
- float: left;
-}
-.float-right {
- float: right;
-}
-
-.block-context {
- overflow: hidden;
-}
-
-.position-relative {
- position: relative;
-}
-
-.position-absolute {
- position: absolute;
-}
-
.part_picker {
padding-right: 16px;
}
span.toggle_selected {
font-weight: bold;
}
-
-/* CTI */
-a.cti_call_action {
- display: inline-block;
- padding-left: 18px;
- height: 16px;
- position: relative;
- top: 2px;
- vertical-align: center;
- background-image: url(../../image/icons/16x16/phone.png);
- background-repeat: no-repeat;
-}
-
-/* the cvars table in the 2. row */
-.row2-cvars-table tr {vertical-align: top;}
-.row2-cvars-table th {text-align: right; padding-left: 15px; padding-right: 0;}
-.row2-cvars-table td, .row2-cvars-table th {padding-top: 10px;}
margin:0px;
}
-body {
-behavior:url("csshover.htc");
-}
-
#menuv3 {
width:99.8%;
float:left;
[%- USE HTML %]
[%- USE LxERP %]
-<link rel="stylesheet" type="text/css" href="css/kivitendo/bwa.css">
-
<table border=0 cellpadding=0 cellspacing=0>
<tr class="headline">
<td class="left">[% company %]</td>