
var validyear = [2009,2008,2007,2006,2005,2004,2003,2002,2001];

 function outputSelected(opt) {

	var yearfeldinput = document.getElementById("yearfeld");

	var feldvalue = yearfeldinput.value;

	if (feldvalue.length < 1) {
					alert("please insert a year");
					return;
	}
				
	if (feldvalue.length > 1) {
									
		var yearIscontained = contains(feldvalue,validyear);
		if(yearIscontained == false) {
			alert("please insert a valid year");
			return;
			}
	}

	removeAllChildNodes($('dataDiv'));
	initdataDiv(feldvalue);

}


 
 // called if buttom show all clicked 
 function initdataDiv(year) {
	
	removeAllChildNodes($('dataDiv'));

    var filepathUrl = "pubMed/pubmed_result.txt.xml";	
	
	ajaxFunction(filepathUrl, year);
		
	
	
}




function ajaxFunction(url,year){
  	
 	new Ajax.Request(
 		      url,
 		      {
 		        method:"get",
 		         		        
 		        onComplete:function(xhr){
 		          
						var responseDoc=xhr.responseXML;
						
						update(responseDoc,year);
 							          
 		           }
 		      }
	    );
  
 }
 

function removeAllChildNodes(cell) {


		if ( cell.hasChildNodes() )
		{
		    while ( cell.childNodes.length >= 1 )
		    {
		        cell.removeChild( cell.firstChild );
		    }
		}
}

function toggleMe(a){

  var e=document.getElementById(a);
  
  if(!e)return true;
  
  if(e.style.display=="none"){
  
    e.style.display="block"
  } else {
    e.style.display="none"
  }
  return true;
}


function getpubYear(pubmedArticleNode) {

	var pubDateNode = pubmedArticleNode.getElementsByTagName('PubDate')[0];
	
	var yearNode = pubDateNode.getElementsByTagName('Year')[0];
	
	 var year ='';
	 
	if(yearNode && yearNode.hasChildNodes()){year = yearNode.firstChild.data;}
	
	return year;
} 

function 	update(responseDoc,year) {
	
 
	
	
	var pubMedArticleNodelist = responseDoc.getElementsByTagName('PubmedArticle');
	
	// node filtering if year is given
	// if null show all else select by year
	
	if(year == null){
		
		var num =pubMedArticleNodelist.length;
		
		// if year = null take all publications 
		for (var i = 0; i < pubMedArticleNodelist.length; ++i) {
				
			var pubmedArticleNode = pubMedArticleNodelist[i];
		
			readDatafromPubmedArticleNode(pubmedArticleNode, num);
			
			num--;
		}
	
	}else {
		
		var nodesByYearArray = [];
		
		
		
		for (var i = 0; i < pubMedArticleNodelist.length; ++i) {
			
						
			var pubmedArticleNode = pubMedArticleNodelist[i];
			
			var articleYear = getpubYear(pubmedArticleNode);
						
			
			if(articleYear == year){
				
				nodesByYearArray[i] = pubmedArticleNode;
				
				//readDatafromPubmedArticleNode(pubmedArticleNode, num);
				
				num++;
			}
			
		
		}
		
		var num =nodesByYearArray.length;
		
		for (var i = 0; i < nodesByYearArray.length; ++i) {
		
			readDatafromPubmedArticleNode(nodesByYearArray[i], num);
			
			num--;
		
		}
		
	
	}
		
}

function contains(item, fixArray) {
		
		var contained = false;
		
		for (var i = 0; i < fixArray.length; ++i) {
			var arrayitem = fixArray[i];
					
			
			if(arrayitem == item) {
				 
				return true;
			} 
		}
		
		return contained;
	
	}




