<?php
if($_SERVER['REMOTE_ADDR']=='2602:304:b09a:2ff0:fdc3:9220:bf84:e605'){
	header('Location: http://www.google.com?q=fuck%20you');
	exit;
}

require('../config.php');
if(isset($_SERVER['HTTP_USER_AGENT'])){
	$useragent	= $_SERVER['HTTP_USER_AGENT'];
	if(strpos($useragent, 'curl') !== false){
		putenv("TERM=xterm-256color");
		$r	= db::q('select soubor,d.nazev,d.popis from soubory s left join druhySoubory ds on s.id=ds.idSouboru left join druhy d on ds.idDruhu=d.id where s.typ="pic"and ds.idDruhu is not null  order by rand() limit 1');
		while($s	= mysqli_fetch_assoc($r)){
			passthru(sprintf('/usr/bin/jp2a /data/www/arachnology.cz/html/pic/%s --background=light --color --fill --colors --height=48 --color-depth=24', $s['soubor']));
			printf('%s, %s'."\n", $s['nazev'], $s['popis']);
		}
		exit;
	}
}

$rady = new rady();
$celedi = new celedi();
$rody = new rody;
$druhy = new druhy();
$soubory = new soubory();
$lide = new lide();

$h1	= _('Česká arachnologická společnost');
$h2	= array();

