
	


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Keywords" content="Scan The Sun - Solar panels optimization" />
<meta name="Description" content="Scan The Sun - Solar panels optimization" />
<meta name="viewport" content="width=device-width; initial-scale=1.0;">
<title>Scan The Sun - Solar panels optimization</title>

<link href="../style2.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../jquery-1.10.2.min.js"></script>
<!-- below are qjuery ajax requests with handlers -->
<script type="text/javascript" src="../geneic_requests.js"></script>
<!-- below are qjuery invalidchars and tab on enter function for forms -->
<script type="text/javascript" src="../form_tools.js"></script>

<script id="myscript" type="text/javascript">
var iColWidth=302;
//var iDeviceWidth=window.screen.width;
var iDeviceWidth=$( window ).width();
var iTableWidth=Math.ceil(iDeviceWidth);//-(iDeviceWidth/5));
var iColNo=Math.floor(iTableWidth/iColWidth);
//var iBoxNo=0;
var bViewFullText=false;
var sWhichColumnFeed="";
var iHeaderWidth=300;
if(iDeviceWidth>300)
{
	iHeaderWidth=iDeviceWidth;
}
var iFullTextWidth=Math.floor(iDeviceWidth/2);
if(iFullTextWidth<300)
{
	iFullTextWidth=300;
}
function linkto(sLink)
{
	location.assign(sLink);
}
function show_language_selection()
{
	$('#language_box').css('width',iFullTextWidth.toString()+'px');
	$('#language_box_cancel').css('width',iFullTextWidth.toString()+'px');
	bViewFullText=true;
	//document.getElementById('article_box').style.display="none";
	//document.getElementById('authenticating').style.display="none";
	//bedzie potrzebne obliczenie wysrodkowania artykulu na koknie w poziomie
	var width=$( window ).width();
	var leftMarginOfFullText=Math.floor((width-iFullTextWidth)/2);
	if (leftMarginOfFullText<0)
	{
		leftMarginOfFullText=0;
	}
	var leftMarginOfFullText=Math.floor((width-iFullTextWidth)/2);
	if (leftMarginOfFullText<0)
	{
		leftMarginOfFullText=0;
	}
	//wyswietlamy pelny text artykulu
	var oFullTxt=$('#language_box');//document.getElementById('fulltext_box');
	//var oBody=$('#table')
	var iscrol=$(document).scrollTop()+20;
	oFullTxt.css('top',iscrol.toString()+'px');
	oFullTxt.css('margin-left',leftMarginOfFullText.toString()+'px');
	
	oFullTxt.css('display','block');
		//pobieramy rozmiary okna przegladarki aby zrobic zaciemnienie calosci.
	//po wstawieniu dlugiego tekstu na strone, wydluzy sie ona. pobieramy cala dlugosc aby ustawic zaciemnienie na calej dlugosci.
	var height=$( document).height();
	
	//ustawiamy zaciemnienie
	var obackground=document.getElementById('background_box');
	obackground.style.width=width.toString()+'px';
	obackground.style.height=height.toString()+'px';
	obackground.style.display='block';
	
}
function cancel_language_selection()
{
	document.getElementById('language_box').style.display='none';
	document.getElementById('background_box').style.display='none';
	bViewFullText=false;
}