function readDatafromPubmedArticleNode(pubmedarticlenode, num){


 var pmidNode =  pubmedarticlenode.getElementsByTagName('PMID')[0];
 
 // pmid for current pub
 var pmid  = pmidNode.firstChild.data;
 
 var pubHREF = 'http://www.ncbi.nlm.nih.gov/pubmed/'+pmid;
			
 var articleTitleNode = pubmedarticlenode.getElementsByTagName('ArticleTitle')[0];

 // title for current pub
 var articletitle = articleTitleNode.firstChild.data;
 
 var authorListNode = pubmedarticlenode.getElementsByTagName('AuthorList')[0];

 var authorList =authorListNode.getElementsByTagName('Author');
 
 // authors for current pub
 var authors = [];
			
 for (var i = 0 ; i < authorList.length; i++){
	
	var authorNode = authorList[i];
											
	var lastnameNode =  authorNode.firstChild.nextSibling;

	var lastname = 	lastnameNode.firstChild.data;

	var initialsNode =  authorNode.getElementsByTagName('Initials')[0];

	var initials = initialsNode.firstChild.data;

	var name = lastname + " " +initials;
						
	authors[i] = name;
												
 } 
 
 
 //read data from articleNode
 var articleNode = pubmedarticlenode.getElementsByTagName('Article')[0];
 
 
 // pub model - articel title (example journal)
 var articeltitleNode = articleNode.getElementsByTagName('ISOAbbreviation')[0];
 var articeltitle = '';
 if(articeltitleNode && articeltitleNode.hasChildNodes()) {articeltitle = articeltitleNode.firstChild.data; } 
  
 var pubDateNode = articleNode.getElementsByTagName('PubDate')[0];
 
  
 var yearNode = pubDateNode.getElementsByTagName('Year')[0];
 var year ='';
 if(yearNode && yearNode.hasChildNodes()){year = yearNode.firstChild.data;}
 

 var monthNode = pubDateNode.getElementsByTagName('Month')[0];
 var month = '';
 if(monthNode && monthNode.hasChildNodes()){month = monthNode.firstChild.data;}
 

 //Volume and Issue
 var volumeNode = articleNode.getElementsByTagName('Volume')[0];
 var issueNode = articleNode.getElementsByTagName('Issue')[0];
				

var volumeAndIssue = "[Epub ahead of print]";
				
if(volumeNode != null && issueNode != null  && volumeNode.hasChildNodes() && issueNode.hasChildNodes() ) {
					
	var volume = volumeNode.firstChild.data;
	
	var issue = issueNode.firstChild.data;
					
	volumeAndIssue = "; "+volume+"("+issue+"):";
								
}

//medline
var medlinePgnNode = articleNode.getElementsByTagName('MedlinePgn')[0];
				
var medline = '';
				
if(medlinePgnNode != null && medlinePgnNode.hasChildNodes() ) {
	medline = medlinePgnNode.firstChild.data;
}



var abstractNode = articleNode.getElementsByTagName('AbstractText')[0];
	
var abstracttxt = '';
	
if(abstractNode && abstractNode.hasChildNodes()){abstracttxt = abstractNode.firstChild.data;}
	

var pubnum = document.createTextNode(num+'');
		
var pubDiv = document.createElement('div');	
	  	
pubDiv.className = "pubDiv";	

drawTitle(articletitle,pubHREF,num,pubDiv);	
drawAuthors(authors,pubDiv);

draw_Year_Month_volume_Issue_MedlinePgn_Line(articeltitle,year,month,volumeAndIssue,medline,pubDiv);
drawAbstractlink(pmid,pubDiv);
drawAbstract(abstracttxt,pmid,pubDiv);
	  
var dataDiv = $('dataDiv');

dataDiv.appendChild(pubDiv);

}

function drawTitle(articletitle,pubhref,num,div){
			
			var pubnum = document.createTextNode(num+'. ');
			
			var titleDiv = document.createElement('div');
			
			var titleLink = document.createElement('a');
			
			titleDiv.className = "titleDiv";
						
			titleLink.href =  pubhref;
					
			// call funtion to ass year to publication title
			//addyear(doc,titleDiv);
			
			var txtNode = document.createTextNode(articletitle);
			
			titleLink.appendChild(txtNode);
			
			titleDiv.appendChild(pubnum);
			titleDiv.appendChild(titleLink);
					
			div.appendChild(titleDiv);
	

}


function drawAuthors(authors,div){


		var authorsHTML = '';
			
			for (var i = 0 ; i < authors.length; i++){
			
				if(i == 0){
				
					authorsHTML += " "+authors[i];
				
				} else {
					authorsHTML += " | "+authors[i];	
				}
					
			}
			
		var authorDiv = document.createElement('div');
			
		authorDiv.className = "authorDiv";
			
		authorDiv.innerHTML =authorsHTML;

		div.appendChild(authorDiv);	

}


function draw_Year_Month_volume_Issue_MedlinePgn_Line(articeltitle,year,month,volumeAndIssue,medline,div){
	
	var line = year+" "+month+"."+volumeAndIssue+medline;
	
	var lineDiv = document.createElement('div');
	
	var articeltitlespanElem = document.createElement('span');
				
	var articletitletxtNode = document.createTextNode(articeltitle+' ');
				
	articeltitlespanElem.appendChild(articletitletxtNode);
				
	articeltitlespanElem.className = "articeltitlespanElem";
	
	var linetxtNode = document.createTextNode(line);
	
	div.appendChild(articeltitlespanElem);
	div.appendChild(linetxtNode);
	

}	

function drawAbstractlink(pmid,div){
	
	var abstractid = 'abstract'+pmid; 
 	
	var abstractlinkDiv = document.createElement('div');
	
	var abstractLink = document.createElement('a');
		
	abstractLink.onclick = function() {toggleMe(abstractid)};
	
	abstractLink.href =  "javascript:void(0)";
	
	abstractlinkDiv.className= "abstractlink";
	
	var txtNode = document.createTextNode('abstract');
	abstractLink.appendChild(txtNode);
	
	abstractlinkDiv.appendChild(abstractLink);
	div.appendChild(abstractlinkDiv);
}	


function drawAbstract(abstracttxt,pmid, div){

	var abstractid = 'abstract'+pmid; 
			
	var abstractDiv = document.createElement('div');
	
	abstractDiv.id =  abstractid;
	
	abstractDiv.style.display = "none";
	
	abstractDiv.className= "abstractDiv";
	
	var abstracttxtNode = document.createTextNode(abstracttxt);
		
	abstractDiv.appendChild(abstracttxtNode);
		
	div.appendChild(abstractDiv);
}