//paperparser.js
//
//Written for DiMauro group website, publications page
//
//Author: Christoph A. Roedig
//
//	For fully documented code see paperparser_fullcomment.js
//
//Latest Revision: 3/26/09

//CODE-------

//global Variables
var DisplayLength= 10;
var pages = 1;
var EarliestYear=1980;
var LatestYear=2009; 
var CurrentYear=1980; 
var CurrentAuthor=""; 

//Functions
function init() 
{
	var d = new Date();
	LatestYear=d.getFullYear();
	CurrentPage=1;
	CurrentYear=10*Math.round((d.getFullYear()-10)/10); 
	
	ReqData=ParseRequest();
	if (ReqData['year']!=null)
	{
		CurrentYear=parseInt(ReqData['year']);
	}
	if (ReqData['author']!=null)
	{
		CurrentAuthor=ReqData['author'];
	}
	
	flagMainNav()
	
	if (ReqData['pg']!=null)
	{
		CurrentPage=parseInt(ReqData['pg']);
	}
	
	document.getElementById("Publications").innerHTML="<h1>Loading Data...</h1>";
	loadXMLDoc("publications.xml");

}
function flagMainNav()
{
	if (CurrentAuthor=="")
	{
		document.getElementById("all_pub").id="current";
	}
	if (CurrentAuthor=="DiMauro")
	{
		document.getElementById("dimauro_pub").id="current";
	}
	if (CurrentAuthor=="Agostini")
	{
		document.getElementById("agostini_pub").id="current";
	}
	return 0 ;
}

function writeData(x)
{
	ContentList=populate(x);
	display(ContentList); 
}

function ParseRequest()
{
  FORM_DATA = new Object();
  separator = ',';
  query = '' + this.location;
  qu = query
  query = query.substring((query.indexOf('?')) + 1); 
  if (query.length < 1) { return false; } 
  keypairs = new Object();
  numKP = 1;
  while (query.indexOf('&') > -1) {
    keypairs[numKP] = query.substring(0,query.indexOf('&'));
    query = query.substring((query.indexOf('&')) + 1);
    numKP++;
  }
  keypairs[numKP] = query;
    
  for (i in keypairs) {
    keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));
    keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
    while (keyValue.indexOf('+') > -1) {
      keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
     }
    keyValue = unescape(keyValue);

    if (FORM_DATA[keyName]) {
      FORM_DATA[keyName] = FORM_DATA[keyName] + separator + keyValue;

    } else {
      FORM_DATA[keyName] = keyValue;

    }
}
return FORM_DATA
}

function loadXMLDoc(url) {
      
    if (window.XMLHttpRequest) 
    	{ 
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange; 
        req.open("GET", url, true); 
        req.send(null);
    	} 
    else if (window.ActiveXObject) 
    	{
        isIE = true;
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
	
        }
    }
  }


function processReqChange() {
    if (req.readyState == 4) {
    
        if (req.status == 200) {
          writeData(req.responseXML.getElementsByTagName("PAPER")) 
         } else {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
         }
    }
}

	
function populate(x)
{
	var FullList = new Array()
	var j=0; 

	for (var iyear=CurrentYear+9;iyear>=CurrentYear;iyear-=1)
	{
		for (var i=0;i<x.length;i++)
		{ 
			if (x[i].getElementsByTagName("AUTHORS")[0].childNodes[0].nodeValue.match(CurrentAuthor)==CurrentAuthor)
			{
				if (parseInt(x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue) == iyear)
				{
					FullList[j]=x[i];
					j++;
				}
			}
		}
	}
	return FullList 
}


function navtable(FullList) 
{
	pages = Math.round(FullList.length/DisplayLength);
	txt="";
	txt+="<Table id=horiznavlist><tr>"
	for (var y=EarliestYear;y<=LatestYear;y+=10)
	{
		txt+="<td width=100px>" 
		txt+="<a href='" 
		txt+="?year="+y  
		txt+="&author="+CurrentAuthor 
		txt+="'"
		if (y==CurrentYear)
		{
			txt+=" id='current'"
		}
	txt+=">&nbsp;"+y+"-"+(y+10)+"&nbsp;</a>"
	txt+="</td>"
	}
	txt+="<td></td></tr></Table>" 
	txt+="<Table id=horiznavlist><tr>"
	for (var i=1;i<=pages;i++)
	{
		txt+="<td width=20px>"
		txt+="<a href='"
		txt+="?pg="+i+"&year="+CurrentYear
		txt+="&author="+CurrentAuthor
		txt+="'"
		if (i==CurrentPage)
		{
			txt+=" id='current'"
		}
		txt+=">&nbsp;"+i+"&nbsp;</a>"
		txt+="</td>"
	}
	txt+="<td>"+FullList.length+" Publications "
	txt+="from "+CurrentYear+" to "+(CurrentYear+9 )
	if (CurrentAuthor!="")
		{
		txt+=", with "+CurrentAuthor+" as Author";
		}
	txt+="</td>"
	txt+="<td></td></tr></Table>"
	return txt
}

function display(FullList) 
{

	txt="" 
	txt+=navtable(FullList)
	txt+="<ul class='CList'>"
	var OffSet=(CurrentPage-1)*DisplayLength; 
	for (var i=0;i<DisplayLength;i++)
	{
	if (FullList[i+OffSet]!=null)
		{
			txt+="<li >"
			txt+="<Strong>";
			txt+=FullList[i+OffSet].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue+"</Strong><br/>";
			txt+="<em>"+FullList[i+OffSet].getElementsByTagName("AUTHORS")[0].childNodes[0].nodeValue+"</em><br/>";
			txt+="<Strong>"+FullList[i+OffSet].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue+"</Strong><cite>&nbsp;";
			txt+=FullList[i+OffSet].getElementsByTagName("REF")[0].childNodes[0].nodeValue+"</cite>"
			if (FullList[i+OffSet].getElementsByTagName("PDFLINK")[0]!=null)
			{
				txt+="&nbsp;|&nbsp;<a href="+FullList[i+OffSet].getElementsByTagName("PDFLINK")[0].childNodes[0].nodeValue+">FullText (PDF)</a>&nbsp;|";
			}
		txt+="</li>";
		}
	}
	txt+="</ul>"
	txt+=navtable(FullList);
	document.getElementById("Publications").innerHTML=txt;

}

