/* Javadoc style sheet */

/* Define colors, fonts and other style attributes here to override the defaults */

/* Page background color */
body 
{
  background-color: #FFFFFF; 
  font-family: Arial, Helvetica, sans-serif; 
  font-size: 12px;
}

li.spaced { 
   margin-bottom: 0.75em;	
}

a:visited { color: blue; }

.red { color: red; }

.green { color: green }

.blue { color: blue }

.navy { color: navy }

.maroon { color: maroon }

.htmlHeader
{
  	border: 1px solid gray;
  	margin-top: 0.75em;
  	margin-left: 0em;
	margin-bottom: 1.25em;
  	padding: 0em;
    vertical-align: baseline; 
}

.htmlExample
{
  	border: 1px solid gray;
  	margin-top: 1em;
  	margin-left: 0em;
	  margin-bottom: 1em;
  	padding: 4px;
    vertical-align: baseline; 
}

/* Code examples */
.code, .codeConfig, .codeDtd, .codeJava, .codeHtml {
	font-family: Courier New, courier;
	font-size: 10pt;
	border: 1px solid #AAAAAA;
	background-color: #FAFAFA;
	padding: 1em;
	margin-top: 1em;
	margin-bottom: 1.5em;
	margin-left: 0em;
	margin-right: 1.5em;
	white-space: pre;
}

.codeConfig 
{
}

.codeDtd 
{
	border: 1px solid #8f8ecf;
	background-color: #fffcf7;
}

.codeJava 
{
	background-color: white;
}

.codeHtml 
{
	border: 1px solid #97A9FF;
	background-color: white;
}

/* Java keyword. */
.kw {
    color: #7f0055;
    font-weight: bold;
}

/* Javadoc */
.jd {
    color: #3f5fbf;
}

/* Java comment */
.cm {
    color: #3f7f5f;
}

/* Java String literal */
.st {
    color: #2a00ff;
}

/* Web resource */
.wr {
    font-family: Courier New, courier;
	color: navy;
}

/*  form.css */

a.error {
	color: red;
}
a:visited.error {
	color: red;
}
input.disabled {
	background: lightgray;
}
input.error {
	background: yellow;
}
select.error {
	background: yellow;
}
span.error {
	color: red;
}
table.fields {
	border-width: 1px;
	padding: 0;
	vertical-align: baseline;
}
table.errors {
	border-width: 1px;
	padding: 0;
	vertical-align: baseline;
}
table.buttons {
	border-width: 1px;
	padding: 0;
	vertical-align: baseline;
	margin-top: 1em;
}

dt {
	margin-left: 2em;
	margin-bottom: 0.25em;
	margin-top: 0.5em;
}

li {
	margin-bottom: 0.25em;
	margin-top: 0.25em;
}

/* Headings */
h1 { font-size: 18px }

