view release on metacpan or search on metacpan
doc/html/CustomButtons.html view on Meta::CPAN
<p>This can be overloaded by a global js variable: CSS_PREFIX
if declared before the inclusion of this Library</p>
<p>Notice the <b>btn-focus</b>, <b>btn-hover</b> and <b>flash</b> classnames that are used to style
the buttons in their different states.</p>
<pre> /* IE fix: to the ridiculously wide buttons in IE */
.gva-btn-container .btn {width:1pt;overflow:visible;}
/* END: IE specific */
.gva-actionsbar {background-color:#E8E8E8;border:1px solid #8c8c8c;border-width:1px 0px;height:25px;padding:4px 0 1px;}
.gva-btn-container {display:inline;}
.gva-btn-container .btn {margin:0 3px;font-size:12px;cursor:pointer;}
.gva-btn-container .btn {
font-family:verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif;
background:none;
border:none;
cursor:pointer;
padding:1px 2px;
color:#000;
background-color:transparent !important;
}
.gva-btn-container .btn {float:left;}
.gva-btn-container.btn-focus .btn {color:#aa0000;}
.gva-btn-container span {display:block;float:left;height:21px;}
doc/html/Grid.html view on Meta::CPAN
height:28px;
}
.dmweb-grid-actionsbar {float:left;}
.dmweb-paginatorbar {float:right;width:250px;}
.dmweb-paginatorbar div {width:16px;height:16px;cursor:pointer;float:right;}
.dmweb-paginatorbar div.first {background:url(page-first.gif) no-repeat top center;}
.dmweb-paginatorbar div.last {background:url(page-last.gif) no-repeat top center;}
.dmweb-paginatorbar div.back {background:url(page-prev.gif) no-repeat top center;}
.dmweb-paginatorbar div.forward {background:url(page-next.gif) no-repeat top center;}
.dmweb-paginatorbar div.inactive {cursor:default;opacity:0.25;filter:alpha(opacity=25);}
.dmweb-paginatorbar div.text {text-align:center;width:140px;color:#4b34c5;font-size:10pt;}
.dmweb-paginatorbar span.dmweb-btn-container {display:block;margin-right:4px;}
/* grid table */
.dmweb-grid {width:100%;}
.dmweb-grid th.grid-header {
text-align:center;
padding:2px;
font-size:75%;
color: #183E6C;
background-color: #D0D6ED;
border:1px solid #6F82A5;
}
.dmweb-grid td {font-size:75%;color:#183E6C;}
.dmweb-grid .grid-marker {width:15px;background-color: #D0D6ED;border:1px solid #6F82A5;}
.dmweb-grid tr.liste_highlight td.grid-marker {
background: #D0D6ED url(selector.gif) no-repeat center center;
}
.dmweb-grid tr.liste_highlight td.grid-cell {background-color: #6F82A5 !important;color:#f5f5f5 !important;}
.dmweb-grid td.grid-cell {padding:2px !important;border:1px solid #e8e8e8;}
.dmweb-grid td.grid-cell.index_1 {background-color:#EFEFEF;}
.dmweb-grid td.grid-cell.center {text-align:center;float:none;}
.dmweb-grid td.grid-cell.right {text-align:right;float:none;}
.dmweb-grid td.grid-cell.red {color:red;}</pre>
doc/html/GvaScript_doc.css view on Meta::CPAN
BODY, TD {
font-family: Verdana, Arial, Helvetica;
font-size: 85%;
background-color: #f5f5f5;
color: #333;
}
TABLE {
border-collapse: collapse;
}
TD {
border: 1px solid #888;
padding: 6px;
}
doc/html/Paginator.html view on Meta::CPAN
<p>By default, css classnames are prefixed by 'gva'.</p>
<p>This can be overloaded by a global js variable: CSS_PREFIX
if declared before the inclusion of this Library</p>
<pre> .gva-paginatorbar {float:right;width:250px;}
.gva-paginatorbar div {width:16px;height:16px;cursor:pointer;float:right;}
.gva-paginatorbar div.first {background:url(page-first.gif) no-repeat top center;}
.gva-paginatorbar div.last {background:url(page-last.gif) no-repeat top center;}
.gva-paginatorbar div.back {background:url(page-prev.gif) no-repeat top center;}
.gva-paginatorbar div.forward {background:url(page-next.gif) no-repeat top center;}
.gva-paginatorbar div.inactive {cursor:default;opacity:0.25;filter:alpha(opacity=25);}
.gva-paginatorbar div.text {text-align:center;width:140px;color:#4b34c5;font-size:10pt;}
/* classname given to the list container while data is waiting to be loaded */
.gva-loading {
background:url(ajax_loading.gif) no-repeat center center;
position:absolute;
width:30px;height:30px;
top:50%;left:50%;
}</pre>
lib/Alien/GvaScript/CustomButtons.pod view on Meta::CPAN
Notice the B<btn-focus>, B<btn-hover> and B<flash> classnames that are used to style
the buttons in their different states.
/* IE fix: to the ridiculously wide buttons in IE */
.gva-btn-container .btn {width:1pt;overflow:visible;}
/* END: IE specific */
.gva-actionsbar {background-color:#E8E8E8;border:1px solid #8c8c8c;border-width:1px 0px;height:25px;padding:4px 0 1px;}
.gva-btn-container {display:inline;}
.gva-btn-container .btn {margin:0 3px;font-size:12px;cursor:pointer;}
.gva-btn-container .btn {
font-family:verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif;
background:none;
border:none;
cursor:pointer;
padding:1px 2px;
color:#000;
background-color:transparent !important;
}
.gva-btn-container .btn {float:left;}
.gva-btn-container.btn-focus .btn {color:#aa0000;}
.gva-btn-container span {display:block;float:left;height:21px;}
lib/Alien/GvaScript/Grid.pod view on Meta::CPAN
height:28px;
}
.dmweb-grid-actionsbar {float:left;}
.dmweb-paginatorbar {float:right;width:250px;}
.dmweb-paginatorbar div {width:16px;height:16px;cursor:pointer;float:right;}
.dmweb-paginatorbar div.first {background:url(page-first.gif) no-repeat top center;}
.dmweb-paginatorbar div.last {background:url(page-last.gif) no-repeat top center;}
.dmweb-paginatorbar div.back {background:url(page-prev.gif) no-repeat top center;}
.dmweb-paginatorbar div.forward {background:url(page-next.gif) no-repeat top center;}
.dmweb-paginatorbar div.inactive {cursor:default;opacity:0.25;filter:alpha(opacity=25);}
.dmweb-paginatorbar div.text {text-align:center;width:140px;color:#4b34c5;font-size:10pt;}
.dmweb-paginatorbar span.dmweb-btn-container {display:block;margin-right:4px;}
/* grid table */
.dmweb-grid {width:100%;}
.dmweb-grid th.grid-header {
text-align:center;
padding:2px;
font-size:75%;
color: #183E6C;
background-color: #D0D6ED;
border:1px solid #6F82A5;
}
.dmweb-grid td {font-size:75%;color:#183E6C;}
.dmweb-grid .grid-marker {width:15px;background-color: #D0D6ED;border:1px solid #6F82A5;}
.dmweb-grid tr.liste_highlight td.grid-marker {
background: #D0D6ED url(selector.gif) no-repeat center center;
}
.dmweb-grid tr.liste_highlight td.grid-cell {background-color: #6F82A5 !important;color:#f5f5f5 !important;}
.dmweb-grid td.grid-cell {padding:2px !important;border:1px solid #e8e8e8;}
.dmweb-grid td.grid-cell.index_1 {background-color:#EFEFEF;}
.dmweb-grid td.grid-cell.center {text-align:center;float:none;}
.dmweb-grid td.grid-cell.right {text-align:right;float:none;}
.dmweb-grid td.grid-cell.red {color:red;}
lib/Alien/GvaScript/Paginator.pod view on Meta::CPAN
This can be overloaded by a global js variable: CSS_PREFIX
if declared before the inclusion of this Library
.gva-paginatorbar {float:right;width:250px;}
.gva-paginatorbar div {width:16px;height:16px;cursor:pointer;float:right;}
.gva-paginatorbar div.first {background:url(page-first.gif) no-repeat top center;}
.gva-paginatorbar div.last {background:url(page-last.gif) no-repeat top center;}
.gva-paginatorbar div.back {background:url(page-prev.gif) no-repeat top center;}
.gva-paginatorbar div.forward {background:url(page-next.gif) no-repeat top center;}
.gva-paginatorbar div.inactive {cursor:default;opacity:0.25;filter:alpha(opacity=25);}
.gva-paginatorbar div.text {text-align:center;width:140px;color:#4b34c5;font-size:10pt;}
/* classname given to the list container while data is waiting to be loaded */
.gva-loading {
background:url(ajax_loading.gif) no-repeat center center;
position:absolute;
width:30px;height:30px;
top:50%;left:50%;
}
lib/Alien/GvaScript/lib/GvaScript.css view on Meta::CPAN
html { font-size: 100%; }
body { font: 0.75em Verdana,Arial,Helvetica,sans-serif; background-color: #f5f5f5; color: #333; }
h1 {color: #4e5b82; letter-spacing: 2px; font-variant: small-caps;}
h2 {color: #a00;}
h3 {color: navy;}
/* LOG BLOCK */
#logs {
height:100px;
padding: 0.3em;
margin: 0.2em 0 2em;
background-color: #E0EFE2;
overflow-y:auto;
border:1px solid green;
font:8pt 'courier new';
}
#logs .msg { border-bottom: 1px solid #c3dfc7; }
#logs .msg em { color: #a8cfad; }
/* AUTOCOMPLETER */
input.inputComplete {
background-repeat :no-repeat;
background-position:right center;
lib/Alien/GvaScript/lib/GvaScript.css view on Meta::CPAN
color: #ecf2ff !important;
}
/* CUSTOM BUTTONS */
.flash {background-color:red !important;}
.flash .btn {color:red !important}
.gva-actionsbar {background-color:#E8E8E8;border:1px solid #8c8c8c;border-width:1px 0px;height:25px;padding:4px 0 1px;}
.gva-btn-container {display:inline;}
.gva-btn-container .btn {margin:0 3px;font-size:12px;cursor:pointer;}
.gva-btn-container .btn {
font-family:verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif;
background:none;
border:none;
cursor:pointer;
padding:1px 2px;
color:#000;
background-color:transparent !important;
}
.gva-btn-container .btn {float:left;}
.gva-btn-container.btn-focus .btn {color:#aa0000;}
.gva-btn-container span {display:block;float:left;height:21px;}
lib/Alien/GvaScript/lib/GvaScript.css view on Meta::CPAN
height:28px;
}
.gva-grid-actionsbar {float:left;margin-top:4px;}
.gva-paginatorbar {float:right;width:250px;margin-top:7px;}
.gva-paginatorbar div {width:16px;height:16px;cursor:pointer;float:right;}
.gva-paginatorbar div.first {background:url(images/paginator/page-first.gif) no-repeat top center;}
.gva-paginatorbar div.last {background:url(images/paginator/page-last.gif) no-repeat top center;}
.gva-paginatorbar div.back {background:url(images/paginator/page-prev.gif) no-repeat top center;}
.gva-paginatorbar div.forward {background:url(images/paginator/page-next.gif) no-repeat top center;}
.gva-paginatorbar div.inactive {cursor:default;opacity:0.25;filter:alpha(opacity=25);}
.gva-paginatorbar div.text {text-align:center;width:140px;color:#4b34c5;font-size:10pt;}
.gva-paginatorbar span.gva-btn-container {display:block;margin-right:4px;}
/* grid table */
.gva-grid {width:100%;font-size:12px}
.gva-grid th.grid-header {
text-align:center;
padding:2px;
color: navy;
background-color: #D0D6ED;
border:1px solid #6F82A5;
}
.gva-grid td {color: navy;}
.gva-grid .grid-marker {
width:15px;
test/functional/autoCompleter/basic.html view on Meta::CPAN
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link href="../../test.css" rel="stylesheet" type="text/css">
<link href="../../images/GvaScript.css" rel="stylesheet" type="text/css">
<script src="../../../lib/Alien/GvaScript/lib/prototype.js"></script>
<script src="../../../lib/Alien/GvaScript/lib/GvaScript.js"></script>
<style type="text/css">
label {display: inline-table; width: 120px; text-align: right}
.AC_dropdown em {font: 8pt 'courier new'; font-style: normal}
</style>
<script>
var _states = {'AL': 'Alabama', 'AK': 'Alaska', 'AZ': 'Arizona', 'AR': 'Arkansas',
'CA': 'California', 'CO': 'Colorado', 'CT': 'Connecticut', 'DE': 'Delaware',
'DC': 'District Of Columbia', 'FL': 'Florida', 'GA': 'Georgia', 'HI': 'Hawaii',
'ID': 'Idaho', 'IL': 'Illinois', 'IN': 'Indiana', 'IA': 'Iowa', 'KS': 'Kansas',
'KY': 'Kentucky', 'LA': 'Louisiana', 'ME': 'Maine', 'MD': 'Maryland',
'MA': 'Massachusetts', 'MI': 'Michigan', 'MN': 'Minnesota', 'MS': 'Mississippi',
'MO': 'Missouri', 'MT': 'Montana', 'NE': 'Nebraska', 'NV': 'Nevada',
test/functional/buttons/buttons.html view on Meta::CPAN
<link href="../../test.css" rel="stylesheet" type="text/css">
<link href="../../images/GvaScript.css" rel="stylesheet" type="text/css">
<script src="../../../lib/Alien/GvaScript/lib/prototype.js"></script>
<script src="../../../lib/Alien/GvaScript/lib/GvaScript.js"></script>
<style type="text/css">
label {
display: block;
padding: 2px;
color: #aaa;
font-weight: bold;
}
input, textarea {
border: 1px solid #ddd;
padding: 2px;
}
textarea {
width: 350px;
height: 50px;
overflow: auto;
}
test/functional/form/effects.js view on Meta::CPAN
Element.collectTextNodesIgnoreClass = function(element, className) {
return $A($(element).childNodes).collect( function(node) {
return (node.nodeType==3 ? node.nodeValue :
((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
Element.collectTextNodesIgnoreClass(node, className) : ''));
}).flatten().join('');
};
Element.setContentZoom = function(element, percent) {
element = $(element);
element.setStyle({fontSize: (percent/100) + 'em'});
if (Prototype.Browser.WebKit) window.scrollBy(0,0);
return element;
};
Element.getInlineOpacity = function(element){
return $(element).style.opacity || '';
};
Element.forceRerendering = function(element) {
try {
test/functional/form/effects.js view on Meta::CPAN
scaleFrom: 100.0,
scaleTo: percent
}, arguments[2] || { });
this.start(options);
},
setup: function() {
this.restoreAfterFinish = this.options.restoreAfterFinish || false;
this.elementPositioning = this.element.getStyle('position');
this.originalStyle = { };
['top','left','width','height','fontSize'].each( function(k) {
this.originalStyle[k] = this.element.style[k];
}.bind(this));
this.originalTop = this.element.offsetTop;
this.originalLeft = this.element.offsetLeft;
var fontSize = this.element.getStyle('font-size') || '100%';
['em','px','%','pt'].each( function(fontSizeType) {
if (fontSize.indexOf(fontSizeType)>0) {
this.fontSize = parseFloat(fontSize);
this.fontSizeType = fontSizeType;
}
}.bind(this));
this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
this.dims = null;
if (this.options.scaleMode=='box')
this.dims = [this.element.offsetHeight, this.element.offsetWidth];
if (/^content/.test(this.options.scaleMode))
this.dims = [this.element.scrollHeight, this.element.scrollWidth];
if (!this.dims)
this.dims = [this.options.scaleMode.originalHeight,
this.options.scaleMode.originalWidth];
},
update: function(position) {
var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
if (this.options.scaleContent && this.fontSize)
this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
},
finish: function(position) {
if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
},
setDimensions: function(height, width) {
var d = { };
if (this.options.scaleX) d.width = width.round() + 'px';
if (this.options.scaleY) d.height = height.round() + 'px';
if (this.options.scaleFromCenter) {
test/functional/form/effects.js view on Meta::CPAN
this.options
);
}
});
Element.CSS_PROPERTIES = $w(
'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' +
'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
'fontSize fontWeight height left letterSpacing lineHeight ' +
'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
'right textIndent top width wordSpacing zIndex');
Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
String.__parseStyleElement = document.createElement('div');
String.prototype.parseStyle = function(){
var style, styleRules = $H();
test/functional/form/form.gvascript.css view on Meta::CPAN
.message-error {background-color: pink;border: 1px solid red;}
span.counter {
float: left;
background-color: #ddd;
border-right: 1px dashed #aaa;
color: #aaa;
height: 100%;
margin-right: 5px;
padding: 0 2px;
font-weight: bold;
}
form {width:800px;border:1px solid #aaa;padding:4px;margin:0 auto;background-color:#f5f5f5;}
form.form-edited {border-color:green;}
form.form-error {border-color:red;}
div.header, div.authors {
float:left; width:50%;
}
label {
display: block;
padding: 2px;
color: #aaa;
font-weight: bold;
}
input, textarea {
border: 1px solid #ddd;
padding: 2px;
}
textarea {
width: 350px;
height: 50px;
overflow: auto;
}
div.header {}
div.author {height:170px;background-color:#eee;margin:2px 0;}
.hover {border-color: #a0a;}
.focus {background-color: cornsilk;}
.validation-failed {background-color:pink;border-color:red;}
.validation-advice {display:inline; font: italic 8pt 'courier new';color: red;margin-left:3px;}
test/functional/keyMap/basic.html view on Meta::CPAN
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<link href="../../test.css" rel="stylesheet" type="text/css">
<link href="../../images/GvaScript.css" rel="stylesheet" type="text/css">
<script src="../../../lib/Alien/GvaScript/lib/prototype.js"></script>
<script src="../../../lib/Alien/GvaScript/lib/GvaScript.js"></script>
<style type="text/css">
#current_cell {background-color: blue; color: yellow;}
tt {font-size:1.2em;background-color:#eee;}
table {border-width: 2px;}
td {width: 20px; text-align: center;}
td.rborder {border-right: 2px solid black;}
tr.bborder td {border-bottom: 2px solid black;}
</style>
<script>
function Red(event) {
$('current_cell').style.backgroundColor="red";
test/functional/treeNavigator/form.html view on Meta::CPAN
var elem_type = Event.element(event).type;
if (/^(text|checkbox|radio|select)$/.test(elem_type))
Event.stop(event);
}
});
});
</script>
<style>
.TN_node { padding: 8px 2px; background-color: #ddd; border-bottom: 1px solid #aaa;}
.TN_label { font-weight: 700; font-size: 1.2em;}
.TN_content { background-color: #eee; padding: 0.5em; margin-top: 5px; }
</style>
</head>
<body>
<h1>Form Tree Navigator</h1>
<em>Form fields within a tree navigator: TAB navigation passes
test/images/GvaScript.css view on Meta::CPAN
/* CHOICE LIST */
.CL_highlight, .hilite td { background-color: #183E6C !important; color: #ecf2ff !important; }
/* CUSTOM BUTTONS */
.flash {background-color:red !important;}
.flash .btn {color:red !important}
.gva-actionsbar {background-color:#E8E8E8;border:1px solid #8c8c8c;border-width:1px 0px;height:25px;padding:4px 0 1px;}
.gva-btn-container {display:inline;}
.gva-btn-container .btn {margin:0 3px;font-size:12px;cursor:pointer;}
.gva-btn-container .btn {
font-family:verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif;
background:none;
border:none;
cursor:pointer;
padding:1px 2px;
color:#000;
background-color:transparent !important;
}
.gva-btn-container .btn {float:left;}
.gva-btn-container.btn-focus .btn {color:#aa0000;}
.gva-btn-container span {display:block;float:left;height:21px;}
test/images/GvaScript.css view on Meta::CPAN
.gva-paginatorbar {float:right;width:250px;margin-top:7px;}
.gva-paginatorbar div {width:16px;height:16px;cursor:pointer;float:right;}
.gva-paginatorbar div.first {background-position: center -48px;}
.gva-paginatorbar div.last {background-position: center -32px;}
.gva-paginatorbar div.back {background-position: center 0;}
.gva-paginatorbar div.forward {background-position: center -16px;}
.gva-paginatorbar div {width:16px;height:16px;cursor:pointer;float:right;background:url(paginator-sprite.png) no-repeat}
.gva-paginatorbar div.inactive {cursor:default;opacity:0.25;filter:alpha(opacity=25);}
.gva-paginatorbar div.text {text-align:center;width:140px;color:#4b34c5;font-size:10pt;}
.gva-paginatorbar span.gva-btn-container {display:block;margin-right:4px;}
/* grid table */
.gva-grid {width:100%;font-size:12px}
.gva-grid th.grid-header {
text-align:center;
padding:2px;
color: navy;
background-color: #D0D6ED;
border:1px solid #6F82A5;
}
.gva-grid td {color: navy;}
.gva-grid .grid-marker {
width:15px;
test/test.css view on Meta::CPAN
html { font-size: 100%; height: 100%;}
body { font: 0.8em Verdana,Arial,Helvetica,sans-serif; background-color: #f5f5f5; color: #333; }
h1 {color: #4e5b82; letter-spacing: 2px; font-variant: small-caps;}
h2 {color: #a00;}
h3 {color: navy;}
em {color: #aaa;}
sup {color: #a00;}
tt {background-color: #eee; border: 1px solid #ddd; white-space: pre; font-size: 10pt;}
input, textarea {border: 1px solid #ddd;}
/* navigation menu */
.navigation { background: #4E5B82; color: #f5f5f5; position:relative; height: 98%; }
.navigation h1 { font-size: 20px; color: #ffffcc; }
.navigation a { color: #ffc; }
.navigation ul li a { color: #e8a400; }
.navigation h2 {
font-size: 16px;
font-weight: normal;
margin: 0;
border: 1px solid #a00;
border-bottom: 0;
background: #ffc;
color: #a00;
padding: 8px;
padding-bottom: 0;
}
.navigation ul {
margin-top: 0;
border: 1px solid #8F248E;
border-top: none;
background: #ffc;
padding: 8px;
margin-left: 0;
list-style-position: inside;
list-style-type: circle;
}
.navigation ul li {
font-size: 12px;
margin-top: 1px;
margin-bottom: 1px;
color: #555;
}
.navigation p#version strong {color: #fff;}
.navigation .footnote {background-color: #4e5b82; margin-top: 15px; font-size: 8pt; border-top: 1px solid; position: absolute; bottom: 0;}
.navigation .footnote * {color:#f5f5f5;}
.navigation .footnote tt {background-color: transparent; border: none; font-size: 8pt;}
/* LOG BLOCK */
#logs {
height:100px;
padding: 0.3em;
margin: 0.2em 0 2em;
background-color: #E0EFE2;
overflow-y:auto;
border:1px solid green;
font:8pt 'courier new';
}
#logs .msg { border-bottom: 1px solid #c3dfc7; }
#logs .msg em { color: #a8cfad; }
#logs .msg strong { color: #f5f5f5; font-weight: bold; background-color:green;}
#logsummary { margin-bottom: 1em; padding: 1ex; border: 1px solid #000; font-weight: bold; }
#logtable { width:100%; border-collapse: collapse; border: 1px dotted #666; }
#logtable td, #logtable th { text-align: left; padding: 3px 8px; border: 1px dotted #666; }
#logtable .passed { background-color: #cfc; }
#logtable .failed, #logtable .error { background-color: #fcc; }
#logtable .nameCell { cursor: pointer; }