/* Document Navigation */

.docnav a, .docnav strong {
    text-decoration:none;
    font-weight:normal;
}

.docnav {
    list-style:none;
    margin:0em;
    padding:0em;
    position:relative;
    width:100%;
    padding-bottom:2em;
    padding-top:1em;
    border-top:1px dotted #ccc;
}

.docnav li {
    list-style:none;
    margin:0em;
    padding:0em;
    display:inline;
    font-size:.8em;
}

.docnav li:before {content:" ";}

.docnav li.previous, .docnav li.next {
    position:absolute;
    top:1em;
}

.docnav li.up, .docnav li.home {margin:0em 1.5em;}

.docnav li.previous {
    left:0px;
    text-align:left;
}

.docnav li.next {
    right:0px;
    text-align:right;
}

.docnav li.previous strong, .docnav li.next strong {
    display:block;
    height:22px;
}

.docnav {
    margin:0 auto;
    text-align:center;
}

.docnav li.next a strong {
    background:url(../images/community/docbook/next.png) top right no-repeat;
    padding-top:10px;
    padding-bottom:15px;
    height:40px;
    padding-right:60px;
    font-size:1.2em;
}

.docnav li.previous a strong {
    background:url(../images/community/docbook/prev.png) top left no-repeat;
    padding-top:10px;
    padding-bottom:15px;
    height:40px;
    padding-left:60px;
    font-size:1.2em;
}

.docnav li.home a strong {
    background:url(../images/community/docbook/home.png) top left no-repeat;
    padding-top:10px;
    padding-bottom:15px;
    height:40px;
    padding-left:60px;
    font-size:1.2em;
}

.docnav li.up a strong {
    background:url(../images/community/docbook/up.png) top left no-repeat;
    padding-top:10px;
    padding-bottom:15px;
    height:40px;
    padding-left:60px;
    font-size:1.2em;
}

.docnav a:link, .docnav a:visited {color:#666 !important;}

.docnav a:hover, .docnav a:focus, .docnav a:active {color:black !important;}

.docnav a {
    max-width:10em;
    overflow:hidden;
}

.docnav a:link strong {text-decoration:none;}

.docnav {
    margin:0 auto;
    text-align:center;
}

.docnav {margin-bottom:16px;}

/* Eclipse Help Navigation */

.navheader {padding-top:35px}

.navheader table {border-style:none}

.navheader a {
    text-decoration:none;
    font-weight:normal;
    font-size:.8em;
}

.navheader td.next a {
    background:url(../images/community/docbook/next.png) top right no-repeat;
    padding-top:10px;
    padding-bottom:15px;
    height:40px;
    padding-right:60px;
    font-size:0.9em;
}

.navheader td.previous a {
    background:url(../images/community/docbook/prev.png) top left no-repeat;
    padding-top:10px;
    padding-bottom:15px;
    height:40px;
    padding-left:60px;
    font-size:0.9em;
}

.navheader a:link, .navheader a:visited {color:#666 !important;}

.navheader a:hover, .navheader a:focus, .navheader a:active {color:black !important;}

.navheader a {
    max-width:10em;
    overflow:hidden;
}

.navheader a:link {text-decoration:none;}

.navfooter table {border-style:none}

.navfooter a {
    text-decoration:none;
    font-weight:normal;
    font-size:.8em;
}

.navfooter td.next a {
    background:url(../images/community/docbook/next.png) top right no-repeat;
    padding-top:10px;
    padding-bottom:15px;
    height:40px;
    padding-right:60px;
    font-size:0.9em;
}

.navfooter td.previous a {
    background:url(../images/community/docbook/prev.png) top left no-repeat;
    padding-top:10px;
    padding-bottom:15px;
    height:40px;
    padding-left:60px;
    font-size:0.9em;
}

.navfooter td.home a {
    background:url(../images/community/docbook/home.png) top left no-repeat;
    padding-top:10px;
    padding-bottom:15px;
    height:40px;
    padding-left:60px;
    font-size:0.9em;
}

.navfooter td.up a {
    background:url(../images/community/docbook/up.png) top left no-repeat;
    padding-top:10px;
    padding-bottom:15px;
    height:40px;
    padding-left:60px;
    font-size:0.9em;
}

.navfooter a:link, .navfooter a:visited {color:#666 !important;}

.navfooter a:hover, .navfooter a:focus, .navfooter a:active {color:black !important;}

.navfooter a {
    max-width:10em;
    overflow:hidden;
}

.navfooter a:link {text-decoration:none;}
