var nPapers=0;	// total number of papers

var AutArr;
var TitArr;
var JouArr;
var VolArr;
var YrrArr;
var PagArr;
var AbsArr;
var PdfArr;
var DoiArr;
var PicArr;
var SizArr;
var ArxArr;
var GooArr;
var KeyArr;
var LinArr;
var LnaArr;
var LfgArr;

var isIE = false;
var req;						 
var xmlDoc;

var ndline=-1;	// for not showing the two thin dashed gray lines by the last displayed article

// retrieve an XML document
function loadXMLDoc(url) 
{ 
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) 
	{	
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);	 
        req.send(null);
    } 
    
    // branch for IE/Windows ActiveX version
	else if (window.ActiveXObject) 
    {
		isIE = true;		 
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) 
        {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send(null);
        }
    }
}

// handle onreadystatechange event of req object
function processReqChange() 
{	
    // only if req shows "loaded"
	if (req.readyState==4) 
	{
		xmlDoc = req.responseXML;
		ShowXML();
	}
}

function ShowXML()
{													 
	var res="";	
	
	AutArr = xmlDoc.getElementsByTagName('author');
	TitArr = xmlDoc.getElementsByTagName('title');
	JouArr = xmlDoc.getElementsByTagName('journal');
	VolArr = xmlDoc.getElementsByTagName('vol');
	YrrArr = xmlDoc.getElementsByTagName('year');
	PagArr = xmlDoc.getElementsByTagName('pages');
	AbsArr = xmlDoc.getElementsByTagName('abstract');
	PdfArr = xmlDoc.getElementsByTagName('pdf');
	DoiArr = xmlDoc.getElementsByTagName('doi');
	PicArr = xmlDoc.getElementsByTagName('pic');
	SizArr = xmlDoc.getElementsByTagName('size');
	ArxArr = xmlDoc.getElementsByTagName('arxiv');
	GooArr = xmlDoc.getElementsByTagName('googs');
	KeyArr = xmlDoc.getElementsByTagName('keyw');
	LinArr = xmlDoc.getElementsByTagName('linkhttp');
	LnaArr = xmlDoc.getElementsByTagName('linkname');
	LfgArr = xmlDoc.getElementsByTagName('linkfig');
				
	nPapers = AutArr.length;	// koliko krat se pojavi 'author' v XML datoteki			
	
	for (i = 0;  i<nPapers; i++)
	{	 
		res=res+PaperOr(i,
		AutArr[i].firstChild.nodeValue,
		TitArr[i].firstChild.nodeValue,
		JouArr[i].firstChild.nodeValue,	
		VolArr[i].firstChild.nodeValue, 
		YrrArr[i].firstChild.nodeValue,
		PagArr[i].firstChild.nodeValue,
		AbsArr[i].firstChild.nodeValue,
		PdfArr[i].firstChild.nodeValue,	
		DoiArr[i].firstChild.nodeValue,
		PicArr[i].firstChild.nodeValue,
		SizArr[i].firstChild.nodeValue,
		ArxArr[i].firstChild.nodeValue,
		GooArr[i].firstChild.nodeValue,
		KeyArr[i].firstChild.nodeValue,	
		LinArr[i].firstChild.nodeValue,
		LnaArr[i].firstChild.nodeValue,
		LfgArr[i].firstChild.nodeValue,
		nPapers);			
	}
			 
	if (res!="") // if bucket.xml is not empty
	{
		document.onkeypress=stopRKey;
		document.getElementById("CreateList").innerHTML=res;
		document.getElementById("tablecontrols").style.display="";
		document.getElementById("hrcontrols").style.display="";
	}
}

function PaperOr(nPpr, author, title, journal, volume, year, pages, abst, pdf, doi, pic, size, arxiv, goog, keyw, link, nlink, flink, nPapers)
{			
	st='<div id=pap'+nPpr+'>';
	st=st+'<table width="100%" border="0">';
	st=st+'<tr>';
	st=st+'<td class="pdf" valign="middle">';
	
	if (pdf!="NA") 
	{
		st=st+'<a target="_top" href="pap/'+pdf+'">';
		st=st+'<img src="img/paper.png" alt="pdf" title="click to view the pdf file" border="1" align="middle" /></a><br />';
		st=st+'<span style="font-family: Georgia, Serif; font-size: 9px; color: #808080;">'+size+'</span>';
	}
	else
	{
		st=st+'<img src="img/wait.png" alt="in print" title="the pdf file will be available here soon" border="1" align="middle" />';
	}
	
	st=st+'</td>';
	st=st+'<td class="pbs" valign="middle">';
	st=st+author; st=st+'<br />';
	st=st+'<b>'; st=st+title; st=st+'</b><br />';
	st=st+'<i>'; st=st+journal; st=st+'</i>'; 
	
	if (pdf!="NA") 
	{
		st=st+' <b>'; st=st+volume; st=st+'</b> ('; st=st+year; st=st+') '+pages+'<br />'; 		
	}
	else
	{
		st=st+' ('+year+')<br />';
	}

	if (doi!="NA") 
	{
		st=st+'[&nbsp;<a target="_top" href="http://dx.doi.org/'+doi+'">DOI</a>&nbsp;]&nbsp;';	
	}
	
	if (goog!="NA")
	{
		st=st+'[&nbsp;<a target="_top" href="http://scholar.google.com/scholar?hl=en&amp;lr=&amp;cluster='+goog+'">Google Scholar</a>&nbsp;]&nbsp;';	
	}

	if (arxiv!="NA")
	{	
		st=st+'[&nbsp;<a target="_top" href="http://arxiv.org/abs/'+arxiv+'">arXiv.org</a>&nbsp;]&nbsp;';			
	}
	
	if (link!="NA")
	{
		st=st+'[&nbsp;<a target="_top" href="'+link+'">'+nlink+'</a>&nbsp;]';		
	}

	
	st=st+'</td>';
	st=st+'<td class="pct" valign="middle">';
	if (pdf!="NA") 
	{
		st=st+'<a target="_top" href="pap/'+pdf+'">';
		st=st+'<img src="img/'+pic+'" alt="pdf" title="click to view the pdf file" border="1" align="middle" /></a>';
	}
	else
	{
		st=st+'<img src="img/'+pic+'" alt="in print" title="the pdf file will be available here soon" border="1" align="middle" />';
	}
	st=st+'</td>';
	st=st+'</tr>';
	st=st+'</table>';


	// if sentence here is for not showing the two thin dashed gray lines by the last displayed article
	if (nPpr==(nPapers-1))
	{
		st=st+'<div id=dline1'+nPpr+' class="refa" style="display: none;"></div><div id=dline2'+nPpr+' class="refb" style="display: none;"></div></div>';	
	}
	else
	{
		st=st+'<div id=dline1'+nPpr+' class="refa"></div><div id=dline2'+nPpr+' class="refb"></div></div>';	
	}
	
	return st;
}
	