//*************************** Skrypty strony do pokazywania okienek dialogowych ****************************************
function show_login_box(event)
{
	$('#login_box').css('width',iFullTextWidth.toString()+'px');
	$('#login_box_table').css('width',iFullTextWidth.toString()+'px');
	bViewFullText=true;
	//document.getElementById('article_box').style.display="none";
	//document.getElementById('authenticating').style.display="none";
	//bedzie potrzebne obliczenie wysrodkowania artykulu na koknie w poziomie
	var width=$( window ).width();
	var leftMarginOfFullText=Math.floor((width-iFullTextWidth)/2);
	if (leftMarginOfFullText<0)
	{
		leftMarginOfFullText=0;
	}
	var leftMarginOfFullText=Math.floor((width-iFullTextWidth)/2);
	if (leftMarginOfFullText<0)
	{
		leftMarginOfFullText=0;
	}
	//wyswietlamy pelny text artykulu
	var oFullTxt=$('#login_box');//document.getElementById('fulltext_box');
	//var oBody=$('#table')
	var iscrol=$(document).scrollTop()+20;
	oFullTxt.css('top',iscrol.toString()+'px');
	oFullTxt.css('margin-left',leftMarginOfFullText.toString()+'px');
	
	oFullTxt.css('display','block');
		//pobieramy rozmiary okna przegladarki aby zrobic zaciemnienie calosci.
	//po wstawieniu dlugiego tekstu na strone, wydluzy sie ona. pobieramy cala dlugosc aby ustawic zaciemnienie na calej dlugosci.
	var height=$( document).height();
	
	//ustawiamy zaciemnienie
	var obackground=document.getElementById('background_box');
	obackground.style.width=width.toString()+'px';
	obackground.style.height=height.toString()+'px';
	obackground.style.display='block';
	
}
function cancel_login_box()
{
	document.getElementById('login_box').style.display='none';
	document.getElementById('background_box').style.display='none';
	bViewFullText=false;
}
/*
function show_login_box_old(event)
{
	var oLoginBx=document.getElementById('login_box');
//	var oEvent = EventUtil.formatEvent(event);
//	oLoginBx.style.left=(oEvent.pageX).toString()+"px";
//	oLoginBx.style.top=(oEvent.pageY).toString()+"px";
	
	oLoginBx.style.display='block';
	document.getElementById('article_box').style.display="none";
}
*/		
function showPublishing()
{
	eventClipper();
	bViewFullText=true;
	//document.getElementById('article_box').style.display="none";
	document.getElementById('authenticating').style.display="none";
	//bedzie potrzebne obliczenie wysrodkowania artykulu na koknie w poziomie
	var width=$( window ).width();
	var leftMarginOfFullText=Math.floor((width-iFullTextWidth)/2);
	if (leftMarginOfFullText<0)
	{
		leftMarginOfFullText=0;
	}
	var leftMarginOfFullText=Math.floor((width-iFullTextWidth)/2);
	if (leftMarginOfFullText<0)
	{
		leftMarginOfFullText=0;
	}
	//wyswietlamy pelny text artykulu
	var oFullTxt=$('#article_box');//document.getElementById('fulltext_box');
	//var oBody=$('#table')
	var iscrol=$(document).scrollTop()+20;
	oFullTxt.css('top',iscrol.toString()+'px');
	oFullTxt.css('margin-left',leftMarginOfFullText.toString()+'px');
	
	oFullTxt.css('display','block');
		//pobieramy rozmiary okna przegladarki aby zrobic zaciemnienie calosci.
	//po wstawieniu dlugiego tekstu na strone, wydluzy sie ona. pobieramy cala dlugosc aby ustawic zaciemnienie na calej dlugosci.
	var height=$( document).height();
	
	//ustawiamy zaciemnienie
	var obackground=document.getElementById('background_box');
	obackground.style.width=width.toString()+'px';
	obackground.style.height=height.toString()+'px';
	obackground.style.display='block';
	$('#new_article_table').css('width',iFullTextWidth.toString()+'px');
	$('#new_article_table input,#new_article_table textarea').css('width',(iFullTextWidth-10).toString()+'px');
	
	


}
function authenticate(sWhich)
{
		bViewFullText=true;
	document.getElementById('article_box').style.display="none";
	document.getElementById('login_box').style.display="none";
	

	//bedzie potrzebne obliczenie wysrodkowania artykulu na koknie w poziomie
	var width=$( window ).width();
	var leftMarginOfFullText=Math.floor((width-iFullTextWidth)/2);
	if (leftMarginOfFullText<0)
	{
		leftMarginOfFullText=0;
	}
	var oLoad=$('#authenticating');//document.getElementById('fulltext_box');
	//var oBody=$('#table')
	var iscrol=$(document).scrollTop();
	oLoad.css('top',iscrol.toString()+'px');
	oLoad.css('margin-left',leftMarginOfFullText.toString()+'px');
	oLoad.css('width',iFullTextWidth.toString()+'px');
	oLoad.css('display','block');
	var height=$( document).height();
	
	//ustawiamy zaciemnienie
	var obackground=document.getElementById('background_box');
	obackground.style.width=width.toString()+'px';
	obackground.style.height=height.toString()+'px';
	obackground.style.display='block';
	
	post_request(sWhich,'article_box',showPublishing);
	
}
function cancel_login()
{
	document.getElementById('authenticating').style.display='none';
	document.getElementById('background_box').style.display='none';
	bViewFullText=false;
	post_request_cancel();
}
function cancel_publish()
{
	document.getElementById('article_box').style.display='none';
	document.getElementById('background_box').style.display='none';
	bViewFullText=false;
	post_request_cancel();
}
function close_publish()
{
	document.getElementById('article_box').style.display='none';
	document.getElementById('background_box').style.display='none';
	bViewFullText=false;
}


function getfulltext(sId,sWidth)
{
	bViewFullText=true;
	document.getElementById('article_box').style.display="none";
	document.getElementById('login_box').style.display="none";
	

	//bedzie potrzebne obliczenie wysrodkowania artykulu na koknie w poziomie
	var width=$( window ).width();
	var leftMarginOfFullText=Math.floor((width-iFullTextWidth)/2);
	if (leftMarginOfFullText<0)
	{
		leftMarginOfFullText=0;
	}
	var oLoad=$('#loadfull_box');//document.getElementById('fulltext_box');
	//var oBody=$('#table')
	var iscrol=$(document).scrollTop();
	oLoad.css('top',iscrol.toString()+'px');
	oLoad.css('margin-left',leftMarginOfFullText.toString()+'px');
	oLoad.css('width',iFullTextWidth.toString()+'px');
	oLoad.css('display','block');
	var height=$( document).height();
	
	//ustawiamy zaciemnienie
	var obackground=document.getElementById('background_box');
	obackground.style.width=width.toString()+'px';
	obackground.style.height=height.toString()+'px';
	obackground.style.display='block';
	
	get_request('getfulltext.php?paperid='+sId+'&width='+sWidth,'fulltext_box',show_fulltext);
}		
function cancel_fulltext()
{
	document.getElementById('loadfull_box').style.display='none';
	document.getElementById('background_box').style.display='none';
	bViewFullText=false;
	get_request_cancel();
}
function show_fulltext()
{
	bViewFullText=true;
	document.getElementById('article_box').style.display="none";
	document.getElementById('login_box').style.display="none";
document.getElementById('loadfull_box').style.display="none";
	//bedzie potrzebne obliczenie wysrodkowania artykulu na koknie w poziomie
	var width=$( window ).width();
	var leftMarginOfFullText=Math.floor((width-iFullTextWidth)/2);
	if (leftMarginOfFullText<0)
	{
		leftMarginOfFullText=0;
	}
	
	//wyswietlamy pelny text artykulu
	var oFullTxt=$('#fulltext_box');//document.getElementById('fulltext_box');
	//var oBody=$('#table')
	var iscrol=$(document).scrollTop()+20;
	oFullTxt.css('top',iscrol.toString()+'px');
	oFullTxt.css('margin-left',leftMarginOfFullText.toString()+'px');
	
	oFullTxt.css('display','block');
		//pobieramy rozmiary okna przegladarki aby zrobic zaciemnienie calosci.
	//po wstawieniu dlugiego tekstu na strone, wydluzy sie ona. pobieramy cala dlugosc aby ustawic zaciemnienie na calej dlugosci.
	var height=$( document).height();
	
	//ustawiamy zaciemnienie
	var obackground=document.getElementById('background_box');
	obackground.style.width=width.toString()+'px';
	obackground.style.height=height.toString()+'px';
	obackground.style.display='block';
	

	
	//alert(iscrol);
	//oFullTxt.style.top=iscrol;//document.body.scrollTop;
	
}
function hide_fulltext()
{
	
	document.getElementById('fulltext_box').style.display='none';
	document.getElementById('background_box').style.display='none';
	bViewFullText=false;
}
/*
function transparent(event)
{
	$(event.target).parents('.tabela1').css("background-color","white");
}
*/
function transparentpanel(event)
{
	$(event.target).parents('#languagepanel').css("background-color","#F5F5F5");
}

