// Funkcje aragowania na mysz

function mysznanumerku(tozdarzenie)
{
	var zdarzenie = window.event ? window.event : tozdarzenie;
	zrodlo = zdarzenie.target ? zdarzenie.target : zdarzenie.srcElement;
	zrodlo = String(zrodlo);
	numer = zrodlo.substring(zrodlo.lastIndexOf('przypis')+7);
	nazwa = 'przypist' + numer;

	var juzokienko = document.getElementById('okienko_przypis');
	if(!juzokienko)
		juzokienko = okienko(zdarzenie, nazwa);
	juzokienko.mysznanumerku = true;
}

function myszbeznumerka(tozdarzenie)
{
//	var zdarzenie = window.event ? window.event : tozdarzenie;

	var okienko = document.getElementById('okienko_przypis');
	if(okienko)
		okienko.mysznanumerku = false;
	setTimeout('if(document.getElementById(\'okienko_przypis\')) '
			 + 'if(!document.getElementById(\'okienko_przypis\').mysznanumerku '
			 + '&& !document.getElementById(\'okienko_przypis\').mysznaokienku) preczokienko();', 100);
}

function mysznaokienku(tozdarzenie)
{
//	var zdarzenie = window.event ? window.event : tozdarzenie;

	var okienko = document.getElementById('okienko_przypis');
	if(okienko)
		okienko.mysznaokienku = true;
}

function myszbezokienka(tozdarzenie)
{
//	var zdarzenie = window.event ? window.event : tozdarzenie;

	var okienko = document.getElementById('okienko_przypis');
	if(okienko)
		okienko.mysznaokienku = false;
	setTimeout('if(document.getElementById(\'okienko_przypis\')) '
			 + 'if(!document.getElementById(\'okienko_przypis\').mysznanumerku '
			 + '&& !document.getElementById(\'okienko_przypis\').mysznaokienku) preczokienko();', 100);
}

function bezodpowiedzi(tozdarzenie)
{
	var zdarzenie = window.event ? window.event : tozdarzenie;
	if(zdarzenie.preventDefault) zdarzenie.preventDefault();
	return false;
}

// Funkcje kluczowe do okienek

function okienko(zdarzenie, nazwa)
{
	var artykul = document.getElementById('artykul');
	var okienko = document.createElement('div');
	if (!okienko) return;
	document.body.appendChild(okienko);

	// Trzeba wyciągnąć treść z orginalnego przypisu
	var przypisy = document.getElementById(nazwa);
	if(!przypisy) return;
	tresc = przypisy.innerHTML;
	if(!tresc) return;

	okienko.innerHTML = '<span class="przypist">' + tresc + '</span>';
	okienko.id = 'okienko_przypis';

	// Chcemy, aby okienko sie pojawilo pod mysza
	x = mouseX(zdarzenie) + 5;
	y = mouseY(zdarzenie) + 5 
		+ (document.documentElement.scrollTop ?				// Nie używamy fixed, więc trzeba
		   document.documentElement.scrollTop :				// mieżyc od góry strony
		   document.body.scrollTop);

	szerokosc = (document.documentElement.clientWidth ? document.documentElement.clientWidth
			  : (document.body.clientWidth ? document.body.clientWidth
			  :  document.width));
	wysokosc  = (document.documentElement.clientHeight ? document.documentElement.clientHeight
			  : (document.body.clientHeight ? document.body.clientHeight
			  :  document.height));
	margines = 10;
	if(x + 400 > szerokosc - margines)
		x = szerokosc - 400 - margines;
	/* W tej chwili nie mogę znaleźć koniec okna widocznego, lub nawet dokumentu */
//	if(y + 300 > wysokosc - margines)
//		y = wysokosc - 300 - margines;

	okienko.style.left = x + 'px';
	okienko.style.top = y + 'px';

	if(okienko.addEventListener) 
	{
		okienko.addEventListener('mouseover', mysznaokienku, true);
		okienko.addEventListener('mouseout', myszbezokienka, true);
	}
	else if(okienko.attachEvent)
	{
		okienko.attachEvent('onmouseover', mysznaokienku);
		okienko.attachEvent('onmouseout', myszbezokienka);
	}

	okienko.mysznanumerku = false;
	okienko.mysznaokienku = false;
	return okienko;
}

function preczokienko()
{
	var okienko = document.getElementById('okienko_przypis');
	if(okienko)
		okienko.parentNode.removeChild(okienko);
}

// Funkcje do przygotowania strony

// Skoro mamy Javascript, trzeba zchowac wykaz przypisów
// Normalnie można uzyć <noscript>, ale w tym przypadku psuje okienka
// Wiec chowamy je w sposobie, ktory tylko zadziala z Javascriptem
function chowac_nie_kasowac(id)
{
	var objekt = document.getElementById(id);
	if(objekt) objekt.style.display = 'none';
}

function przygotowac_numerki()
{
	laczniki = document.links;
	if(!laczniki) return false;
	
	for(i=0; i < laczniki.length; i++)
	{
		nazwa = laczniki[i].id;
		//alert(nazwa);
		if(nazwa.indexOf('numerek') >= 0)
		{
			ktory = nazwa.substr(7);
			//alert(ktory);
			if(laczniki[i].addEventListener) 
			{
				laczniki[i].addEventListener('mouseover', mysznanumerku, true);
				laczniki[i].addEventListener('mouseout', myszbeznumerka, true);
				laczniki[i].addEventListener('click', bezodpowiedzi, false);
			}
			else if(laczniki[i].attachEvent)
			{
				laczniki[i].attachEvent('onmouseover', mysznanumerku);
				laczniki[i].attachEvent('onmouseout', myszbeznumerka);
				laczniki[i].attachEvent('onclick', bezodpowiedzi);
			}
		}
	}
}

// Funkcje podstawowe

// Bardzo dziękuję pana Stephen Chapman za rozwiązanie 
// jak znaleźć mysz w jak najwięcej wyszukiwarek możliwe
function mouseX(evt) {
if (evt.clientX) return evt.clientX;
else if (evt.pageX)
   return evt.pageX - (document.documentElement.scrollLeft ?
   document.documentElement.scrollLeft :
   document.body.scrollLeft);
else if (evt.x)
	return evt.x - (document.documentElement.scrollLeft ?
   document.documentElement.scrollLeft :
   document.body.scrollLeft);
else return null;
}

function mouseY(evt) {
if (evt.clientY) return evt.clientY;
else if (evt.pageY)
   return evt.pageY - (document.documentElement.scrollTop ?
   document.documentElement.scrollTop :
   document.body.scrollTop);
else if (evt.y)
	return evt.y - (document.documentElement.scrollTop ?
   document.documentElement.scrollTop :
   document.body.scrollTop);
else return null;
}

