Nie pobieram paczki, ale postaram się pomóc.
Co do pierwszego pytania to ja bym kombinował z css'owym display: none/block
oraz kodem
Kod
<script type="text/javascript">
function zwin(co){
var obiekt = document.getElementById(co);
if (obiekt.style.display == 'block') {
obiekt.style.display = 'none';
}
}
</script>
Nie pobieram paczki, więc dokładnie ci nie powiem jak to ma wyglądać,
ale na pewno coś jak pomyślisz wykombinujesz

Co do drugiego, to dajesz jak masz np grafikę, albo chcesz podlinkować tekst
<a href="blablabla.php?dzial=samochody&subcat=ciezarowe&id=34">blabla</a>
jak masz dajmy na to diva, to onclick"location.href='blablabla.php?dzial=samochody&subcat=ciezarowe&id=34'"
następnie w blablabla.php dajesz warunek:
if($_GET['dzial'] == 'samochody' & $_GET['subcat'] == ciezarowe){
// wykonywane jeśli nie dzial to samochody
if($_GET['subcat'] == ciezarowe){
// wykonywane jeśli subcat to ciężarowe
if($_GET['id'] != ""){
// wykonywane jeśli id zostało podane
//i tu jeśli dane pochodzą z bazy robisz takie myk:
$id = $_GET['id']; // musisz odpowiednio zabezpieczyć, ale to już znajdziesz w necie ;)
// i pobierając dane z bazy dajesz warunek where `id` = $id (z sql mam problemy, ale coś w ten deseń
)
// ewentualnie jeśli dane nie pochodzą z bazy to robisz zamiast $_GET['id'] !=""
// takie cóś: $_GET['id'] == "1" i lecisz po kolei
}else{
// wykonywane jeśli id nie zostało podane :)
}
}else{
// wykonywane jeśli subcat nie został podany :)
}
}elseif($_GET['dzial'] == 'rowery'){
// wykonywane jeśli dzial to rowery
}else{
// wykonywane jeśli dzial nie został podany :)
}
Mam nadzieję, że o to chodziło i się przyda

Jak coś to pytaj.