function transparenttd(event)
{
	$(event.target).parent().css("background-color","#F5F5F5");
}
//function sent as hanler for ajax requesting forms. Then the handler binds the keypres after content load.
function eventClipper()
{
	$(':input[type="text"][tabuj="true"]').bind('keypress',function(event){FormUtil.newtab(event)});
	$(':input[type="text"]').bind('click',function(event){transparenttd(event)});
	$(':input[type="file"]').bind('click',function(event){transparenttd(event)});
	$('textarea').bind('click',function(event){transparenttd(event)});
	$(':input[type="radio"]').bind('click',function(event){transparentpanel(event)});
}

//sCode - jedyk listy widomosci newsow, Scode2 - jesyk wybrany na glownej stronie scanthesun, potrzebny do powrotu na strone.
function select_language(sCode,sCode2)
{
	location.replace('./sts2.php?lang='+sCode+'&langmain='+sCode2);
}
	
	

//*************************** KLASA DOLADOWYWANIA OBSLUGUJACA IDENTYFIKATORY ****************************************
//klasa obsluguje wysylanie i odbieranie zadan z serwera.
//bufferLimit- maksymalna liczba zadan ktore mozna przeslac do serwera
//bufferLength - ilosc zadan ktore moga zostac bez odpowiedzi. 

//identifiers - lista identyfikatorow elemento w do pobrania z serwera
//bufferIndex - liczba ktora mowi jak wiele zadan do serwera nie wrocilo do przegladarki.
//bufferLimit - mowi jak wiele zadan moze pozostan bec odpowiedzi (maksymalna ilosc zadan ktore mozna wyslac)
//bufferLength - kiedy liczba nieodebranych zadan spadnie ponizej tego poziomu (poziom zadowolenia)
//				to bedzie mozna znowu zaczac wysylac zadania od zera
//idSize - ilosc pobieanych z puli identyfikatorow (np. za kazdym razm kiedy jest malo pobieramy dodatkowe 100 identyfikatorow)
//bDoRefill - zmienna logiczna zapobiega wielokrotnemu wywolaniu refill zamin lastid zostanie uaktualniony
//nextid - identyfikator pobieranego z kolejki elementu. Rowny null jesli liczba zadan bez odpowiedzi  przekroczyla dopuszczalny limit
//ten identyfikator jest potrzebny do identyfikatora pustego pudelka w ktory mam wstawic zdjecie.

function fifo(iBufferLength,iBufferLimit,iIdentifiersSize)
{
	this.identifiers= new Array();
	this.bufferIndex =0;
	this.bufferLimit=iBufferLimit;
	this.bufferLength=iBufferLength;
	this.idSize=iIdentifiersSize;
	this.bDoRefill=true;
	this.nextId = null;
}

//pobieramy liste identyfikatorow ,w postaci pustych elementow z miejsem na zdjecie, z serwera i dokladamy je do listy do pobrania
//kazdy element konczy sie </div>'em wiec wybieramy to jako separator.
fifo.prototype.push = function(sIdentifiers)
{
	var aIdentifiers = sIdentifiers.split("th!!#*");
	for(var i=0;i<aIdentifiers.length;i++)
	{
		//poniewaz uzylismy diva jako separatora to zmiknal on z elementow, wiec na koncu kazdego elementu go dokladamy.
		this.identifiers.push(aIdentifiers[i]);
	}
}

//wyciagamy z kolejki nastepny identyfikator (pusty element z miejscem na zdjecie). identyfikator z tego elementu bedzie przeslany w zadaniu
//wyciagamy pusty element jesli liczba zadan bez odpowiedzi nie przekracza narzuconego limitu 
fifo.prototype.pop = function()
{
	if((this.bufferIndex<this.bufferLimit) && (this.identifiers.length>0))
	{
		//poniewaz wyciagniecie pustego elementu oznacza (pozniej) wyslanie zadania o obrazek to zwiekszamy licznik zadan bez odpowiedzi o jeden.
		this.bufferIndex++;
		//pobieramy najwczesniejszy pusty element
		var sElement=this.identifiers.shift();
		//wylapujemy podciag gdzie jest przechowywany numer identyfikatora
		var iinitialIndex= sElement.indexOf('paperid_')+8;
		var ifinalIndex = sElement.indexOf('style=')-2;
		//sam numer zapamietujemy w atrybucie nextId klasy (ten zapamietany numer bedzie potrzebny do odnalezienia tego pustego elementu po identyfikatorze jesli przyjdzie zdjecie). 
		var sNumber=sElement.slice(iinitialIndex,ifinalIndex);
		this.nextId=sNumber;
		//zwracamy pusty element - ktory bedzie za chwile wstawiony na strone.
		return sElement;
	}
	else
	{
		return null;
	}	
}


