var IE5;
var IE;
var Opera;
						//pro div s pozn, přečtu v Init() ze souboru s css 
var PoznPadding;	//v em			//padding
var PoznMaxWidth;	//v em			//max. width, který chci
var PoznChtenyPomerPred;			//poměr, o který se posune před hvězdičku

function RozpoznejTypProhlizece()
{
	if( window.navigator.appName == "Microsoft Internet Explorer" )		//zjištění IE
		IE = true;
	else
		IE = false;

	var Match = window.navigator.userAgent.match( new RegExp( "Opera", "i" ) );		//zjištění Opery
	if( Match )
	{	Opera = true;	IE = true;	}
	else
		Opera = false;

				/*var Match = window.navigator.userAgent.match( new RegExp( "MSIE\\s*([\\d\\.]+)", "i" ) );	//zjištění IE5
				if( Match && Match[1] < 6.0 )
					IE5 = true
				else
					IE5 = false; */	
			
	if( IE )		//smazal jsem doctype (kvůli padání IE), tedy každý IE se chová jako IE5
		IE5 = true;
	else
		IE5 = false;
	
	return true;
}

function NactiCssProPoznamky()
{
	//objekt se styly v souboru s css
	if( IE )					//styleSheets si dělá každý po svém
	{	
		if( document.styleSheets && document.styleSheets[0].rules )
			var Rules = document.styleSheets[0].rules;
	}
	else
	{
		if( document.styleSheets && document.styleSheets[0].cssRules )
			var Rules = document.styleSheets[0].cssRules;
	}

	//přečtu žádané nastavení width a margin-left pro box s textem poznámky
	if( Rules )		//např. Opera to prostě načíst neumí, nastavím implicitní hodnoty
	{
		var PaddingLeft = 0;
		var PaddingRight = 0;
		var CisloRule = 0;			
		var MyRegExp = new RegExp( "^span\\.TextPozn$", "i" );

		while( Rules[CisloRule] )	//prochází po stylech
		{
			var Rule = Rules[CisloRule];
			CisloRule++; 

			var Selector = String( Rule.selectorText );

			if( Selector.match( MyRegExp ) )		//jde o style pro span.TextPozn
			{
				Match = Rule.style.paddingLeft.match( /([\.\d]+)em/ );	//...přečte nastavení stylů
				if( Match )
					PaddingLeft = Number( Match[1] );
				Match = Rule.style.paddingRight.match( /([\.\d]+)em/ );	//...přečte nastavení stylů
				if( Match )
					PaddingRight = Number( Match[1] );
				Match = Rule.style.width.match( /([\.\d]+)em/ );
				if( Match )
					PoznMaxWidth = Number( Match[1] );
				Match = Rule.style.marginLeft.match( /([\.\d]+)em/ );
				if( Match )
					PoznChtenyPomerPred = Number( Match[1] );
			}
		}
		PoznChtenyPomerPred /= PoznMaxWidth;
		PoznPadding = (  PaddingLeft + PaddingRight )/2;	//stačí mi na výpočty jen průměr
	}
	else	//implicitní hodnoty
	{
		PoznPadding = 1;	//v em			//padding
		PoznMaxWidth = 20;	//v em			//max. width, který chci
		PoznChtenyPomerPred = 0.2;			//poměr, o který se posune před hvězdičku
	}
	
	return true;
}

function NastavPoznamkyADoplnTitle()
{
	var Ps = document.getElementsByTagName( "sup" );	//všechny tagy sup...
	for( var i = 0; i < Ps.length; i++ ) 		//...se prochází...
	{
		if( Ps[i].className == "ZnacPozn" )	//... a těm, které mají class ZnacPozn (to jsou ty hvězdičkou, jako značky poznámky pod čarou), přiřadí event-handlery pro zpracování událostí onmouseover a onmouseout
		{
			Ps[i].onmouseover = Show;
			Ps[i].onmouseout = Hide;
		}
		else if( Ps[i].className == "Znac" )
		{
			if( Ps[i].firstChild.nodeValue == "m" )
				Ps[i].setAttribute( "title", "Slovo je překladem ř. sóma nabo jeho odvozenin." );
			else if( Ps[i].firstChild.nodeValue == "x" )
				Ps[i].setAttribute( "title", "Slovo je překladem ř. sarx nabo jeho odvozenin." );
			else if( Ps[i].firstChild.nodeValue == "r" )
				Ps[i].setAttribute( "title", "Slovo je překladem ř. rhéma." );
			else if( Ps[i].firstChild.nodeValue == "h" )
				Ps[i].setAttribute( "title", "Minulým časem přeložený u ř. slovesa čas historický přítomný." );
			else if( Ps[i].firstChild.nodeValue == "f" )
				Ps[i].setAttribute( "title", "Budoucí čas, u kterého je formálně možný jak dokonavý tak i nedokonavý vid." );
			else if( Ps[i].firstChild.nodeValue == "s" )
				Ps[i].setAttribute( "title", "Všechna takto označená slova vyjadřuje jeden ř. výraz." );
			else if( Ps[i].firstChild.nodeValue == "c" )
				Ps[i].setAttribute( "title", "U slov Bůh, duch, slovo a pravda je tímto znaménkem vyjádřen ř. člen." );
			else if( Ps[i].firstChild.nodeValue == "p" )
				Ps[i].setAttribute( "title", "Řecké sloveso je v perfektu." );
		}
		else if( Ps[i].className == "KulZavLeva" || Ps[i].className == "KulZavPrava" )
			Ps[i].setAttribute( "title", "Poznámka nebo verše za úsekem mezi závorkámi se vztahují k celému úseku." );
		else if( Ps[i].className == "HranZavLeva" || Ps[i].className == "HranZavPrava" )
			Ps[i].setAttribute( "title", "Slovo nebo pasáž mezi [...] chybí pouze v méně významných skupinách rukopisů." );
	}

	Ps = document.getElementsByTagName( "span" );
	for( var i = 0; i < Ps.length; i++ )
	{
		if( Ps[i].className == "VelkaHranZav" )
			Ps[i].setAttribute( "title", "Slovo nebo pasáž mezi [...] chybí ve významných skupinách rukopisů." );
	}

	return true;
}