function search()
{
	var nfound=0;
	
	// to show back the two thin dashed gray lines after the article is no longer the last in search 
	if (ndline!=-1)
	{
		document.getElementById("dline1"+ndline).style.display="";
		document.getElementById("dline2"+ndline).style.display="";	
	}

	Sel = document.forms[0].year;
	year = Sel.options[Sel.selectedIndex].value;
	
	Sel = document.forms[1].subject;
	subject = Sel.options[Sel.selectedIndex].value;	 
		
	Sel = document.forms[2].freetxt;
	freetxt = Sel.value.toLowerCase();
	
	// so that freetxt entries for info don't interfere with the search results
	if (freetxt==" search for text" || freetxt=="any text")
	{
		freetxt="";		
	}

	for (n=0; n < AutArr.length; n++) 				
	{ 	
		st = 
		AutArr[n].firstChild.nodeValue + " " + 
		TitArr[n].firstChild.nodeValue + " " + 
		JouArr[n].firstChild.nodeValue + " " +  
		YrrArr[n].firstChild.nodeValue + " " +  
		AbsArr[n].firstChild.nodeValue + " " +
		ArxArr[n].firstChild.nodeValue + " " +
		KeyArr[n].firstChild.nodeValue;	
																
		if((freetxt == "" || st.toLowerCase().indexOf(freetxt)>-1) && (subject == "all research topics" || KeyArr[n].firstChild.nodeValue == subject) && (year == "all years" || YrrArr[n].firstChild.nodeValue == year || (YrrArr[n].firstChild.nodeValue=="available online" && year=="accepted")))		
		{
			document.getElementById("pap"+n).style.display ="";
			nfound=nfound+1;
			ndline=n;			
		}		
		else
		{
			document.getElementById("pap"+n).style.display="none";
		}
	}
	
	if (freetxt=="")
	{
		freetxt="any text";		
	}
	
	document.getElementById("NfoundR").style.display="";
	if (nfound==1)
	{
		document.getElementById("NfoundR").innerHTML="<span style='border: 1px dotted #dcdcdc; padding-top: 1px; padding-bottom: 1px; font-weight: normal; font-family: Helvetica, Arial, Sans-serif; font-size: 11px; padding-left: 4px; padding-right: 4px; color: #000000; background-color: #e0ffff'>"+nfound+" paper retrieved for '"+year+"' AND '"+subject+"' AND '"+freetxt+"'</span>";
	}
	else
	{
		document.getElementById("NfoundR").innerHTML="<span style='border: 1px dotted #dcdcdc; padding-top: 1px; padding-bottom: 1px; font-weight: normal; font-family: Helvetica, Arial, Sans-serif; font-size: 11px; padding-left: 4px; padding-right: 4px; color: #000000; background-color: #e0ffff'>"+nfound+" papers retrieved for '"+year+"' AND '"+subject+"' AND '"+freetxt+"'</span>";
	}

	if (nfound==0)
	{
		document.getElementById("dlbott").style.display="none";
	}
	else
	{
		document.getElementById("dlbott").style.display="";
	}
	
	if (ndline!=-1)
	{
		document.getElementById("dline1"+ndline).style.display="none";
		document.getElementById("dline2"+ndline).style.display="none";
	}

	document.getElementById("pbutt").style.display="";
}	

function reset()
{
	document.forms[0].reset();
	document.forms[1].reset();
	document.forms[2].reset();
	document.getElementById("findtext").value=" search for text";
	search();
	document.getElementById("NfoundR").style.display="none";
	document.getElementById("pbutt").style.display="none";
}	

function clearfield()
{
	if (document.getElementById("findtext").value==" search for text")
	{
		document.getElementById("findtext").value="";
	}
}

function fillfield()
{
	if (document.getElementById("findtext").value=="")
	{
		document.getElementById("findtext").value=" search for text";
	}
}

function stopRKey(evt) 
{
	  var evt = (evt) ? evt : ((event) ? event : null);
	  var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
	  if ((evt.keyCode == 13) && (node.type=="text"))  
	  {return false;}
}