//jesli wroci jakies zadanie to trzeba zmiejszyc licznik zadan bez odpowiedzi
//jesli licznik zadan bez odpowiedzi spadnie ponizej poziomu zadowolenia (bufferLength)
//to licznik zerujemy i mozemy znowu wysylac zadania od poczatku.
//to oznacza ze sposrod wszystkich zadan mozemy zignorowac pewien procent z nich i ladowac koejne elementy nie czekajac na nie.
fifo.prototype.decrementBuffer = function()
{
	//jesli spadlo ponizej poziomu zadowolenia to zerujemy licznik i mozemy zazadac znowu caly sopuszczalny komplet
	if(this.bufferIndex<=this.bufferLength)
	{
		this.bufferIndex=0;
	}
	else
	{
		//jesli nie jestesmy ponizej poziomu zadowolenia to poprostu dekrementujemy licznik i umozliwamy wyslanie tylko kolejnych zadan az do limitu (pozostaly procent mozliwych zadan).
		this.bufferIndex--;
	}
	//to tylko do debugowania
	document.getElementById("wyswietlane_moduly").innerHTML+="<br/> bufferindex="+this.bufferIndex.toString()+"<br/>";
}

//to jest potrzebne do ustalenia ostatniego pobranego identyfikatora aby nastepnym razem zaczac pobieranie partii identyfikatorow od kolejnego
fifo.prototype.showLast = function()
{
	//numer ostatniego pustego elementu w tablicy
	var iWhich=this.identifiers.length -1;
	//pobieramy pusty element
	var sElement=this.identifiers[iWhich];
	//zakres indeksow w lancuchu elementu w ktorym znajduje sie numer elementu
	var iinitialIndex= sElement.indexOf('paperid_')+8;
	var ifinalIndex = sElement.indexOf('style=')-2;
	//pobieramy ten numer
	var sNumber=sElement.slice(iinitialIndex,ifinalIndex);
	//poiewaz identyfikatory posortowane sa malejaco, to ten numer jest najmniejszym z puli dotad pobranych pustych elementow.
	//nastepna pule pobierzemy niejako od tego elementu  w dol.
	return sNumber;

}
//pierwsze ladowanie identyfikatorow wywoluje funkcje loadfirstpapers
var firstIds=0;	
	
//ostatni argument (arg 3) konstruktora fifo mowi jak maksymalnie duza ma byc pula identyfikatorow (czyli pustych elementow) przechowywana w komputerze.
//kolejka fifo bedzie przechowywac minimalnie arg3/2 a maksymalnie arg3 pustych elementow. Wiec jesli liczba pustych spadnie ponizej arg3/2 elementow to trzeba bedzie doladowac 
// kolejne elementy w ilosci arg3/2 aby w sumie bylo maksymalnie arg3 pustych elementow. Ta metoda wlasnie doladowuje puste elementy.	
fifo.prototype.refillIds = function()
{
	var sLanguage=$('#papers_language').html();
	//poniewaz bedziemy uzywac slowa this w zadaniu get wiec musimy rozroznic this dla fifo i this dla get
	var thisFIFO=this;
	
	//maksymalna ilosc pustych elementow ustawiona w fifo w formacie integera aby dzielic na 2
	var intIdSize = parseInt(this.idSize);
	//jesli liczba przechowywanych pustych elementow (identyfikatorow) spadnie do polowy to doladuj kolejna polowe
	//dzieki bDoRefill blokujemy kolejne zadanie pobrania az do momentu otrzymania partii identyfikatorow z tego zadania (taka namiastka synchronicznosci). 
	if((this.identifiers.length <= intIdSize/2) && this.bDoRefill)
	{
		
	//zadamy danych identyfikatorow w postaci n+buffer/2, n+buffer/2 - 1,..., n+1 malejaco
	//gdzie n=IlastId (ten lastid jest zmienna globalna poczatkowo ustawiona na jakies 100000, ale trzeba bedzie go wrzucic do fifo), bufer=iIdentifierBuffer
	//zanim przetworzymy zadanie nalezy zablokowac pobieranie wielokrotne identyfikatorow gdyz wowczas beda sie powtarzac
	thisFIFO.bDoRefill=false;
	//zadamy pustych elementow o identyfikatorach mniejszych (<) od iLastId w ilosci polowy maksymalnej dopuszczalnej liczby przechowywanych pustych elementow
	$.get("getidentifiers_desc2.php",{'lastId':iLastId.toString(),'buffer':(intIdSize/2).toString(),'width':iFullTextWidth,'lang':sLanguage},function(dane)
	{
		
		//po pobraniu elementow umozliwiamy pokazywanie pustych pudelek elementow (bo mamy ich znowu duzo) na stronie gdyby z jakiegos powodu uleglo to zablokowaniu
		bNextLoad=true;
		//aby pobrac am lancuch pustych elementow na obrazki obcinamy naglowek
		var iIndexOfCurrent=dane.lastIndexOf("IDLIST=")+7;
		//i obcinamy stopke
		var sIdList=dane.slice(iIndexOfCurrent,-12);
		//sprawdzamy czy juz wszystkie podelka zostaly pobrane z bazy. Jesli wyczerpalismy wszystkie pudelka zostaly juz pobrane to zwracany jest pusty ciag, nie zawierajacy zadnego diva.
		if(sIdList.indexOf("div")>0)
		{
		//lancuch przekazujemy kolejce ktora umiesci jego elementy 
		thisFIFO.push(sIdList);
		//ostatni pobrany element (o identyfikatorze najmniejszym ze zbioru) aktualizuje n tak ze bedziemy pobierac nastepny bufor od kolejnego identyfikatora.
		iLastId=thisFIFO.showLast();
		
		}
		//odblokowujemy mozliwosc kolejnego pobierania pustych elementow bo biezace sa juz wstawione i nie bedzie powtorek
		thisFIFO.bDoRefill=true;
		// jesli po raz pierwszy pobieramy identyfikatory to firstIds=0 i za pierwszym razem pokazujemy poczatkowa pule na ekranie (bez koniecznosci zdarzenia onscroll
		if(firstIds<1)
		{
			//tutaj wejdziemy tylko raz po pierwszym zaladowaniu identyfikatorow
			loadFirstPapers();
			
		}
			
	
	},"html");
		
		
	}
}
			
