function Chapter(title, papers) {
	this.title = title;
	this.papers = papers;
}

function Paper(title, authors, images, videos) {
	this.title = title;
	this.authors = authors;
	this.images = images;
	this.videos = videos;
}

function Author(name, email, photo, cv) {
	this.name = name;
	this.email = email;
	this.photo = photo;
	this.cv = cv;
}

function verify() { 
	if(xmlDoc.readyState != 4)
		return false; 
}

function loadXmlDocument(xmlFile){

	if( window.ActiveXObject ){

		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

		xmlDoc.async = false;
		xmlDoc.onreadystatechange = verify;
		xmlDoc.load(xmlFile);
		
		return true;
	}
	else
		if( document.implementation && document.implementation.createDocument ){
			xmlDoc = document.implementation.createDocument("", "", null);
			xmlDoc.async = false;
			xmlDoc.load(xmlFile);
			
			return true;
		}
		else{
			return false;
		}
}

function traverse() {
	
	var authors_ = xmlDoc.getElementsByTagName("Author");
	for(var i = 0; i != authors_.length; i++)
		readAuthor(authors_[i]);
		
	var papers_ = xmlDoc.getElementsByTagName("Paper");
	for(var i = 0; i != papers_.length; i++)
		readPaper(papers_[i]);
		
	var chapters_ = xmlDoc.getElementsByTagName("Chapter");
	for(var i = 0; i != chapters_.length; i++)
		readChapter(chapters_[i]);
		
}

function readAuthor(author){
	
	var name;
	var email;
	var photo;
	var cv;
		
	if(author.getElementsByTagName("name").length > 0)
		name = author.getElementsByTagName("name")[0].firstChild.nodeValue;
	if(author.getElementsByTagName("email").length > 0)
		email = author.getElementsByTagName("email")[0].firstChild.nodeValue;
	if(author.getElementsByTagName("photo").length > 0)
		photo = author.getElementsByTagName("photo")[0].firstChild.nodeValue;
	if(author.getElementsByTagName("cv").length > 0)
		cv = author.getElementsByTagName("cv")[0].firstChild.nodeValue;
		
	authors[authors.length] = new Author(name, email, photo, cv);
}

function readPaper(paper){
	
	var title;
	var authors_ = new Array();
	var images = new Array();
	var videos = new Array();
 	
	if(paper.getElementsByTagName("title").length > 0)
		title = paper.getElementsByTagName("title")[0].firstChild.nodeValue;

	var auth = paper.getElementsByTagName("author");
	for(var i = 0; i < auth.length; i++)
		authors_[authors_.length] = auth[i].firstChild.nodeValue;

	var img = paper.getElementsByTagName("image");
	for(var i = 0; i < img.length; i++)
		images[images.length] = img[i].firstChild.nodeValue;

	var vid = paper.getElementsByTagName("video");
	for(var i = 0; i < vid.length; i++)
		videos[videos.length] = vid[i].firstChild.nodeValue;

	papers[papers.length] = new Paper(title, authors_, images, videos);
}

// FUNÇÂO PARA AS SESSÕES 

function readChapter(chapter){

	var title;
	var subtitles;
	var papers_ = new Array();
 	
	if(chapter.getElementsByTagName("title").length > 0)
		title = chapter.getElementsByTagName("title")[0].firstChild.nodeValue;

	var paper = chapter.getElementsByTagName("paper");
	for(var i = 0; i < paper.length; i++)
		papers_[papers_.length] = paper[i].firstChild.nodeValue;
		
	
	chapters[chapters.length] = new Chapter(title, papers_);
}

function rearrangeFullName(name){
	splitString = name.split(",");
	return splitString[1].substr(1) + ' ' + splitString[0];
}

function writeAuthor(name, full, linkable){
	
	for(var i = 0; i < authors.length; i++)
		if(authors[i].name == name){

			var name_ = name;
			if(full)
				name_ = rearrangeFullName(name);
		
			if(authors[i].cv != null && authors[i].cv != "" && linkable)
				document.write('<a href="' + 'cv.html?name=' + name + '">' + name_ + '</a>');
			else
				document.write(name_);
		}
}

function writePaper(title){

	for(var i = 0; i < papers.length; i++){
		if(papers[i].title == title){

			var linkpage = i+1;
			if(linkpage < 10)
				linkpage = '0' + linkpage;
	
			document.write('<b><a href="' + 'papers/' + linkpage + '.html">' + title + '</a></b>');
			document.write('<br>');

			for(var j = 0; j < papers[i].authors.length; j++){
				writeAuthor(papers[i].authors[j], true, true);
				if(j < papers[i].authors.length-1)
					document.write(',&nbsp;');
			}
		}
	}
}