function Show()		//fce je přiřazena události onmouseover nad tagy s hvězdičkou, jako značkou poznámky pod čarou
{
	var TP = document.getElementById( "Text"+ this.id );	//element s textem poznámky... (má id odvozené od id aktuálního tagu s hvězdičkou tak, že se před něj napíše "Text")

	var PomDiv = document.createElement( "div" );			//pomocný element div
	PomDiv.appendChild( document.createTextNode( "a" ) );	//vložím nějaký text (musí tam něco být)
	PomDiv.style.position = "absolute";
	document.body.appendChild( PomDiv );	//zařadím do dokumentu

	PomDiv.style.width = "1em";
	//měřím aktuální šířku 1em
	var Em = PomDiv.offsetWidth;				//změřím v px, kolik je zhruba aktuální 1em (není to přesně, ale to nevadí, jde jen o přepočet chtěné šířky boxu z em (jak je zadáno v css) do px)

	PomDiv.style.width = "";
	PomDiv.style.padding = PoznPadding + "em";
	PomDiv.removeChild( PomDiv.firstChild );	//vyhodí to "a"
	var CisloNode = 0;					//nakopíruji text poznámky do pom. div (po nodech, může být rozsekáno)
	while( TP.childNodes[CisloNode] )
	{
		PomDiv.appendChild( TP.childNodes[CisloNode].cloneNode(true) );	
		CisloNode++;
	}
	PomDiv.style.textAlign = "justify";			//zmaximální to šířku

	//měřím maximální šířku, kterou text poznámky má
	var ZmerenaWidth = PomDiv.offsetWidth;		//změřím jeho šířku (může být až přes šířku celé obrazovky)
	if( IE5 )
		ZmerenaWidth += 2;		//to je ještě za ten border, který IE započítává do width

	document.body.removeChild( document.body.lastChild );	//smažu pomocný div

	if( document.getElementById( "VerseZDotazu" ) || document.getElementById( "VerseZHledani" ) )
		var Tabulka = true;		//tj. jde o výpis tabulky, ne textu kapitoly
	else
		var Tabulka = false;

	var VlastniObsah = document.getElementById( "Stranka" );
	var As = VlastniObsah.getElementsByTagName( Tabulka ? "tr" : "p" );		//1. odstavec textu, nebo 1. řádek tabulky 
	var MerObj  = As[0];
	//měřím maximální šířku řádku (tj. do jakého prostoru musím vtěsnat poznámku)
	var CelkemWidth = MerObj.offsetWidth;			//změřím šířku řádky

	//počítám, kolik bude šířka (boxu) poznámky
	var PoznWidth = PoznMaxWidth*Em;			//kolik bude šířka poznámky
	if( ZmerenaWidth < PoznWidth )
		PoznWidth = ZmerenaWidth;
	if( CelkemWidth < PoznWidth )
		PoznWidth = CelkemWidth;

	//počítám, kolik chci ideálně posunout poznámku nalevo od hvězdičky
	var ChciPoznMarginLeft = Math.round( PoznChtenyPomerPred * PoznWidth );	//kolik chci místa nalevo
	
	//počítám, kolik mám volného místa nalevo od hvězdičky (tohle je třeba po změně rozložení stránky vždy znovu ověřit pro každý případ zvlášť, jestli to počítá správně)
	if( Tabulka )		
	{
		var CelkemLeft = this.offsetLeft + this.offsetParent.offsetLeft	+ this.offsetWidth;
	}
	else
	{
		if( IE5 )
		{
			if( this.parentNode.nodeName.match( new RegExp( "span", "i" ) ) )	//jedná se o zvýrazněný verš, který je uzavřený ještě v jednom span (offsetParent nedává P, jak by mělo, ale až body :-( )
				var CelkemLeft = this.offsetLeft - this.parentNode.parentNode.offsetLeft + this.offsetWidth;
			else
				var CelkemLeft = this.offsetLeft - this.parentNode.offsetLeft + this.offsetWidth;
		}
		else if( IE )	//tj. IE6, což je teď vyplé
		{
			var CelkemLeft = this.offsetLeft - this.offsetParent.offsetLeft;
		}
		else		//Moz
		{
			if( this.parentNode.nodeName.match( new RegExp( "span", "i" ) ) )	//jedná se o zvýrazněný verš, který je uzavřený ještě v jednom span (offsetParent nedává P, jak by mělo, ale až body :-( )
				var CelkemLeft = this.offsetLeft - this.parentNode.parentNode.offsetLeft;
			else
				var CelkemLeft = this.offsetLeft - this.parentNode.offsetLeft;
		}
	}
	
		var PredmluvPozn = document.getElementById( "Pozn-Pr-1a" );	//takhle natvrdo posunu jednu jedinou poznámku v předmluvě překladatelů
		if( PredmluvPozn && this.id == PredmluvPozn.id )
			CelkemLeft += 80;

		var TipPozn = document.getElementById( "Pozn-Tip-1" );	//takhle natvrdo posunu jednu jedinou poznámku v tipech na úvodní stránce
		if( TipPozn && this.id == TipPozn.id )
		{
			if( IE5 )
				CelkemLeft += 40;
			else
				CelkemLeft += TipPozn.parentNode.offsetLeft - 20 ;
		}

	//počítám, kolik je místa za koncem poznámky, pokud ji umístím do ideální polohy
	var VpravoPrebyva = CelkemWidth - ( CelkemLeft - ChciPoznMarginLeft + PoznWidth );	

	//měřím odsazení textu od levého kraje prohlížeče
	var Kraj = MerObj.offsetLeft;
	while( MerObj.offsetParent )
	{
		MerObj = MerObj.offsetParent;
		Kraj += MerObj.offsetLeft;			
	}
	
	//umísťuji box s poznámkou

	if( IE5 )
		TP.style.width = PoznWidth + "px";	
	else
		TP.style.width = PoznWidth - 2*PoznPadding*Em + "px";		//u ne IE5 třeba odečíst šířku paddingu
	TP.style.marginLeft =  "0px";	//bylo nastaveno v common.css, musím smazat

	if( VpravoPrebyva < 0 )		//musím poznámku posunout vlevo od ideální polohy
	{
		//alert( 1 );
		TP.style.left = Kraj + CelkemWidth - PoznWidth + "px";
	}
	else if( CelkemLeft < ChciPoznMarginLeft )	//musím poznámku posunout vpravo od ideální polohy
	{
		//alert(2);
		TP.style.left = Kraj + "px";	
	}
	else 	//poznámka je v ideální poloze
	{
		//alert(3);
		TP.style.left = Kraj + CelkemLeft - ChciPoznMarginLeft + "px";
	}
		/*	//ladící box pro ukázání různých změřených hodnot
			var DIV = document.getElementById( "DIV" );	
			DIV.style.marginTop = "25em";
			DIV.style.width = PoznWidth + "px";
			DIV.style.left = Kraj + "px";
		*/	

	TP.style.display = "inline";				//poznámka se zviditelní		

	return true;
}