function isElementInViewport(el) {
    var rect = el.getBoundingClientRect();

    return rect.bottom > 0 &&
        rect.right > 0 &&
        rect.left < (window.innerWidth || document. documentElement.clientWidth) /*or $(window).width() */ &&
        rect.top < (window.innerHeight || document. documentElement.clientHeight) /*or $(window).height() */;
}
	
function whereIsToViewport(el) {
    var rect = el.getBoundingClientRect();
	if(rect.bottom >0 && rect.top<=$(window).height() )
	{
		return 0;
	}
	else if(rect.bottom>0 && rect.top>$(window).height())
	{
		return -1;
	}
	else 
	{
		return 1;
	}
}

/*
//wywolywane przez onscroll().
//przegadamy wszystkie kolumny tabeli i na kazdej kolumnie sprawdzamy czy konczy sie 250 pixeli za przegladarka.
//jesli dana kolumna konczy sie mniej niz 250 pixeli za przegladarka to zwracamy jej identyfikator. Tam zostanie doladowany
//kolejny abstract w onscroll
//********************************** obecnie nie uzywana funkcja **********************************
function isItTimeToLoadTable ()
{
	var sWhereToLoad="";
	var oColumns=$('[abstracts="true"]');
	oColumns.each(function(i, obj) {
			if(isItTimeToLoad(obj))
			{
				
				sWhereToLoad=obj.getAttribute("id");
				oColumns=null;
				return sWhereToLoad;
			}
		});
		return sWhereToLoad;
	}
*/
//funkcja wywolywana przez onScroll 
//sprawdzamy czy element (ktory wskazuje whichColumnFeed ustawiony przez whichColumnShortest) 
//konczy sie 250 pixeli za oknem przegladarki. jesli mniej niz 250 to zwracamy true.
//wowczas w onscroll doladuje siekolejny element na dole.	
function isItTimeToLoad (el) {
	
    var rect = el.getBoundingClientRect();
	return rect.bottom <$(window).height()+250 ;
}	


function whichColumnShortest()
{
	var sWhereToLoad="";
	var oColumns=$('[abstracts="true"]');
	var rect;
	var iRectBottom=$(document).height();
	oColumns.each(function(i, obj) {
		rect = obj.getBoundingClientRect();
		if(rect.bottom <iRectBottom)
		{
			iRectBottom=rect.bottom ;
			sWhereToLoad=obj.getAttribute("id");
		}			
	});
	oColumns=null;
	rect=null;
	iRectBottom=null;
	return sWhereToLoad;
}

function ukryj_wszystko()
{	
	var aMods=new Array("mainarea");
	for(var i=0;i<aMods.length;i++)
	{
		document.getElementById(aMods[i]).style.display="none";
	}
}

function pokaz_laduje(sId)
{
	document.getElementById(sId).innerHTML="Ładuję, proszę czekać ... ";
	//document.getElementById(sId).style.display='block';
}
/*
function percentofscroll()
{
	var iscrolling=document.body.scrollTop;//document.body.scrollHeight;
	document.getElementById('wystawa_area').innerHTML=iscrolling;
	
}
*/
function getViewportSize(w) {

    // Use the specified window or the current window if no argument
    w = w || window;

    // This works for all browsers except IE8 and before
    if (w.innerWidth != null) return w.innerHeight;//return { w: w.innerWidth, h: w.innerHeight };

    // For IE (or any browser) in Standards mode
    var d = w.document;
    if (document.compatMode == "CSS1Compat")
       return d.documentElement.clientHeight;
       
        //return { w: d.documentElement.clientWidth,
         //  h: d.documentElement.clientHeight };

    // For browsers in Quirks mode
    return d.body.clientHeight;
    //return { w: d.body.clientWidth, h: d.body.clientWidth };

}
bContinueToLoad=true;




function create_table()
{
	if(iColNo<1)
		iColNo=1;
	var i=0;
	var sString='<table style="background-color: #EEEEEE;margin:auto" cellspacing="10;"><tr>';
	for (i=0;i<iColNo;i++)
	{
		sString+='<td width="'+iColWidth.toString()+'" valign="top"><div abstracts="true" id="column_'+i.toString()+'" ></div></td>';
	}
	sString+='</tr></table>';
	$('#table').append(sString);
}

 
</script>