function writePhoto(name){
	for(var i = 0; i < authors.length; i++)
		if(authors[i].name == name){
			if(authors[i].photo != null && authors[i].photo != "")
				document.write('<img src="' + 'cv/' + authors[i].photo + '">');
			else
				document.write('<img src="' + 'cv/' + 'default.jpg' + '">');
		}
}

function writeMail(name){
	for(var i = 0; i < authors.length; i++)
		if(authors[i].name == name){
			if(authors[i].email != null && authors[i].email != "")
				document.write('<a href = "mailto:' + authors[i].email +'?subject=Comments from CoNEXT 06 Proceedings">' + 'e-mail this Author' + '</a>');
			else
				document.write('');
		}
}

function writeCV(name){
	for(var i = 0; i < authors.length; i++)
		if(authors[i].name == name){
			if(authors[i].cv != null && authors[i].cv != "")
				document.write(authors[i].cv);
			else
				document.write('');
		}
}

function writeMedia(title){
	
	for(var i = 0; i < papers.length; i++){
		if(papers[i].title == title){
			if(papers[i].images.length > 0 || papers[i].videos.length > 0){
				document.write('<tr valign="middle"><td>');
				document.write('<b>Associated Media</b>' + '<br><br>');
				if(papers[i].images.length > 0){
					for(var j = 0; j < papers[i].images.length; j++){
						document.write('<a href="' + '../media/images/' + papers[i].images[j] + '">' + 'Image ' + (j+1) + '</a>');
						document.write('<br>');
					}
					if(papers[i].videos.length > 0)
						document.write('<br>');				
				}
				
				if(papers[i].videos.length > 0){
					for(var j = 0; j < papers[i].videos.length; j++){
						document.write('<a href="' + '../media/videos/' + papers[i].videos[j] + '">' + 'Video ' + (j+1) + '</a>');
						document.write('<br>');
					}
				}
				document.write('<br>');
				document.write('</td></tr>');
			}
		}
	}
}

function sortFunction(a, b){
	var x = a.name.toLowerCase();
    var y = b.name.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}


var authors = new Array();
var papers = new Array();
var chapters = new Array();

var xmlDoc;
var xmlFile = "data.xml";

function loadXml(file){
	if(loadXmlDocument(file) == false)
		alert("Browser not supported!");
	traverse();
	authors.sort(sortFunction);
}




function Header(level)
{
	
    document.write('<p align="right" style="margin-bottom: 0"><font face="Trebuchet MS" size="6">2nd</font><font face="Trebuchet MS" size="7"><b>');
    document.write('<span lang="en-gb">CoNEXT</span> </b></font><font face="Trebuchet MS" size="6">Conference </font><font face="Trebuchet MS" size="7">Proceedings</font></p>');
    document.write('<p align="right" style="margin-top: 0; margin-bottom: 0"><font color="#559FFE" face="Trebuchet MS" size="5"><b>');
    document.write('ADETTI/ISCTE<br>');
    document.write('Lisboa, </b>Portugal</font><b><font color="#559FFE" face="Trebuchet MS" size="5"><br>');
    document.write('</font></b><font face="Trebuchet MS" size="4">');
    document.write('<b> 4-7 </b>December <b> 2006</b></font>');
        
		}

function Navegacao(level)
{
	document.write('<table align="left" border="0"><font face="Verdana" size="2" color="#D5EAFF">');
	document.write('<tr>');
	document.write('<td><font face="Verdana" size="2"><a href="'+level+'index.html"> Home </a><br></td></tr>');
	document.write('<tr><td><font face="Verdana" size="2"><a href="'+level+'introduction.html">  Organisation  </a></font><br></td></tr>');
	document.write('<tr><td><font face="Verdana" size="2"><a href="'+level+'editorialboards.html">  Editorial Boards   </a></font><br></td></tr>');
	document.write('<tr><td><font face="Verdana" size="2"><a href="'+level+'lchapters.html">Program   </a></font><br></td></tr>');
	document.write('<tr><td><font face="Verdana" size="2"><a href="'+level+'lpapers.html">  Papers and Presentations  </a></font><br></td></tr>');
	document.write('<tr><td><font face="Verdana" size="2"><a href="'+level+'lauthors.html">  Authors   </a></font><br></td></tr>');
	document.write('<tr><td><font face="Verdana" size="2"><a href="'+level+'credits.html">   Credits   </a></font><br></td></tr>');
	document.write('<tr><td><font face="Verdana" size="2"><a href="'+level+'Proceedings.html">Full Proceedings</a></font><br></td></tr>');
	document.write('<tr><td><font face="Verdana" size="2"><a href="http://www.adetti.pt/events/CONEXT06/" target="new">  CoNEXT 06 </a></font><br></td></tr>');
	document.write('<tr><td><font face="Verdana" size="2"><a href="'+level+'requiredsoftware.html">Required Software </a></font><br></td>');
	document.write('</tr></font></table>');
}