function Hide()		//fce je přiřazena události onmouseout nad tagy s hvězdičkou, jako značkou poznámky pod čarou
{
	var TP = document.getElementById( "Text"+ this.id );	//element s textem poznámky...
	TP.style.display = "none";				//...se schová
	return true;
}

function ZmenSirkuInputDotazAJ()	//délka formulářového řádku pro dotaz se vypočte z umístění a šířky inputů a selectů pod ním
{
	var Dotaz = document.getElementById( "InputDotaz" );
	var ObrVyhledavani = document.getElementById( "ObrVyhledavani" );
	var BoxDotaz = document.getElementById( "BoxDotaz" );
	var BoxKonk = document.getElementById( "BoxKonk" );
	var BoxOmez = document.getElementById( "BoxOmez" );
	
	if( BoxDotaz.offsetLeft == BoxKonk.offsetLeft || ObrVyhledavani.offsetLeft == BoxKonk.offsetLeft || ObrVyhledavani.offsetLeft == BoxDotaz.offsetLeft ) 	//šířka stránky je tak malá, že všechny boxy s inputy a selecty již "spadly" -> šířka formulářového řádku přes celou stránku
	{
		var Nadpis = document.getElementById( "NaSirku" );	//box s nadpisem je přes celou stránku, tak ho změřím
		//Dotaz.style.width = Nadpis.offsetWidth + "px";
		Dotaz.style.width = Nadpis.offsetWidth - ObrVyhledavani.offsetLeft - ObrVyhledavani.offsetWidth - 45 + "px";
	}
	else if( ObrVyhledavani.offsetLeft == BoxOmez.offsetLeft || BoxDotaz.offsetLeft == BoxOmez.offsetLeft )	//"spadl" jen box s výběry knih -> šířka přes celou obrazovku zároveň s tlačítkem napravo
	{
		var Nadpis = document.getElementById( "NaSirku" );
		var Tlacitko = document.getElementById( "InputTlacitkoNajdi" );
		Dotaz.style.width = Nadpis.offsetWidth - Dotaz.offsetLeft - Tlacitko.offsetWidth - 35 + "px";
	}
	else	// stránka dost široká -> šířka stejná, jako je šířka inputů a selectů pod ním
	{
		var Tlacitko = document.getElementById( "InputTlacitkoNajdi" );
		Dotaz.style.width = BoxOmez.offsetLeft - BoxDotaz.offsetLeft 
			+ BoxOmez.offsetWidth - Tlacitko.offsetWidth - 8 + "px";
	}
	
		//šířku tabulky "PoHeslech" je třeba vypočíst v IE, style.width = 100% je totiž širší, než má být, nastavím tedy na šířku nadpisu
	if( IE5 )
	{
		var TabPoHeslech = document.getElementById( "PoHeslech" );
		if( TabPoHeslech )
		{
			var Nadpis = document.getElementById( "NaSirku" );
			TabPoHeslech.style.width = Nadpis.offsetWidth + "px";
		}
	}
	
	return true;
}