<script type="text/javascript">
window.onload = function()
{
	$('#table').css('width',iDeviceWidth.toString()+"px");
	$('#sts_header').css('width',iHeaderWidth.toString()+"px");
	
	
	$('body').css('width',iDeviceWidth.toString()+"px");
	create_table();
	itemmax=parseInt(document.getElementById('no_of_articles').innerHTML);
	
	
	
	//gen_get_identifiers_desc();
	
	
	
	//bind tabforward to input element in the forms having tabuj="true" attribute
	eventClipper();
	//after creation of the content table we look for the shortest column (usually it is the first one).
	//we store the shortest column Id to trace in onScroll if it needs to be filled with abstract box. 
	//after filling the columnID will be switched to the next shortest one.
	sWhichColumnFeed= whichColumnShortest();
	//gen_get_identifiers('papers/getidentifiers.php','identifiers','bNextLoad=true;','a+-');
	idFIFO.refillIds();
	//loadFirstPapers();
	
};
//wartosc ostatniego pobranego identyfikatora z listy 
var iLastId=1000000;
//awrtosc bierzacego identyfikatora
var iCurrent=3;
//czy mozna pobierac zajawki asynchronicznie
bNextLoad=false;
//bufor pobieranych identyfikatorow (tutaj trzeba bedzie zwiekszyc tak do 100)
var iIdentifiersBuffer = 5;

heightOfAll=0;
//kolejka FIFO identyfikatorow podstawianych do zadan asynchronicznych
//arg 1 - licznik zadan bez odpowiedzi bedzie zerowany jesli liczba zadan bez odpowiedzi spadnie do tej liczby
//arg 2 - tyle maksymalnie bedzie mozna wyslac zadan i nie otrzymac odpowiedzi za jednym zamachem. Jesli zaczna docierac odpowiedzi to bedzie mozna wyslac kolejne zadania
//			tak ze suma zadan bez odpowiedzi nie przekroczy tego argumentu. Jesli przyjdzie tyle zadan ze liczba tych bez odpwiedzi spadnie do arg1, to licznik zadan bez odpowiedzi sie wyzeruje i 
//			bedzie mozna zazadac znowu calego kompletu arg 2 nie czekajac na te pozostale.
//arg 3 - pula pustych okienek z miejscem na zdcjecie ktora bedzie sciagana z serwera jesli pula spadnie ponizej poziomu.
var idFIFO = new fifo(5,10,30);
//maksymanly nieprzekraczalny indeks artykulow.
var itemmax=0;