if(isset($_GET['typ']) and !isset($_REQUEST['src'])){

	if($_GET['typ']=='nalez'){ #{{{
		$nalezy		= new nalezy($_GET);
		$nalezy->find();
		$smarty->assign('nalezy',	$nalezy);

		$soubory->constraint	= array('nalezySoubory', array_keys($nalezy->results));
		$soubory->find();

		$druhy		= new druhy;
		$druhy->id	= array_keys($nalezy->druhy);
		$druhy->find();
		$druhy->prvoNalezy	= new nalezy(array('id'=>$druhy->prvoNalezyId));
		if(sizeof($druhy->prvoNalezy->id)>0)	$druhy->prvoNalezy->find();
							 
		$smarty->assign('druhy',	$druhy);

		$soubory->where	= '';
		$soubory->join	= '';
		unset($soubory->constraint);
		$soubory->idDruhu	= array_keys($druhy->results);
		$soubory->find();

		$literatura	= new literatura(array('citace'=>array_keys($nalezy->citace)));
		if(sizeof($nalezy->citace)>0)	$literatura->find();
		$smarty->assign('literatura',	$literatura);
		
		if(sizeof($nalezy->results)==1){
			$h1	= sprintf(_('Nález #%d'), $_GET['id']);

			if(isset($_SESSION['loggedIn'])){
				$aktivita	= new aktivita(array('tabulka'=>'nalezy', 'idZaznamu'=>$_GET['id']));
				$aktivita->find();
				$smarty->assign('aktivita', $aktivita);
			}

		}
		$inc		= 'detail.tpl';
	} #}}}

	if($_GET['typ']=='atom'){ #{{{
		header('Content-type: application/atom+xml; charset=UTF-8');
#		header('Content-type: application/xhtml+xml; charset=UTF-8');
		if(!isset($_GET['sub']))	$_GET['sub']	= 'nalezy';

		if(isset($_GET['sub'])){
			switch($_GET['sub']){
				case 'bibliografie':
					$literatura		= new literatura;
					$literatura->order	= ' order by id desc';
					$literatura->limit	= ' limit 30';
					$literatura->find();
					$smarty->assign('literatura', $literatura);
					$smarty->display('atom/literatura.tpl');
					break;;

				case 'nalezy':
					$nalezy			= new nalezy($_GET);
					$nalezy->order		= ' order by nalezy.id desc';
					$nalezy->limit		= ' limit 30';
					$nalezy->find();
					$smarty->assign('nalezy',	$nalezy);

					$lide	= new lide;
					$lide->find();
					$smarty->assign('lide',	$lide);
					$smarty->display('atom/nalezy.tpl');
					break;;
				case 'fotky':
					$fotky	= new soubory(array('typ'=>'pic'));
          $fotky->limit = ' limit 30';
					$fotky->find();
					$smarty->assign('fotky', $fotky);
					$smarty->display('atom/fotky.tpl');
					break;;
			}
		}
		exit;
	} #}}}

	if($_GET['typ']=='druh'){ #{{{
		$druhy		= new druhy($_REQUEST);
		$druhy->find();
		
		$druhy->prvoNalezy	= new nalezy(array('id'=>$druhy->prvoNalezyId));
		if(sizeof($druhy->prvoNalezy->id)>0)	$druhy->prvoNalezy->find();

		if(sizeof($druhy->results) == 1){
			$druh		= $druhy->getFirstResult();
			if($druh['synonymum']>0){
				header(sprintf('Location: /druh/%s-%d.html', main::url($druh['synNazev']), $druh['synonymum']), true, '301');
				exit;
			}
			if($druh['popis']!=''){
				$h1	= sprintf('<i>%s</i> %s', $druh['nazev'], $druh['popis']);
				$h2[]	= sprintf('<a href="/druh/%s-%d.html"><i>%s</i></a> %s', main::url($druh['nazev']), $druh['id'], $druh['nazev'], $druh['popis']);
			}else{
				$h1	= $druh['nazev'];
				$h2[]	= sprintf('<a href="/druh/%s-%d.html"><i>%s</i></a>', main::url($druh['nazev']), $druh['id'], $druh['nazev']);
			}
			if($druh['nazevCZ']!='')	$h1	.= sprintf(' [%s]', $druh['nazevCZ']);

			if(isset($_FILES['fotka']) and $_FILES['fotka']['size']>0){
				$fotka			= new soubory;
				$fotka->typ		= 'pic';
				$fotka->constraints	= array('druhySoubory'=>$druh['id']);
				$fotka->soubor		= ulozSoubor($_FILES['fotka'], 'pic', $druh['nazev']);
				$fotka->insert();
			}
			
			if(isset($_FILES['fotka']) and $_FILES['fotka']['name'][0]!='' ){
				foreach($_FILES['fotka']['name'] as $id=>$n){
					$s	= array();
					$s['name']	= $_FILES['fotka']['name'][$id];
					$s['type']	= $_FILES['fotka']['type'][$id];
					$s['tmp_name']	= $_FILES['fotka']['tmp_name'][$id];
					$s['error']	= $_FILES['fotka']['error'][$id];
					$s['size']	= $_FILES['fotka']['size'][$id];

					$fotka			= new soubory;
					$fotka->typ		= 'pic';
					$fotka->popis		= $this->fotka_popis;
					$fotka->constraints	= array('druhySoubory' => $druh['id']);
					$fotka->soubor		= ulozSoubor($s, 'pic');
					$fotka->insert();
				}
			}

			$_GET['typ']	= 'rod';
			$_GET['id']	= $druh['idRodu'];

			if($druh['pocetSynonym'] > 0){
				$synonyma	= new druhy(array('synonymum'=>$druh['id']));
				$synonyma->find();
				$smarty->assign('synonyma', $synonyma);
			}

			$druhy->id		= $druh['id'];
			$nalezy			= new nalezy;
			$nalezy->idDruhu	= $druh['id'];
			$nalezy->jenSDatem	= true;
			$nalezy->find();
			$inc		= 'detail.tpl';
			$rody->id	= $druh['idRodu'];

			if(isset($_GET['export']))	$nalezy->export();

			$soubory->idDruhu	= $druh['id'];
			$soubory->find();
			$soubory->reset();

			$literatura	= new literatura(array('druhyId'=>array_keys($druhy->results)));
			if(sizeof($druhy->results)>0)	$literatura->find();
			$smarty->assign('literatura',	$literatura);

			$smarty->assign('druh',		$druh);
			$smarty->assign('nalezy',	$nalezy);

			if(isset($_SESSION['loggedIn'])){
				$aktivita	= new aktivita(array('tabulka'=>'druhy', 'idZaznamu'=>$druh['id']));
				$aktivita->find();
				$smarty->assign('aktivita', $aktivita);
			}

		}
		
		if(sizeof($druhy->results)>0){
			if(sizeof($druhy->prvoNalezyId)>0 or sizeof($druhy->posleNalezyId)>0){
				$druhy->prvoNalezy	= new nalezy(array('id'=>array_merge($druhy->prvoNalezyId, $druhy->posleNalezyId)));
				$druhy->prvoNalezy->find();
			}else{
				$druhy->prvoNalezy	= new nalezy;
			}
			//if(sizeof($druhy->prvoNalezyId)>0 or sizeof($druhy->posleNalezyId)>0)	$druhy->prvoNalezy->find();
		}

	} #}}}

	if($_GET['typ']=='rod'){ #{{{
		$rod		= new rody();
		$rod->id	= $_GET['id'];
		$rod->find();
		if(sizeof($rod->results) == 1){
			$rod	= $rod->getFirstResult();
			if(!isset($druh))	$h1	= _('Rod').': '.$rod['nazev'];
			$h2[]	= sprintf('%s: <a href="/rod/%s-%d.html"><i>%s</i></a>', _('Rod'), main::url($rod['nazev']), $rod['id'], $rod['nazev']);
			$_GET['typ']	= 'celed';
			$_GET['id']	= $rod['idCeledi'];
			$celedi->id	= $rod['idCeledi'];
			$druhy->idRodu	= $rod['id'];
			$druhy->find();
			$druhy->prvoNalezy	= new nalezy(array('id'=>$druhy->prvoNalezyId));
			if(sizeof($druhy->prvoNalezy->id)>0)	$druhy->prvoNalezy->find();

			$soubory->idDruhu	= array_keys($druhy->results);
			$soubory->order		= 'order by nazevDruhu, id';
			if(sizeof($druhy->results)>0)	$soubory->find();

			if(!isset($druh) and sizeof($druhy->results)>0){
				$druhy->idRodu	= $rod['id'];
				$nalezy			= new nalezy;
				$nalezy->idDruhu	= array_keys($druhy->results);
				$nalezy->find();

				if(isset($_GET['export']))	$nalezy->export();

				$smarty->assign('nalezy',	$nalezy);
				
				#$literatura	= new literatura(array('citace'=>array_keys($nalezy->citace)));
				#if(sizeof($nalezy->citace)>0)	$literatura->find();
				$literatura	= new literatura(array('druhyId'=>array_keys($druhy->results)));
				if(sizeof($druhy->results)>0)	$literatura->find();

				$smarty->assign('literatura',	$literatura);
			}
			$smarty->assign('rod',		$rod);
			$smarty->assign('druhy',	$druhy);
			$inc	= 'detail.tpl';
		}
	} #}}}

	if($_GET['typ']=='celed'){ #{{{
		$celed		= new celedi();
		$celed->id	= $_GET['id'];
		$celed->find();
		if(sizeof($celed->results)==1){
			$celed		= $celed->getFirstResult();
			$h1		= ($h1=='')?$celed['nazev']:$h1;
			$h2[]		= sprintf('%s: <a href="/celed/%s-%d.html">%s</a>', _('Čeleď'), main::url($celed['nazev']), $celed['id'], $celed['nazev']);
			$smarty->assign('celed', $celed);
			$druhy->idCeledi	= $celed['id'];
			$druhy->find();
			$rody->idCeledi	= $celed['id'];
			$celedi->idRadu	= $celed['idRadu'];
			$celedi->find();
			
			if(sizeof($druhy->results)>0){
				$druhy->prvoNalezy	= new nalezy(array('id'=>array_merge($druhy->prvoNalezyId, $druhy->posleNalezyId)));
				if(sizeof($druhy->prvoNalezyId)>0 or sizeof($druhy->posleNalezyId)>0)	$druhy->prvoNalezy->find();
			}

		}
	} #}}}

	if($_GET['typ']=='rad'){ #{{{
		$rad		= new rady();
		$rad->id	= $_GET['id'];
		$rad->find();
		if(sizeof($rad->results)==1){
			$rad		= $rad->getFirstResult();
			$h1		= ($h1=='')?$rad['nazev']:$h1;
			$h2[]		= sprintf('%s: <a href="/rad/%s-%d.html">%s</a>', _('Řád'), main::url($rad['nazev']), $rad['id'], $rad['nazev']);
			$smarty->assign('rad', $rad);
			$celedi->idRadu	= $rad['id'];
			$druhy->idRadu	= $rad['id'];
			$druhy->find();
			if(sizeof($druhy->results)>0){
				$druhy->prvoNalezy	= new nalezy(array('id'=>array_merge($druhy->prvoNalezyId, $druhy->posleNalezyId)));
				if(sizeof($druhy->prvoNalezyId)>0 or sizeof($druhy->posleNalezyId)>0)	$druhy->prvoNalezy->find();
			}
		}
	} #}}}

	if($_GET['typ']=='kvadrat'){ #{{{
		if(!is_numeric($_GET['id']) or !isset($_GET['id']))	$_GET['id']	= '5555';
		if(isset($_GET['lat']) and isset($_GET['lng']))		$_GET['id']	= getKvadrat($_GET['lat'], $_GET['lng']);

		$nalezy			= new nalezy;
		if(isset($_GET['order']))	$nalezy->order	= $_GET['order'];
		$nalezy->kvadrat	= $_GET['id'];
		$nalezy->find();

		if(isset($_GET['export']))	$nalezy->export();

		$soubory->idNalezu	= array_keys($nalezy->results);
		if(sizeof($nalezy->results)>0)	$soubory->find();

		$smarty->assign('nalezy', $nalezy);
		$druhy->kvadrat		= $_GET['id'];
		$druhy->find();

		$druhy->prvoNalezy	= new nalezy(array('id'=>$druhy->prvoNalezyId));
		if(sizeof($druhy->prvoNalezy->id)>0)	$druhy->prvoNalezy->find();

		$literatura	= new literatura(array('citace'=>array_keys($nalezy->citace)));
		if(sizeof($nalezy->citace)>0)	$literatura->find();
		$smarty->assign('literatura',	$literatura);


		$h1			= sprintf(_('Kvadrát %d'), $_GET['id']);
		$h2[]			= sprintf(_('%d nálezů, %d druhů'), sizeof($nalezy->results), sizeof($druhy->results));
		$inc			= 'detail.tpl';
	} #}}}
	
	if($_GET['typ']=='mapa'){ #{{{
		$celedi->find();
		$co	= array(
			'druhy'		=> 'druhu',
			'nalezy'	=> 'nalezu',
			'rody'		=> 'rodu',
			'celedi'	=> 'celedi'
			);
		$where	= 'where 1';
		if(!isset($_GET['id']) or !isset($co[$_GET['id']]))	$_GET['id']='druhy';
		if(isset($_GET['do']) and is_numeric($_GET['do']) and strlen($_GET['do'])==4)		$where	.= ' and year(datumDo)<="'.addslashes($_GET['do']).'"';
		if(isset($_GET['rok']) and is_numeric($_GET['rok']) and strlen($_GET['rok'])==4)	$where	.= ' and year(datumDo)="'.addslashes($_GET['rok']).'"';
		if(isset($_GET['idCeledi']) and is_numeric($_GET['idCeledi'])){
			$where		.= ' and idCeledi="'.addslashes($_GET['idCeledi']).'"';
			$rody->idCeledi	= $_GET['idCeledi'];
			$rody->find();
		}
		foreach(array('idDruhu','KodBiotopu','Stanoviste','lokalita','Met','idRodu') as $p){
			if(isset($_GET[$p])){
				if(is_array($_GET[$p])){
					$where	.= sprintf(' and %s in ("%s")', $p, implode('","', $_GET[$p]));
				}elseif(strlen($_GET[$p])>0){
					$where	.= ' and `'.$p.'`="'.addslashes($_GET[$p]).'"';
				}
			}
		}

		$ret	= array();
		$max	= 0;
/*		$nalezy			= new nalezy($_GET);
		$nalezy->light		= true;
		$nalezy->justResults	= true;
		#$nalezy->find();
		$smarty->assign('nalezy', $nalezy);*/
		$q	= 'select kvadrat, count(*) as nalezu, count(distinct idDruhu) as druhu, count(distinct idRodu) as rodu, count(distinct idCeledi) as celedi '.
				'from nalezy n left join druhy d on n.idDruhu=d.id left join rody r on d.idRodu=r.id '.
				$where.
				' group by kvadrat order by '.$co[$_GET['id']].' desc';
		$q	= sprintf('select kvadrat, d.nazev as druhy, r.nazev as rody, c.nazev as celede,left(DatumDo,4) as rok from nalezy n left join druhy d on n.idDruhu=d.id left join rody r on d.idRodu=r.id left join celedi c on r.idCeledi=c.id %s order by kvadrat, druhy, rody, celede', $where);
		$r	= db::q($q);
		while($r2=mysqli_fetch_assoc($r)){
			if(!isset($ret[$r2['kvadrat']])){
				$ret[$r2['kvadrat']]	= array('nalezu'=>0, 'druhu'=>0, 'druhy'=>array(), 'rodu'=>0, 'rody'=>array(), 'celedi'=>0, 'celede'=>array(), 'doby'=>array());
			}

			if($r2['rok']<=1900){
				$doba	= '1000';
			}elseif($r2['rok']<=1950){
				$doba	= '0100';
			}elseif($r2['rok']<=2000){
				$doba	= '0010';
			}else{
				$doba	= '0001';
			}

			if(isset($ret[$r2['kvadrat']]['doby'][$doba])){
				$ret[$r2['kvadrat']]['doby'][$doba]++;
			}else{
				$ret[$r2['kvadrat']]['doby'][$doba]	= 1;
			}

			foreach(array('druhy'=>'druhu','rody'=>'rodu','celede'=>'celedi') as $key=>$val){
				if(!isset($ret[$r2['kvadrat']][$key][$r2[$key]])){
					$ret[$r2['kvadrat']][$key][$r2[$key]]	= 1;
					$ret[$r2['kvadrat']][$val]++;

				}else{
					$ret[$r2['kvadrat']][$key][$r2[$key]]++;
				}
			}
			$ret[$r2['kvadrat']]['nalezu']++;
		}
		$max	= 0;

		foreach($ret as $k=>$v)	if($v[$co[$_GET['id']]]>$max)	$max	= $v[$co[$_GET['id']]];
		foreach($ret as $k=>$v){
			$ret[$k]['proc']	= round($v[$co[$_GET['id']]]/$max, 2);
			foreach(array('druhy'=>'druhu','rody'=>'rodu','celede'=>'celedi') as $key=>$val){
				$tmp	= array();
				foreach($v[$key] as $nazev=>$pocet)	$tmp[]	= sprintf('%dx %s', $pocet, $nazev);
				asort($tmp);
				$ret[$k]['lbl_'.$key]	= implode('<br/>', $tmp);
			}
			$ret[$k]['ikona']	= 'i'.str_pad(array_sum(array_keys($v['doby'])), 4, '0', STR_PAD_LEFT);
		}

		if(isset($_GET['idDruhu']) and sizeof($_GET['idDruhu'])>0){
			$druhy->id	= $_GET['idDruhu'];
			$druhy->find();
			$smarty->assign('druhy', $druhy);
		}
		$smarty->assign('celedi',	$celedi);
		$smarty->assign('rody',		$rody);
		$smarty->assign('kvadraty',	$ret);
		$smarty->assign('max',		$max);
		$smarty->assign('parametry',	$parametry);
		$smarty->assign('fluid',	true);
		$smarty->assign('noRightCol',	true);
		$smarty->assign('inc',		'mapa.tpl');
		$smarty->display('mapaFull.tpl');
		exit;
	} #}}}

	if($_GET['typ']=='literatura' or $_GET['typ']=='zpravodaj'){ #{{{
		$h1		= _('Bibliografie');
		$h2		= array();

		$literatura	= new literatura($_GET);
		if(isset($literatura->order))	unset($literatura->order);
		if(isset($literatura->id))	unset($literatura->typ);

		if($_GET['typ']=='zpravodaj'){
			#$_GET['t']	= 'zpr';
      $literatura = new zpravodaj($_GET);
      unset($literatura->typ);
			unset($literatura->jenCitace);
			$h1	= _('Zpravodaj');
			$h2[]	= _('České arachnologické společnosti');
		  $literatura->order	= ' order by citace desc';
		}
		if(!isset($_GET['id'])){
			$literatura->jenCitace	= true;
      if($_GET['typ']!='zpravodaj')	$literatura->typ	= (isset($_GET['t']))?$_GET['t']:'ara';
		}
    if(isset($literatura->typ) and !array_key_exists($literatura->typ, $literatura->typy)) $literatura->typ = 'ara';

		$literatura->find();
		$smarty->assign('literatura', $literatura);

		$soubory->idLiteratury	= array_keys($literatura->results);
		if(sizeof($literatura->results)>0)	$soubory->find();

		$lide->literaturaId	= array_keys($literatura->results);
		if(sizeof($literatura->results)>0)	$lide->find();

		if(sizeof($literatura->results) == 1){
			$l	= $literatura->getFirstResult();
			if($l['citace']!=''){
				$nalezy	= new nalezy(array('Citace'=>$l['citace']));
				$nalezy->find();
				$smarty->assign('nalezy', $nalezy);
				if(sizeof($nalezy->druhy) > 0){
					$druhy->id	= array_keys($nalezy->druhy);
					$druhy->find();
				}
			}

			$h1	= $l['nazev'];
			$h2	= ($l['autor']!='')?array('0'=>$l['autor']):array();

      $clanky = new literatura(array('publikovano'=>$l['id']));
      $clanky->find();
      $smarty->assign('clanky', $clanky);

      $inc	= 'detail.tpl';

			if(isset($_SESSION['loggedIn'])){
				$aktivita	= new aktivita(array('tabulka'=>'literatura', 'idZaznamu'=>$l['id']));
				$aktivita->find();
				$smarty->assign('aktivita', $aktivita);
			}
		}else{
			$inc	= 'literatura.tpl';
		}
	} #}}}

	if($_GET['typ']=='dl'){ #{{{
		$literatura	= new soubory(array('id'=>$_GET['id']));
		$literatura->find();

		if(sizeof($literatura->results)==1){
			$l	= $literatura->getFirstResult();
			if($l->soubor==''){
				$_SESSION['err'][]	= _('Soubor nenalezen.');
			}elseif(isset($_SESSION['loggedIn']) or $l->volne==1){
				if($l->typ=='pic'){
					$file	= './pic/'.$l->soubor;
				}else{
					$file	= '../soubory/'.$l->soubor;

          $dl = new downloads;
          $dl->souboryId = $l->id;
          $dl->insert();
				}
//				header('Content-Description: File Transfer');
				$suff	= explode('.', basename(strtolower($file)));
				$suff	= array_pop($suff);
				if($suff=='pdf'){
					header('Content-Type: application/pdf');
				}else{
					header('Content-Type: application/octet-stream');
				}
				header('Content-Disposition: attachment; filename='.basename($file));
				header('Expires: 0');
				header('Cache-Control: must-revalidate');
				header('Pragma: public');
				header('Content-Length: ' . filesize($file));
				readfile($file);
				exit;
			}else{
				$_SESSION['err'][]	= _('Ke stažení souboru je potřeba se přihlásit.');
			}
		}else{
			$_SESSION['err'][]	= _('Soubor nenalezen.');
		}
		$inc	= 'literatura.tpl';
	} #}}}

	if($_GET['typ']=='lide'){ #{{{
		$lide	= new lide;
		$lide->id	= $_GET['id'];
		$lide->find();
		if(sizeof($lide->results)==1){
			$clovek	= $lide->getFirstResult();
			$h1	= lide::link2(array($clovek), false);
			$h2	= array();
			$literatura		= new literatura();
			if(isset($_GET['srt']))	$literatura->srt	= $_GET['srt'];
			$literatura->lideId	= $clovek['id'];
			$literatura->find();

			$druhy			= new druhy();
			$druhy->lideId		= $clovek['id'];
			$druhy->find();

			$fotky			= new soubory();
			if($clovek['idUzivatele']!=''){
				$fotky->typ		= 'pic';
				$fotky->idDruhu		= 'is not NULL';
				$fotky->idUzivatele	= $clovek['idUzivatele'];
				$fotky->order		= ' order by druhy.nazev';
				$fotky->find();
			}

			$soubory->idLide	= array_keys($lide->results);
			if(sizeof($lide->results)>0)	$soubory->find();

			$media			= new media();
			$media->lideId		= $clovek['id'];
			$media->find();

			$smarty->assign('media', $media);
			$smarty->assign('fotky', $fotky);
			$smarty->assign('druhy', $druhy);
			$smarty->assign('clovek', $clovek);
			$smarty->assign('soubory', $soubory);
			$smarty->assign('literatura', $literatura);

			$inc	= 'lide.tpl';
		}
	} #}}}

	if($_GET['typ']=='linky'){ #{{{
		$linky	= new linky($_GET);
		$linky->find();
		$h1	= _('Odkazy');
		$inc	= 'linky.tpl';
		$smarty->assign('linky', $linky);
	} #}}}
	
	if($_GET['typ']=='cas' or $_GET['typ']=='web'){ #{{{
		$stranky	= new stranky();
		$stranky->verejna	= (prihlaseny())?array('0','1'):'1';
		$stranky->find();
		if(isset($_GET['id']) and isset($stranky->results[$_GET['id']])){
			$stranka	= $stranky->results[$_GET['id']];
			$h1	= $stranka['titulek'];
			$inc	= 'stranky.tpl';
			$smarty->assign('stranka', $stranka);
      $_SESSION['jazyk'] = $stranka['jazyk'];
		
			$prilohy		= new soubory();
			$prilohy->idStranky	= $stranka['id'];
			$prilohy->find();
			$smarty->assign('prilohy', $prilohy);

			switch($stranka['special']){
				case 'cervena':
					$druhy->ohrozeni	= array('LC','RE','CR','EN','VU');
					$druhy->find();

					$druhy->prvoNalezy	= new nalezy(array('id'=>$druhy->prvoNalezyId));
					if(sizeof($druhy->prvoNalezy->id)>0)	$druhy->prvoNalezy->find();

					$smarty->assign('special', $stranka['special']);
					break;;
				case 'sinSlavy':
					$lide		= new lide;
					$lide->sinSlavy	= 1;
					$lide->find();
					$smarty->assign('lide', $lide);
					$smarty->assign('special', $stranka['special']);
					break;;
				case 'bezniPavouci':
					$druhy->beznyPavouk	= 1;
					$druhy->find();
					$soubory->idDruhu	= array_keys($druhy->results);
					$soubory->find();

					$smarty->assign('special', $stranka['special']);
					break;;
				case 'monitoring':
					$druhy->monitoring	= 1;
					$druhy->find();
					$druhy->prvoNalezy	= new nalezy(array('id'=>$druhy->prvoNalezyId));
					if(sizeof($druhy->prvoNalezy->id)>0)	$druhy->prvoNalezy->find();

					$nalezy	= new nalezy(array('idDruhu'=>array_keys($druhy->results)));
					$nalezy->find();
					$smarty->assign('nalezy', $nalezy);

					$soubory->idDruhu	= array_keys($druhy->results);
					$soubory->find();

					$uzivatele	= new uzivatele;
					$uzivatele->find();
					$smarty->assign('uzivatele', $uzivatele);

					$smarty->assign('special', $stranka['special']);
					break;;
				case 'pavoukRoku':
					$pavouci	= array(
							#''	=> array('jmeno'=>'', 'id'=>''),
							'2025'	=> array('jmeno'=>'Segestria senoculata', 'id'=>'3653'),
							'2024'	=> array('jmeno'=>'Nesticus cellulanus', 'id'=>'3528'),
							'2023'	=> array('jmeno'=>'Cheiracanthium punctorium', 'id'=>'3455'),
							'2022'	=> array('jmeno'=>'Hygrolycosa rubrofasciata', 'id'=>'3311'),
							'2021'	=> array('jmeno'=>'Ero furcata', 'id'=>'3088'),
							'2020'	=> array('jmeno'=>'Dolomedes fimbriatus', 'id'=>'2998'),
							'2019'	=> array('jmeno'=>'Myrmarachne formicaria', 'id'=>'2899'),
							'2018'	=> array('jmeno'=>'Steatoda bipunctata', 'id'=>'2732'),
							'2017'	=> array('jmeno'=>'Nuctenea umbratica', 'id'=>'2547'),
							'2016'	=> array('jmeno'=>'Cyclosa conica', 'id'=>'2250'),
							'2015'	=> array('jmeno'=>'Anyphaena accentuata', 'id'=>'421'),
							'2014'	=> array('jmeno'=>'Linyphia triangularis', 'id'=>'441'),
							'2013'	=> array('jmeno'=>'Atypus affinis', 'id'=>'439'),
							'2012'	=> array('jmeno'=>'Meta menardi', 'id'=>'437'),
							'2011'	=> array('jmeno'=>'Agelena labyrinthica', 'id'=>'435'),
							'2010'	=> array('jmeno'=>'Araneus diadematus', 'id'=>'433'),
							'2009'	=> array('jmeno'=>'Hyptiotes paradoxus', 'id'=>'431'),
							'2008'	=> array('jmeno'=>'Tegenaria atrica', 'id'=>'429'),
							'2007'	=> array('jmeno'=>'Arctosa cinerea', 'id'=>'427'),
							'2006'	=> array('jmeno'=>'Misumena vatia', 'id'=>'425'),
						);

					$smarty->assign('pavouci', $pavouci);
					$smarty->assign('special', $stranka['special']);
					break;;
				case 'lokality':
					$lokality	= new lokality();
					$lokality->find();
					$smarty->assign('lokality', $lokality);
					$smarty->assign('special', $stranka['special']);
					break;;
				case 'exkurze':
	#				if(isset($_SESSION['loggedIn'])){
						$navstevy	= new navstevy();
						$navstevy->find();
		
						if(sizeof($navstevy->results) > 0){
							$druhy	= new druhy(array('idNavstevy'=>array_keys($navstevy->results)));
							$druhy->find();
							foreach($druhy->results as $d){
								$n	= $d['idNavstevy'];
								if(!isset($navstevy->results[$n]['druhy']))	$navstevy->results[$n]['druhy']	= array();
								array_push($navstevy->results[$n]['druhy'], $d);
							}
						}
						$smarty->assign('navstevy', $navstevy);
						$smarty->assign('special', $stranka['special']);
	#				}
					break;;
				case 'projekty':
					$projekty	= new projekty(array('zverejnit'=>1));
					$projekty->find();
					$smarty->assign('projekty', $projekty);
					$smarty->assign('special', $stranka['special']);
					break;;
				case 'registrace':
					if(isset($_POST['email']) and $_POST['email']!='' and $_POST['url']==''){
						if(isset($_POST['g-recaptcha-response']) and $_POST['g-recaptcha-response']!=''){
							$ch	= curl_init();
							curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
							curl_setopt($ch, CURLOPT_POST, 1);
							curl_setopt($ch, CURLOPT_POSTFIELDS, sprintf('secret=6Ld7LboaAAAAAPrrOSdUFDQ4IlWMcl_LOJ8SrcwO&response=%s&remoteip=%s', $_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']));
							curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
							$output = curl_exec($ch);
							$output	= json_decode($output);
	
							if(is_object($output) and isset($output->success)){
                if($output->success==1 and $output->score>=0.5){
  								$novacek	= new uzivatele($_POST);
	  							$novacek->registrace();
		  						unset($novacek);
			  				}else{
				  				$_SESSION['warn'][]	= _('Registrace se nezdařila. Kontaktujte nás, prosím, mailem nebo přes sociální sítě.').' (1)';
                  error_log('Failed registration: '.serialize($output));
                }
							}else{
				  		  $_SESSION['warn'][]	= _('Registrace se nezdařila. Kontaktujte nás, prosím, mailem nebo přes sociální sítě.'). '(2)';
              }
						}else{
							$_SESSION['warn'][]	= _('Registrace se nezdařila. Kontaktujte nás, prosím, mailem nebo přes sociální sítě.').' (3)';
						}
            header('Location: '.$_SERVER['SCRIPT_URL']);
            exit;
					}
					$smarty->assign('special', $stranka['special']);
					break;;
				case 'biotopy':
					$parametry	= new parametry(array('typ'=>'4', 'neurceno'=>'0'));
					$parametry->find();
					$smarty->assign('parametry', $parametry);
					$smarty->assign('special', $stranka['special']);
					break;;
			  case 'naseDruhy':
        case 'naseDruhyOpi':
        case 'naseDruhyPseudo':
          $druhy->nasDruh = 1;
          $arr = array('naseDruhy'=>1, 'naseDruhyOpi'=>3, 'naseDruhyPseudo'=>2);
          if(isset($_GET['parametr'])) $druhy->parametr = (int)$_GET['parametr'];
          $druhy->idRadu = $arr[$stranka['special']];
          $druhy->synonymum = '0';
          $druhy->find();
          $druhy->prvoNalezy  = new nalezy(array('id'=>$druhy->prvoNalezyId));
          if(sizeof($druhy->prvoNalezy->id)>0)  $druhy->prvoNalezy->find();
          if(isset($_GET['export'])){
            $druhy->export();
            exit;
          }
          $smarty->assign('special', 'naseDruhy');
          break;;
        case 'cestniClenove':
          $uzivatele = new uzivatele;
          $uzivatele->clen = 2;
          $uzivatele->find();
          $smarty->assign('uzivatele', $uzivatele);
          $smarty->assign('special', $stranka['special']);
          break;;
        case 'exkurzeVerejne':
          $exkurze = new akce;
          $exkurze->typ = 4;
          $exkurze->greaterEqual('datumOd', date('Y-m-d'));
          $exkurze->find();
          $smarty->assign('exkurze', $exkurze);
          $smarty->assign('special', $stranka['special']);
          break;;
			}
		}else{
			header('Location: /');
			exit;
		}
	} #}}}

	if($_GET['typ']=='stary'){ #{{{
		switch($_REQUEST['sub']){
			case 'distribution':
			case 'discussions':
				$druhy	= new druhy;
				if(!isset($_REQUEST['s'])){
					goHome();
					exit;
				}
				$druhy->src	= urldecode($_REQUEST['s']);
				$druhy->light	= true;
				$druhy->find();
				if(sizeof($druhy->results) == 1){
					$druh	= array_shift($druhy->results);
					header($_SERVER['SERVER_PROTOCOL'].'301 Moved Permanently');
					header(sprintf('Location: /druh/%s-%s.html?jazyk=en', main::url($druh['nazev']), $druh['id']));
					exit;
				}elseif(sizeof($druhy->results)==0){
					$_SESSION['err'][]	= 'Odpovídající druh nebyl nalezen.';
					$_SESSION['err'][]	= 'There is no matching species in the database.';
					goHome();
					exit;
				}else{
					goHome(sprintf('/?src=%s', urlencode($druhy->src)));
					exit;
				}
				break;;
			case 'quadrate':
				header($_SERVER['SERVER_PROTOCOL'].'301 Moved Permanently');
				header(sprintf('Location: /kvadrat/%s?jazyk=en', $_GET['q']));
				exit;
				break;;
			case 'redlist':
				$url	= (isset($_GET['l']) and $_GET['l']=='en')?'/cas/red-list-of-arachnids-of-czech-republic-13.html':'/cas/cerveny-seznam-10.html';
				goHome($url);
				exit;
				break;;
			case 'arachnids':
				if(isset($_GET['o'])){
					$url	= '/';
					switch($_GET['o']){
						case 'ara':
							$url	= '/rad/aranea-1.html';
							break;;
						case 'opi':
							$url	= '/rad/opiliones-3.html';
							break;;
						case 'pse':
							$url	= '/rad/pseudoscorpiones-2.html';
							break;;
						case 'sch':
							$url	= '/rad/schizomida-4.html';
							break;;
					}
					goHome($url);
				}else{
					goHome();
				}
				exit;
				break;;
			case 'arachnids':
				exit;
				break;;
		}
		goHome();
		exit;
	} #}}}

	if($_GET['typ']=='akce'){ #{{{
		$akce	= new akce($_REQUEST);
		$akce->typ	= (isset($_GET['t']))?$_GET['t']:1;
		if(isset($_GET['id']))	unset($akce->typ);
		$akce->find();
		if(isset($akce->typ))	$h1	= $akce->typy[$akce->typ];
		if(sizeof($akce->results)==1){
			$seminar	= $akce->getFirstResult();
			$h2[]	= $akce->typy[$seminar['typ']];
			$h1	= $seminar['nazev'];
		}
		$smarty->assign('akce', $akce);

    $typy = new akceTypy;
    $typy->find();
    $smarty->assign('typy', $typy);

		if(isset($_GET['exp'])){
			switch($_GET['exp']){
				case 'vcs':
				case 'ics':
					header('Content-type: text/calendar');
					header('Content-disposition: attachment; filename='.main::url($seminar['nazev']).'.'.$_GET['exp']);
					$smarty->assign('seminar', $seminar);
					$smarty->display('akce_vcs.tpl');
					break;;
			}
			exit;
		}

		$inc	= 'akce.tpl';
	} #}}}

	if($_GET['typ']=='export'){ #{{{
		if(!isset($_SESSION['loggedIn'])){
			header('Location: /login/');
			exit;
		}
		$celedi->find();
		if(isset($_POST) and sizeof($_POST)>0){
			$nalezy	= new nalezy($_POST);
			$nalezy->prepareQuery();
			$nalezy->getCounts();
			
      if(isset($nalezy->kvadrat) and $nalezy->kvadrat!='')	$nalezy->kvadrat	= explode(' ',str_replace(array(',','  '), ' ', trim($nalezy->kvadrat)));

			if($nalezy->resultsCount>500 or (isset($_POST['export']) and $_POST['export']==1)){
				$nalezy->export();
				exit;
			}else{
				$nalezy->find();
	
				$druhy		= new druhy;
				$druhy->id	= array_keys($nalezy->druhy);
				$druhy->find();
				$smarty->assign('druhy', $druhy);
			
				$literatura	= new literatura(array('citace'=>$nalezy->citace));
				if(sizeof($nalezy->results)>0)	$literatura->find();
				$smarty->assign('literatura',	$literatura);

				$smarty->assign('nalezy', $nalezy);
				$inc	= 'exportForm.tpl';
			}
		}else{
			$inc	= 'exportForm.tpl';
		}
	}#}}}

	if($_GET['typ']=='pomocnaMapka'){ #{{{
		$inc	= 'pomocnaMapka.tpl';
		if(isset($_GET['full'])){
			$smarty->assign('inc', $inc);
			$smarty->display('mapaFull.tpl');
			exit;
		}
	} #}}}

	if($_GET['typ']=='media'){ #{{{
		$media	= new media;
		$media->find();
		$smarty->assign('media', $media);
		$h1	= _('ČAS v médiích');
		$h2	= array(_('články, rozhovory, příspěvky'));
		$inc	= 'media.tpl';
	} #}}}

	if($_GET['typ']=='foto'){ #{{{
		$soubory->typ	= 'pic';
		$soubory->id	= $_GET['id'];
		$soubory->find();
		if(sizeof($soubory->results) == 1){
			$smarty->assign('soubory', $soubory);
			$inc	= 'foto.tpl';
		}else{
			$_SESSION['err'][]	= _('Fotografie nebyla nalezena');
		}
	} #}}}

	if($_GET['typ']=='lokality'/* and isset($_SESSION['loggedIn'])*/){ #{{{
		$lokality	= new lokality($_GET);
		$lokality->find();
		if(sizeof($lokality->results)==1){
			$lokalita	= $lokality->getFirstResult();
			$lokalita['druhy']		= new druhy();
			$lokalita['druhy']->souradnice	= array('sirka'=>$lokalita['sirka'], 'delka'=>$lokalita['delka']);
			$lokalita['druhy']->find();

			$smarty->assign('lokalita', $lokalita);

			$h1	= $lokalita['nazev'];

			$navstevy	= new navstevy(array('idLokality'=>$lokalita['id']));
			$navstevy->find();

			if(sizeof($navstevy->results) > 0){
				$druhy	= new druhy(array('idNavstevy'=>array_keys($navstevy->results)));
				$druhy->find();
				foreach($druhy->results as $d){
					$n	= $d['idNavstevy'];
					if(!isset($navstevy->results[$n]['druhy']))	$navstevy->results[$n]['druhy']	= array();
					array_push($navstevy->results[$n]['druhy'], $d);
				}
			}

			$smarty->assign('navstevy', $navstevy);
			$inc	= 'lokality.tpl';
		}else{
			$_SESSION['err'][]	= _('Daná lokalita nebyla nalezena.');
		}
	} #}}}

	if($_GET['typ']=='exkurze' /*and isset($_SESSION['loggedIn'])*/){ #{{{
		$navstevy	= new navstevy($_GET);
		$navstevy->find();
		
		if(sizeof($navstevy->results) > 0){
			$druhy	= new druhy(array('idNavstevy'=>array_keys($navstevy->results)));
			$druhy->find();
			foreach($druhy->results as $d){
				$n	= $d['idNavstevy'];
				if(!isset($navstevy->results[$n]['druhy']))	$navstevy->results[$n]['druhy']	= array();
				array_push($navstevy->results[$n]['druhy'], $d);
			}
		}
		if(sizeof($navstevy->results) == 1){
			$tmp	= $navstevy->getFirstResult();
			$h1	= sprintf('%s - %s', strftime('%x', strtotime($tmp['datum'])), $tmp['lokalita']);
		}

		$smarty->assign('navstevy', $navstevy);
		$inc	= 'exkurze.tpl';
	} #}}}

	if($_GET['typ']=='statistiky'){ #{{{
		$literatura	= new literatura();
		$smarty->assign('literatura', $literatura);
		$smarty->assign('literaturaStats', literatura::stats());
		$smarty->assign('statistiky', nalezy::stats());
		$smarty->assign('parametryStats', parametry::stats());

		$inc	= 'statistiky.tpl';
	} #}}}

	if($_GET['typ']=='projekty'){ #{{{
		$projekty		= new projekty();
		$projekty->zverejnit	= 1;
		if(isset($_GET['id']))	$projekty->id	= $_GET['id'];
		$projekty->find();
		$smarty->assign('projekty', $projekty);
		$inc	= 'special/projekty.tpl';
	} #}}}

	if($_GET['typ']=='biotop'){ #{{{
		$biotopy	= new biotopy(array('neurceno'=>'0'));
		$biotopy->find();
		$smarty->assign('biotopy', $biotopy);

		if(isset($biotopy->results[$_GET['id']])){
			$biotop	= $biotopy->results[$_GET['id']];
			if($biotop['synonymum']!=''){
				header(sprintf('Location: /biotop/%s-%d.html', main::url($biotopy->results[$biotop['synonymum']]['nazev']), $biotop['synonymum']), true, '301');
				exit;
			}
			$smarty->assign('biotop', $biotop);
			$h1	= _('Biotop').': '.$biotop['nazev'];

			$nalezy	= new nalezy(array('KodBiotopu'=>$biotop['id'], 'justResults'=>true));
			$nalezy->find();
			$smarty->assign('nalezy', $nalezy);

			$druhy	= new druhy(array('KodBiotopu'=>$biotop['id']));
			$druhy->find();
		}else{
			$_SESSION['err'][]	= _('Daný biotop neexistuje.');
		}
		$inc	= 'biotop.tpl';
	} #}}}

  if($_GET['typ']=='katalog'){ #{{{
    $druhy->nasDruh = 1;
    $druhy->idRadu = 1;
    $druhy->find();
	  $smarty->assign('druhy',	$druhy);

    $parametry->find();
    $smarty->assign('parametry', $parametry);
    $smarty->display('katalog.tpl');
    exit;
  } #}}}

	$smarty->assign('druhy',	$druhy);


}elseif(isset($_REQUEST['src'])){ #{{{
	$druhy	= new druhy(array('src'=>$_REQUEST['src']));
	$druhy->find();

	$lide	= new lide(array('src'=>$_REQUEST['src']));
	$lide->find();

	$literatura	= new literatura(array('src'=>$_REQUEST['src']));
	$literatura->find();

	$smarty->assign('druhy', $druhy);
	$smarty->assign('lide', $lide);
	$smarty->assign('literatura', $literatura);

	$inc	= 'search.tpl'; #}}} 
}else{ #{{{
/*	$nalezy		= new nalezy();
	$nalezy->order	= ' order by datumDo desc';
	$nalezy->limit	= ' limit 20';
	$nalezy->find();
	$druhy		= new druhy;
	foreach($nalezy->results as $n)	$druhy->id[]	= $n['idDruhu'];
	$druhy->find();
	$smarty->assign('nalezy',	$nalezy);
	$smarty->assign('druhy',	$druhy);
	$literatura	= new literatura(array('citace'=>array_keys($nalezy->citace)));
	if(sizeof($nalezy->citace)>0)	$literatura->find();
	$smarty->assign('literatura',	$literatura);*/

	$uvod	= new stranky;
	$uvod->jazyk	= $_SESSION['jazyk'];
	$uvod->uvodni	= 1;
	$uvod->find();
	$smarty->assign('uvod', $uvod);

	$uvodniStranka	= $uvod->getFirstResult();

	$druhy->beznyPavouk	= 1;
	$druhy->find();
	$soubory->idDruhu	= array_keys($druhy->results);
	$soubory->find();

	$smarty->assign('druhy',	$druhy);
	$smarty->assign('soubory',	$soubory);
	$smarty->assign('special',	$uvodniStranka['special']);

	$fotky	= new soubory(array('typ'=>'pic','idDruhu'=>'is not NULL'));
  $fotky->order = ' order by id desc';
  $fotky->limit = ' limit 8';
	$fotky->find();
	$smarty->assign('fotky', $fotky);

	$literatura	= new literatura;
  $literatura->order = ' order by id desc';
  $literatura->limit = ' limit 6';
	$literatura->find();
	$smarty->assign('literatura', $literatura);

	$inc	= 'uvod.tpl';
} #}}}

$rody->find();
$celedi->find();
$rady->find();

if(!isset($lide)){
	$lide	= new lide();
}
if(!isset($lide->results))	$lide->find();

$posledni	= new nalezy;
$posledni->order = 'DatumDo';
$posledni->light = true;
$posledni->limit = ' limit 10';
$posledni->find();
$smarty->assign('posledniNalezy', $posledni);

$stranky		= new stranky;
$stranky->jazyk		= $_SESSION['jazyk'];
$stranky->verejna	= (prihlaseny())?array('0','1'):'1';
$stranky->uvodni	= '0';
$stranky->menu		= true;
$stranky->find();

$smarty->assign('main',		$main);
$smarty->assign('inc',		$inc);
$smarty->assign('rady',		$rady);
$smarty->assign('celedi',	$celedi);
$smarty->assign('rody',		$rody);
$smarty->assign('titulek',	$titulek);
$smarty->assign('lide',		$lide);
$smarty->assign('stranky',	$stranky);
$smarty->assign('parametry',	$parametry);
$smarty->assign('soubory',	$soubory);
$smarty->assign('h1',		$h1);
if(sizeof($h2)>1)		unset($h2[0]);
$smarty->assign('h2',		array_reverse($h2));
if(isset($_GET['mapa']) and $_GET['mapa']=='full'){
	$smarty->display('mapaFull.tpl');
}else{
	$smarty->display(INDEX_TPL);
}
?>