/* Table colors */
.TableHeadingColor     { background: #CCCCFF } /* Dark mauve */
.TableSubHeadingColor  { background: #EEEEFF } /* Light mauve */
.TableRowColor         { background: #FFFFFF } /* White */

/* Font used in left-hand frame lists */
.FrameTitleFont   { font-size: 12px; }
.FrameHeadingFont { font-size: 12px; }
.FrameItemFont    { font-size: 12px; }

/* Navigation bar fonts and colors */
.NavBarCell1    { background-color:#EEEEFF;} /* Light mauve */
.NavBarCell1Rev { background-color:#00008B;} /* Dark Blue */
.NavBarFont1    { color:#000000;}
.NavBarFont1Rev { color:#FFFFFF;}

.NavBarCell2    { background-color:#FFFFFF;}
.NavBarCell3    { background-color:#FFFFFF;}

/*
 * Table CSS style
 * 
 * This CSS style sheet was adapted from DisplayTag 1.0 - screen.css
 * http://displaytag.sourceforge.net
 */

/** Global styles **/

td a, td a:visited, td a:hover {
    text-decoration: none; 
}
td a:hover {
    text-decoration: underline;
}
thead tr {
    background-color: #fc0;
}
th.sorted {
    background-color: orange;
}
th a, th a:visited {
    color: black;
}
th a:hover {
    text-decoration: underline;
    color: black;
}
th.sorted a, th.sortable a {
	background-position: right;
	display: block;
	width: 100%;
}
th.sortable a {
	background-image: url(../img/arrow_off.png);
}
th.order1 a {
	background-image: url(../img/arrow_down.png);
}
th.order2 a {
	background-image: url(../img/arrow_up.png);
}
tr.odd {
    background-color: #fff
}
tr.tableRowEven, tr.even {
    background-color: #fea
}

ul#showsource {
	float: right;
	background-color: #eee;
	border: 1px dotted #999;
	padding: 2px 4px 2px 4px;
	margin: 5px;
	width:100px;
	list-style-type: none;
}

/** Individual Styles **/

/* isi style */
table.isi, table.isi td, table.isi th {
    border: 1px solid #666;
    border-collapse: collapse;
}
table.isi th, table.isi td {
	padding: 2px 4px 2px 4px;
	text-align: left;
	vertical-align: top;
}

/* its style */
table.its thead tr {
    background-color: #69c;
}
table.its tr.even {
    background-color: #def;
}
table.its, table.its td, table.its th {
    border: 1px solid #666;
    border-collapse: collapse;
}
table.its th, table.its td {
	padding: 2px 4px 2px 4px;
	text-align: left;
	vertical-align: top;
}

/* mars style */
table.mars thead tr {
    background-color: #9c9;
}
table.mars tr.even {
    background-color: #ccb;
}
table.mars tr.odd {
    background-color: #eec;
}
table.mars, table.mars td, table.mars th {
    border: 1px solid #666;
    border-collapse: collapse;
}
table.mars th, table.mars td {
	padding: 2px 4px 2px 4px;
	text-align: left;
	vertical-align: top;
}

/* simple style */
table.simple thead tr {
    background-color: #eee;
}
table.simple tr.even {
    background-color: #fff;
}
table.simple td.textRed {
    color: #b11;
}
table.simple, table.simple td, table.simple th {
	border: 1px solid #ccc;
	border-collapse: collapse;
}
table.simple th, table.simple td {
	padding: 2px 4px 2px 4px;
	text-align: left;
	vertical-align: top;
}

/* nocol style */
table.nocol tbody td,table.nocol tbody th {
	border-left: none;
	border-right: none;
}
table.nocol th, table.nocol td {
	padding: 2px 4px 2px 4px;
	text-align: left;
	vertical-align: top;
}

/* report style */
table.report {
    border: 1px solid #666;
}
table.report td, table.report th {
	font: menu;
}
table.report th {
	background:   buttonface;
	border-width: 1px;
	border-style: solid;
	border-color: threedhighlight threedshadow threedshadow threedhighlight;
	cursor:       hand;
}
table.report idcol {
	background: buttonface;
}
table.report tr.even{
	background-color: #C2EFEF;
}
table.report tbody {
	height: 180px;
	overflow: auto;
}
table.report {
	height: 200px;
	overflow: auto;
}
table.report tbody tr{
	height: 10px;
}
table.report th, table.report td {
	padding: 2px 4px 2px 4px;
	text-align: left;
	vertical-align: top;
}


table.sublist {
	margin: 0 0 0 0;
	width: 100%;
}
table.sublist td, table.sublist th {
	width: 50%;
}

div.exportlinks {
	background-color: #eee;
	border: 1px dotted #999;
	padding: 2px 4px 2px 4px;
	margin: -10px 0 10px 0;
	width: 79%;
}

span.export {
	padding: 0 4px 1px 20px;
	display:inline; display:inline-block;
	cursor: pointer;
}

span.excel {
	background-image: url(../img/ico_file_excel.png);
}
span.csv {
	background-image: url(../img/ico_file_csv.png);
}
span.xml {
	background-image: url(../img/ico_file_xml.png);
}
span.pdf {
	background-image: url(../img/ico_file_pdf.png);
}

span.pagebanner {
	background-color: #eee;
	border: 1px dotted #999;
	padding: 2px 4px 2px 4px;
	width: 300px;
	margin-top: 10px;
	display: block;
	border-bottom: none;
}

span.pagebanner-nolinks {
	background-color: #eee;
	border: 1px dotted #999;
	padding: 2px 4px 2px 4px;
	width: 300px;
	margin-top: 10px;
	display: block;
}

span.pagelinks {
	background-color: #eee;
	border: 1px dotted #999;
	padding: 2px 4px 2px 4px;
	width: 300px;
	display: block;
	margin-bottom: -5px;
	border-top: none;
}

span.pagelinks-nobanner {
	background-color: #eee;
	border: 1px dotted #999;
	padding: 2px 4px 2px 4px;
	width: 150px;
	display: block;
	margin-top: 10px;
	margin-bottom: -5px;
}