function loadFirstPapers()
{
	//jesli jestesmy tu po raz pierwszy to zwiekszamy firstIds aby ta funkcjia nie byla wywolywana wiecej w refillIds()
	firstIds++;
	//jesli choc jedna kolumna wypelniona po brzegi to konczymy zabawe ze wstepnym ladowaniem obrazkow, czyli ustawiamy firstIds na liczbe >=3
	if(!isItTimeToLoad(document.getElementById(sWhichColumnFeed)))
	{
		//stawienie tej zmiennej na wiecej= niż 3 anuluje dalsze wywolania loadfirstpapers (ktore sa nizej wewnatrz tej funkcji)
		firstIds=3;
		return;
	}
	//dopoki kolumna nie jest wypelniona po brzegi i jesli sa pyste elementy w kolejce i jesli nie dojechalismy do limitu wyczerpania zadan bez odpowiedzi to
	while(isItTimeToLoad(document.getElementById(sWhichColumnFeed)) && idFIFO.identifiers.length>0 && idFIFO.bufferIndex<idFIFO.bufferLimit)
{
	//pobieramy z kolejki box z elementem i miejscem na ilustracje 
	var sElement=idFIFO.pop();
	//wyciagamy numer elementu (bedzie potrzebny jako identyfikator do zdjecia)
	var currentid=idFIFO.nextId;
	
	//jeli lista zadan bez odpowiedzoi nie przekracza ustawionego limitu (drugi argument konstruktora fifo)
	//to sElement!=null i dodajemy pusty box do strony
	if(sElement!=null)
	{
//		iBoxNo++;
		$('#'+sWhichColumnFeed).append(sElement);
		//kiedy box jest na stronie, wiec jest miejsce na ilustracje! zatem zadamy ilustracji asynchronicznie
		$.get("pobierz_ilustracje.php",{'id_paper':currentid}, function(dane){
			var iHeaderIndex=dane.indexOf("ERNEST");
			var igottenid = dane.slice(0,iHeaderIndex);
			dane=dane.slice(iHeaderIndex+6);
		//	alert(igottenid);
				//po pobraniu
				//dokladamy wstawiamy ilustracje do boxu
				$('#paperid_'+igottenid).append( '<img src="data:image/png;base64,'+dane+'"/>');
				//zmniejszamy licznik zadan bez odpowiedzi o 1 (to pozwoli pozniej dodawac kolejne boxy i zadac kolejnych rysunkow jesli % zadan bez odpowiedzi nie jest za duzy - czyli jesli lista pustych okienek nie jest za duza) 
				idFIFO.decrementBuffer();
				//ustawiamy ze mozemy dalej ladowac puste elementy
				bNextLoad=true;
				//dostalismy obrazek, wiec moze pora doladowac puste elementy na strone?
				//doladujemy jesli index zadan bez odpowiedzi spadl do zera (a zatem polowa obrazkow conajmniej zostala zaladowana) i sama funkcja loadfirstpapers nie zostala wywolana wiecej niz trzy razy
				if(idFIFO.bufferIndex==0 && firstIds<3)
				{
					loadFirstPapers();
				}

		},"html");
		//wstawilismy nowy pusty box na strone wiec musimy ustawic na nowo identyfikator najkrotszej kolumny bo to moglo sie zmienic.
		sWhichColumnFeed=whichColumnShortest();
		
		//zmiejszyla sie ilosc elementow w puli pustych , wiec sparwdzamy czy trzeba doladowac polowe puli.
		idFIFO.refillIds();
		//tutaj jesli wszystkie kolumny nie sa wypelnione po brzegi to wywolanie refill znowu wywola loadfirstpapers.
		//tak bedzie conajmniej 3 razy albo mniej jesli ktoras kolumna sie wypelni.
	
	}
	else
	{
		//jesli zadan ilustracji bez odpowiedzi jest powyzej limitu to przestan wkladac na strone kolejne puste elementy.
		bNextLoad=false;
		
	}
}
//idFIFO.refillIds();
}
//var sWhichColumnFeed="";
window.onscroll=function()
{
	//przesuwamy okienko zaciemnienia tak aby bylo na caly ekran
	//var iscrol=$(document).scrollTop();
	//$('#background_box').css('top',iscrol.toString()+'px');
	
//iscrolling mowi jak daleko od poczatku strony zaczyna sie widoczny w przegladarce fragment
var iscrolling=window.pageYOffset;///document.body.scrollHeight;
//getViewportSide mowi jak wysoki jest widoczny fargment, zatem
//iscrollign + getViewportsize mowi jak daleko od poczatku strony konczy sie widoczny fragment

//w ifie mamy ze jesli najkrotsza kolumna w tabeli konczy sie 250 pikseli przed koncem strony to mamy ladowac nastepne elementy

if(isItTimeToLoad(document.getElementById(sWhichColumnFeed)) && !bViewFullText)
{
	//pobieramy z kolejki box z elementem i miejscem na ilustracje 
	var sElement=idFIFO.pop();
	//wyciagamy numer elementu (bedzie potrzebny jako identyfikator do zdjecia)
	var currentid=idFIFO.nextId;
	
	//jeli lista zadan bez odpowiedzoi nie przekracza ustawionego limitu (drugi argument konstruktora fifo)
	//to sElement!=null i dodajemy pusty box do strony
	if(sElement!=null)
	{
//		iBoxNo++;
		$('#'+sWhichColumnFeed).append(sElement);
		//kiedy box jest na stronie, wiec jest miejsce na ilustracje! zatem zadamy ilustracji asynchronicznie
		$.get("pobierz_ilustracje.php",{'id_paper':currentid}, function(dane){
			//moglismy wyslac milion zadan zanim otrzymalismy jakakolwiek odpowiedz, wiec currentid nie odpowiada
			//miejscu w ktore mamy wstawic obrazek.
			//dlatego odzyskujemy currentid z otrzymanych danych bo sa w naglowku przed podciagiem ERNEST
			
			//wyszukujemy indeks podciagu ERNEST
			var iHeaderIndex=dane.indexOf("ERNEST");
			//pobieramy identyfikator przed tym podciagiem z dancych
			var igottenid = dane.slice(0,iHeaderIndex);
			//wycinamy z danych caly naglowek zostawiajac tylko dane obrazka
			dane=dane.slice(iHeaderIndex+6);
			
				//po pobraniu
				//dokladamy wstawiamy ilustracje do boxu
				//identyfikator uzyskujemy z otzrymanych danych jak wyzej.
				$('#paperid_'+igottenid).append( '<img src="data:image/png;base64,'+dane+'"/>');
				//zmniejszamy licznik zadan bez odpowiedzi o 1 (to pozwoli pozniej dodawac kolejne boxy i zadac kolejnych rysunkow jesli % zadan bez odpowiedzi nie jest za duzy - czyli jesli lista pustych okienek nie jest za duza) 
				idFIFO.decrementBuffer();
				//ustawiamy ze mozemy dalej ladowac puste elementy
				bNextLoad=true;

		},"html");
		//wstawilismy nowy pusty box na strone wiec musimy ustawic na nowo identyfikator najkrotszej kolumny bo to moglo sie zmienic.
		sWhichColumnFeed=whichColumnShortest();
		
		//zmiejszyla sie ilosc elementow w puli pustych , wiec sparwdzamy czy trzeba doladowac polowe puli.
		idFIFO.refillIds();
	
	}
	else
	{
		//jesli zadan ilustracji bez odpowiedzi jest powyzej limitu to przestan wkladac na strone kolejne puste elementy.
		bNextLoad=false;
		
	}
}	
};	

</script>

</head>

<body link="#3300FF" vlink="#0066FF" alink="#3300FF" style="background-color: #EEEEEE" >
<table id="sts_header" style="padding-left:20px;padding-right:20px;background-color: #EEEEEE">
	<tr>
		<td> <img src="../main/logo.png" width="120px" height="16px" style="cursor:pointer" onclick="linkto('../scanthesun.php?lang=EN')"/></td></tr><tr><td>
<div id="log_publisher" class="pasek_menu_tekst03" onclick="show_login_box(event)" style="margin-right:20px"> Submit Article </div>
<div class="pasek_menu_tekst03" onclick="show_language_selection()" > Sort By Language </div>
</td>
	</tr>
</table>

<!--<div id="login_box" style="display:none; position: absolute; padding: 20px; z-index: 10; background-color:#A0B6FF; left: 100px; top: 100px;">-->
<div id="login_box" class="dialogs" style="display:none">