function Middle()
{
	document.write('</td></tr><!--Conteudo--><tr><td><hr><br>');
}

function Footer()
{
	document.write('</td></tr></table><br /><font face="Verdana" size="2"><a href="#top">Top (^)</a></font>');
	document.write('<br /><font face="Verdana" size="2">Adapted by '+MailTo("AL", 1, 1, "CoNEXT 06 Proceedings")+'</font>');
	document.write('<table cellSpacing="2" cellPadding="2" border="0" id="table3" width="391"><tr><td width="111"><font face="Verdana" size="2">© 2006 ACM</font></td>');
    document.write('<td><font face="Verdana" size="2">1-59593-456-1/</font></td><td><font face="Verdana" size="2">06/</font></td>');
    document.write('<td><font face="Verdana" size="2">0012</font></td><td><font face="Verdana" size="2">5.00</font></td></tr></table>');
	
}

function Title(n, title)
{
	document.write('<tr align="center"><td colspan="'+n+'"><br /><h1>'+title+'</h1></td></tr>');
}

function Authors(n, authors)
{
	document.write('<tr align="center">');
	for(var i = 0; i < authors.length; i++)
		document.write('<td valign="top"><font size="2" face="Verdana">'+authors[i]+'</font></td>');
	document.write('</tr>');
}

function Abstract(n, abst)
{
	document.write('<tr><td colspan="'+n+'"><br /><b>Abstract</b><br /><i>'+abst+'</i></td></tr>');
}

function Keywords(n, key)
{
	document.write('<tr><td colspan="'+n+'"><br /><b>Keywords</b><br /><i>'+key+'</i></td></tr>');
}

function LinkPaper(n, link)
{
	document.write('<tr valign="middle"><td colspan="'+n+'"><br /><img src="../images/pdf.gif"> ');
	document.write('<font size="2" face="Verdana">Click <a href="'+link+'" onMouseOver="window.status=\'Download this paper (PDF)\';return true;" onMouseOut="window.status=\'\'">here</a> to download the full paper<br /><br /></font></td></tr>');
}

function NavegPaper(n, previous, next)
{
	document.write('<tr><td colspan="'+n+'">');
	if(previous!="")
		document.write('<font size="2" face="Verdana"><a href="'+previous+'" onMouseOver="window.status=\'Previous Paper\';return true;" onMouseOut="window.status=\'\'">Previous Paper</a></font>');
	if(previous!="" && next!="")
		document.write(' | ');
	if(next!="")
		document.write('<font size="2" face="Verdana"><a href="'+next+'" onMouseOver="window.status=\'Next Paper\';return true;" onMouseOut="window.status=\'\'">Next Paper</a></font></td></tr>');
}

function Start() {
	document.write('</td></tr></table><table width="95%" border="0" align="center">');
}

function End() {
	document.write("</table>");
}

/* --- Made by Frederico Figueiredo --- */

//Contacts - BY FEPF (13.10.2003)
ar = "@"
itContacts=0;

contacts = new Array();
contacts[0] = new Array("AL", "Ana Rita Leitão", "Ana.Leitao", "iscte.pt");


//Recebe:
//name: Nome a indexar na primeira coluna do Array de contactos
//presentation: 0 -> neste caso escreve directamente o email; 1 -> Escreve o nome do contacto
//writeTo: 0 -> Faz um document.write do resultado; 1 -> Retorna uma string com o resultado 2 -> retorna
//		   apenas a parte do href
//subject: subject do email
function MailTo(name, presentation, writeTo, subject) {
	var result = "No email Available";

	var m = "mail";
	var t = "to";
	var p = ":";
	var it = "?";
	var sj = "subject";
	var e = "=";
	var subjDefault = "CoNEXT 06 Proceedings (December 2006)";
	var href = "";

	for(var i=0; i<=itContacts; i++) {
		if(contacts[i][0] == name) {
			var mail = contacts[i][2]+ar+contacts[i][3];
			var name;
			if(presentation == 0)
				name = mail;
			else
				name = contacts[i][1];
			if(subject != null)
				if(subject != null)
					subjDefault = subject;
			href = "href='"+m+t+p+contacts[i][2]+ar+contacts[i][3]+it+sj+e+subjDefault+"' onMouseOver='window.status=\"Send an email to "+contacts[i][1]+"\";return true;' onMouseOut='window.status=\"\";'"+"'";
			result = "<a "+href+">"+name+"</a>";
		}
	}
	if(writeTo == 0) {
		document.write(result);
		return;
	}
	else
		if(writeTo == 1)
			return result;
		else
			if(writeTo == 2)
				return href;
}