function ResetFormulare( Typ )	//bez Dotazu (pokud Typ != 2)
{
	var Form = document.getElementById( "Form" );
		Form = Form.elements;
	Form[2].checked = true;
	Form[4].checked = true;
	Form[7].selectedIndex = -1;
	if( Typ == 2 )
		Form[0].value = "";
	
	ZvyrazneniNeStdSelectu();	//po resetu je třeba upravit barvy
	
	return true;
}

function ResetFormularePlus()	//s Dotazem
{
	ResetFormulare( 2 );
}

function ZvyrazneniNeStdSelectu()
{
	var Form = document.getElementById( "Form" );
	var TextDotaz = document.getElementById( "TextDotaz" );
	var TextKonk = document.getElementById( "TextKonk" );
	var TextOmez = document.getElementById( "TextOmez" );

	if( Form.elements[3].checked )	//typ dotazu rozšířený
		TextDotaz.style.color = "#f97d39";
	else
		TextDotaz.style.color = "#3ca018";

	if( Form.elements[5].checked || Form.elements[6].checked )	//řecká konkordance nebo text
		TextKonk.style.color = "#f97d39";
	else
		TextKonk.style.color = "#3ca018";

	if( Form.elements[7].selectedIndex != -1 )	//v omezení něco vybráno
		TextOmez.style.color = "#f97d39";
	else
		TextOmez.style.color = "#3ca018";

	return true;
}

function VarovaniPrint()
{
	alert( "Upozornění: Internet Explorer nevytiskne v řádcích s hesly všechny tři údaje. Můžete použít Mozillu (Firefox)." );
	return true;
}

function Init()
{
	RozpoznejTypProhlizece();

	NactiCssProPoznamky();

	NastavPoznamkyADoplnTitle();	//nastaví obsluhu poznámek pod čarou + title u značek v textu
	
		//nastaví šířku formulářového řádku a obsluhu při změně
	
	if( !Opera )
	{
		ZmenSirkuInputDotazAJ();	
		window.onresize = ZmenSirkuInputDotazAJ;
	}

		//nastaví na obrázku ObrVyhledavani reset formuláře

	var Obr =  document.getElementById( "ObrVyhledavani" );
	Obr.onclick = ResetFormulare;
	Obr.ondblclick = ResetFormularePlus;

		//nastaví změnu barev nadpisů pro nestandardní selekty 

	var Form = document.getElementById( "Form" );
		Form = Form.elements;
	for( var i = 2; i <= 6; i++ ) 		//až od 3. inputu
			Form[i].onclick = ZvyrazneniNeStdSelectu;
	Form[7].onchange = ZvyrazneniNeStdSelectu;

	ZvyrazneniNeStdSelectu();	//na začátku nastaví, jak májí barvy správně být

	if( IE && document.getElementById( "PoHeslech" ) )			//IE neumí dobře dělat tabulky
		window.onbeforeprint = VarovaniPrint;

	return true;
}