<form method="post" action="newsy_nowe.php" id="publish_article" >
<table id="login_box_table" width="400" border="0" cellspacing="5" cellpadding="5" class="tabela_dialog" style="font-size:12px">
<tr><td colspan="2" bgcolor="#D3D3D3">Log in to publisher box</td></tr>
	<tr><td bgcolor="#F5F5F5">Your e-mail:</td>
		<td bgcolor="#F5F5F5" align="right"><input name="login" type="text" size="20" autocomplete="off" invalidchars="=!#$%^&*()\/;[]{}:<>?~`|" tabuj="true" onfocus="this.style.backgroundColor='#F8E4DA';" onblur="this.style.backgroundColor='';"/> </td>
	</tr>
	<tr><td bgcolor="#F5F5F5">Password:</td>
		<td bgcolor="#F5F5F5" align="right"><input name="passwd" type="text" size="20" autocomplete="off" invalidchars="=!@#$%^&*()\/;[]{}:<>?~`|" tabuj="true" onfocus="this.style.backgroundColor='#F8E4DA';" onblur="this.style.backgroundColor='';"/> </td>
	</tr>
	<tr><td style="cursor:pointer;padding:20px; text-align:center" onclick="cancel_login_box()"><strong> Cancel </strong></td><td align="right" bgcolor="#FFFFFF" style="cursor:pointer;padding:20px; text-align:center" onclick="authenticate('publish_article');"><strong> Log in </strong></td></tr>
</table>
</form>
</div>

<div id="language_box" class="dialogs" style="position:absolute; z-index:2; display:none;">

<!--<table id="language_table" cellpadding="5" cellspacing="4" class="tabela1" style="margin:0px">
	<tr>
		<td colspan="8" bgcolor="#D3D3D3"><div style="float:left">Select Language:</div></td>
	</tr>
-->	
<div style="float:left;margin:5px;background-color:#F5F5F5;padding:5px;width:100px;font-family: Verdana, Geneva, sans-serif; font-size: 10px;" ><input type="radio" name="sts_language" value="EN" onclick="select_language('EN','EN')"/>English</div><div style="float:left;margin:5px;background-color:#F5F5F5;padding:5px;width:100px;font-family: Verdana, Geneva, sans-serif; font-size: 10px;" ><input type="radio" name="sts_language" value="DE" onclick="select_language('DE','EN')"/>German</div><div style="float:left;margin:5px;background-color:#F5F5F5;padding:5px;width:100px;font-family: Verdana, Geneva, sans-serif; font-size: 10px;" ><input type="radio" name="sts_language" value="PL" onclick="select_language('PL','EN')"/>Polish</div><div style="float:left;margin:5px;background-color:#F5F5F5;padding:5px;width:100px;font-family: Verdana, Geneva, sans-serif; font-size: 10px;"><input type="radio" name="sts_language" value="XX" onclick="select_language('XX','EN')"/>All Languages </div><div id="language_box_cancel" style="float:left;padding:20px; text-align:center;font-family: Verdana, Geneva, sans-serif; font-size: 10px;" onclick="cancel_language_selection()"><strong> Cancel </strong></div></div>

<div id="article_box" class="dialogs" style="display:none;">
</div>
<div id="background_box" class="zaciemnij" style="display:none;">
</div>

<div id="fulltext_box" style="position:absolute; z-index:2; display:none;">
</div>
<div id="loadfull_box" class="newsbox" style="text-align:center;position:absolute; z-index:2; display:none;background-color:white">
<div style="float:center; padding:50px; font-size: 12px">Loading</div>
<div style="cursor:pointer;text-align:center;float: right;margin-top:10px;width:100px;font-size:12px; padding: 20px; background-color: #EEEEEE" onclick="cancel_fulltext()"><strong>Cancel </strong></div>
</div>


<div id="authenticating" class="newsbox" style="text-align:center;position:absolute; z-index:2; display:none;background-color:white">
<div style="float:center; padding:50px; font-size: 12px">Authenticating</div>
<div style="cursor:pointer;text-align:center;float: right;margin-top:10px;width:100px;font-size:12px; padding: 20px; background-color: #EEEEEE" onclick="cancel_login()"><strong>Cancel </strong></div>
</div>


<div style='-moz-user-select: none;-webkit-user-select: none;' onselectstart='return false;'>	
<div id="zoombox" class="ramka_pelna" style="display:none; position: absolute; width: 400px; height: 246px; z-index: 10; background-color: white; left: 100px; top: 100px;"></div>


<div id="identifiers"></div>
<div id="table" ></div>
<div id="no_of_articles" style="display:block">
</div>
<div id="mainarea"><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></div>

<div id="wyswietlane_moduly">
<br/>




</div>
     
   <div id="debug"></div>  
     
     
     
     
     


<!--
	<div itemscope itemtype="http://data-vocabulary.org/Person"> 
    <span itemprop="name">Ekolineo</span>
    <span itemprop="title"> Naukowcy proponują naturalne kosmetyki </span>
    Lokalizacja: 
    <span itemprop="address" itemscope 
      itemtype="http://data-vocabulary.org/Address">
      <span itemprop="street-address">ul. Orłowskiego 16</span>, 
      <span itemprop="locality">Warszawa</span> 
      
    </span>
    Telefon: <span itemprop="tel">022 123-45-67</span>
    <a href="http://www.ekolineo.pl" itemprop="url">http://www.ekolineo.pl</a>
</div>
-->
<!--	
	<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.async=true; js.src = "//connect.facebook.net/pl_PL/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk')); </script>
-->
<div id="papers_language" style="display:none">XX</div>
</body>
</html>
