// JavaScript Document. Edit Functions
var popUpWin=0;
var thisItem = null;
var pretypeForButtons = "";

// ready to go. Just, when updated, the info in the back needs to be refreshed. 
// la funcion en php tiene que decidir, si es que no existe el numero o es nulo, asignarle uno nuevo. 
// solo falta en las funciones de transferencia de informacion, en la actualizacion, que revise si realmente la transaccion se realizo
function editListItem(id, pN, newOne){ //receives the parent node of the item to Edit.
//alert(id);
// 1. get the references
// item header tiene tres partes. Name y 2 links. Los links 1 es estatico y el otro tiene una leyenda y el link como tal.
//
thisItem = pN;

var itemHeader =  pN.getElementsByTagName("div")[1];



//  2. get the text
var headerName = itemHeader.getElementsByTagName("div")[0];
var headerLegend = itemHeader.getElementsByTagName("a")[1].lastChild.nodeValue;
var legendLink = itemHeader.getElementsByTagName("a")[1];


var str = "<html><head><title>Carga de informaci&oacute;n</title><script language='javascript'>var exitMode = 1 ; function exit(){ if(exitMode==1){ window.opener.cancel("+newOne+") } } function changeExit(vr){ exitMode=vr; }</script></head><body onunload='exit()' onbeforeunload='exit()'><form name='uploadForm' id='uploadForm' method='POST' action='upload.php'>"+
				"<table><tr><th>Nombre</th><th>Leyenda</th><th>V&iacute;nculo</th></tr>"+
				"<tr><td><input type='hidden' value='"+id+"'><input type='text' id='name' name='name' value='"+headerName.innerHTML
				+"'></td><td>"+
				"<input type='text' name='headerLegend' id='headerLegend' value='"+headerLegend+"'></td><td><input type='file' name='upload' id='upload'></td></tr>";

try{
	var itemBody =  pN.getElementsByTagName("div")[4];
	var lowLegend = pN.getElementsByTagName("div")[3].lastChild.innerHTML;
	
	str += "<tr><th>Leyenda baja</th><th>Informaci&oacute;n</th><th></th></tr>"+
				"<tr><td><input type='text' name='lowLegend' id='lowLegend' value='"+lowLegend+"'></td><td colspan='2'><textarea name='extrainfo' id='extrainfo'>"+
				itemBody.innerHTML+"</textarea>"+
				"</td></tr>";				


}catch(err){
	
}
str += "<tr><td colspan=3>Link externo : <input name='externalLink' type='text' value='"+legendLink.href+"'></td></tr></table><input value='Enviar' type='submit' onClick=\"changeExit(2);window.opener.updateInfo();\"><input value='Cancelar' type='button' onClick='window.opener.cancel("+newOne+");'></form></body></html>";
// 3. put the textfields 
// en lugar de dejar en el lugar correspondiente, puede ser un pop up para download. 


  if(popUpWin)

  {

    if(!popUpWin.closed) popUpWin.close();

  }

  popUpWin = window.open('', 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=yes,width='+600+',height='+300+',left='+10+', top='+10+',screenX='+10+',screenY='+10+'');

 popUpWin.document.write(str);
 
}


function cancel(newOne){
	if(newOne){// si era nueva, hay que borrar el ultimo elemento del container.
		try{
			//document.removeChild(thisItem);
		 ((thisItem.parentNode.removeChild(thisItem.parentNode.lastChild)));
		}catch(err){
			//mozilla firefox doex what it needs to, but keeps an error.
			
		}
		//thisItem.normalize();
	}
	popUpWin.close();
	
}
function updateInfo(){
	
	var nname = popUpWin.document.getElementById("name").value;
	var nlegend = popUpWin.document.getElementById("headerLegend").value;
	var nlink = popUpWin.document.getElementById("upload").value;
	var ninfo = popUpWin.document.getElementById("extrainfo").value;
	var nlowerLegend = popUpWin.document.getElementById("lowLegend").value;
	var nelink=popUpWin.document.getElementById("externalLink").value;
	var chops = nlink.split("\\");

	
	// containers
	var itemHeader =  thisItem.getElementsByTagName("div")[1];
		
	var headerName = itemHeader.getElementsByTagName("div")[0];	
	var headerLegend = itemHeader.getElementsByTagName("a")[1].lastChild;
	var legendLink = thisItem.getElementsByTagName("a")[1];
	
	try{
	var lowLegend = thisItem.getElementsByTagName("div")[3].lastChild;	
	var lowLegendLink = thisItem.getElementsByTagName("a")[2];
	var itemBody =  thisItem.getElementsByTagName("div")[4];
	lowLegend.innerHTML = nlowerLegend;	
	itemBody.innerHTML = ninfo;
	if(nelink != ""){
		if(nlink != ""){
			lowLegendLink.href = "download.php?file="+chops[chops.length-1];
		}else{
			lowLegendLink.href = nelink;	
		}
		
	}else{
		
		if(nlink != ""){
			lowLegendLink.href = "download.php?file="+chops[chops.length-1];
		}
		
	}
	
	
	}catch(err){
		// caso en el que el elemento de la lista es unico, no tiene extra info
		//alert(err.description);
	}

	headerName.innerHTML = nname;
	headerLegend.nodeValue = nlegend;		

	if(nelink != ""){
		if(nlink != ""){
			nlink = "download.php?file="+chops[chops.length-1];	
			legendLink.href = nlink;
		}else{
			legendLink.href = nelink;			
		}		
	}else{
		if(nlink != ""){
			nlink = "download.php?file="+chops[chops.length-1];	
			legendLink.href = nlink;
		}	
	}
			
	
}

function addListItem(pN){
	thisItem = pN;
	// 1. obtain the last listItem<i> 
	var itemContainer = pN;
	var itemI = null;
	var allDivs = pN.getElementsByTagName("div");
	var j = 0;
	var listString = "";
	for(i = 0 ; i < allDivs.length ; i++){
			
			if( (allDivs[i].id).search(/listItem(\d)+/) != -1 ){
				j++;	
			}
	}
	// 2. create a new listItem<i+1>

		listString += "<div id='listItem"+j+"' name='listItem"+j+"'>"; 

		
		listString += "<div id='buttonsListItem"+j+"'><input type='button' value='Editar' id='editListItem' onClick=\"editListItem(this.parentNode.getElementsByTagName('input')[0].value,this.parentNode.parentNode,false);\"><input type='button' value='Borrar' id='eraseListItem' onClick=\"eraseListItem(this.parentNode.getElementsByTagName('input')[0].value,this.parentNode.parentNode);\"></div><div id='listItemHeader'><div id='listItemHeaderName'>_titulo</div> " ; 					
		listString += " <a href='#' onClick='toggleListItemView(this.parentNode.parentNode)'> abrir</a> <a target='_blank' href='#'>_link</a> </div>";
		listString += "<div id='listItemBody' style='display:none'><div id='listItemBodyInfo'>_info</div><br>" + "<a target='_blank' href='#'>_link</a></div>";		
		listString += "</div>";
	
	// 3. add a new div to PN. After adding, must call editListItem with the correct object as parameter
	
		pN.innerHTML += listString;
		editListItem( "" ,pN.lastChild, true);
		
	// 4. if the user cancels, erase the element. 
	
}

function eraseListItem(id, parentNode){
	//alert(id + " > " + parentNode);
	thisItem = parentNode;	
	closeError();
	xml =  xmlserver+ "/xml/removeListItem.xml";	
	ajax.getNewResponse(xml,"post","id="+id,null,"removeListItem()");	
	
}

function removeListItem(){
	
		var obj = ajax.getXMLObj();
		try{
			//document.removeChild(thisItem);
			showError( obj.getElementsByTagName("message")[0].childNodes[0].nodeValue ) ;
			//showError( obj.getElementById("message")[0].childNode[0].nodeValue);
		 (thisItem.parentNode.removeChild(thisItem));
		}catch(err){

			//mozilla firefox doex what it needs to, but keeps an error.
			
		}


// does the same as when we try to add and then cancel. In this case, we've erased the item and then just have to take away the node.
}


// these next functions just have to update the xml string. Once all its done, the user saves the curriculum and that's all
function editCurriculumText(container){// just changes the interface
	closeError();
	var mypasttext = container.getElementsByTagName("div")[0].innerHTML;
	var mybutton = container.getElementsByTagName("div")[1];
	var textContainer = container.getElementsByTagName("div")[0];
	
	textContainer.innerHTML = "<div id='editCurriculumText'><textarea cols='70' rows='10'>"+mypasttext+"</textarea></div>";
	mybutton.innerHTML = "<div id='button' ><input type='button' name='changeCurriculumText' value='Guardar' onClick='saveCurriculumText(this.parentNode.parentNode.parentNode)'/><input type='button' name='cancelCurriculumText' value='Cancelar' onClick=\"cancelCurriculumText(this.parentNode.parentNode.parentNode, '"+mypasttext+"')\"/></div>";
}

function editCurriculumName(container){// just changes de interfase
		closeError();
	var mypasttext = container.getElementsByTagName("div")[0].innerHTML;
	var textContainer = container.getElementsByTagName("div")[0];
	var mybutton = container.getElementsByTagName("div")[1];

	textContainer.innerHTML = "<div id='editCurriculumName'><input size='50' value='"+mypasttext+"'></div>";
	mybutton.innerHTML="<div id='button' ><input type='button' name='changeCurriculumName' value='Guardar' onClick='saveCurriculumName(this.parentNode.parentNode.parentNode)'/><input type='button' name='cancelCurriculumName' value='Cancelar' onClick=\"cancelCurriculumName(this.parentNode.parentNode.parentNode,'"+mypasttext+"')\"/></div>";
}


function saveCurriculumName(container){
	closeError();
	var mytext = container.getElementsByTagName("input")[0].value;
	var textContainer = container.getElementsByTagName("div")[0];
	var mybutton = container.getElementsByTagName("div")[1];
	
	thisItem = container;	

	xml =  xmlserver+ "/xml/saveCurriculumName.xml";	

	ajax.getNewResponse(xml,"post","name="+mytext,null,"updateCurriculumName()");	
		
	}
	
function updateCurriculumName(){
	
	var obj = ajax.getXMLObj();	
	closeError();
	try{
	container = thisItem;
	var mytext = container.getElementsByTagName("input")[0].value;
	var textContainer = container.getElementsByTagName("div")[0];
	var mybutton = container.getElementsByTagName("div")[1];

	showError( obj.getElementsByTagName("message")[0].childNodes[0].nodeValue , null);

	container.innerHTML = "<div id='curriculumName'>" + mytext + "</div><div id='button' ><input type='button' name='changeCurriculumName' value='Cambiar' onClick='editCurriculumName(this.parentNode.parentNode)'/></div>";
	
	}catch(err){
		showError(" Error enviando nombre de curriculum ",err);
	}
	
	
}

function saveCurriculumText(container){

	closeError();

	var mytext = container.getElementsByTagName("textarea")[0].value;
	var textContainer = container.getElementsByTagName("div")[0];
	var mybutton = container.getElementsByTagName("div")[1];
	
	
	thisItem = container;	


	xml =  xmlserver+ "/xml/saveCurriculumText.xml";	
	ajax.getNewResponse(xml,"post","text="+mytext,null,"updateCurriculumText()");	


	}
	
function updateCurriculumText(){

	var obj = ajax.getXMLObj();	
	closeError();
	try{
	container = thisItem;
	var mytext = container.getElementsByTagName("textarea")[0].value;
	var textContainer = container.getElementsByTagName("div")[0];
	var mybutton = container.getElementsByTagName("div")[1];

	showError( obj.getElementsByTagName("message")[0].childNodes[0].nodeValue , null);

	container.innerHTML = "<div id='curriculumText'>" + mytext + "</div><div id='button' ><input type='button' name='changeCurriculumText' value='Cambiar' onClick='editCurriculumText(this.parentNode.parentNode)'/></div>";
	
	}catch(err){
		showError(" Error enviando texto de curriculum ",err);
	}

}

function cancelCurriculumName(container, text){
	closeError();
	var mytext = container.getElementsByTagName("input")[0].value;
	var textContainer = container.getElementsByTagName("div")[0];
	var mybutton = container.getElementsByTagName("div")[1];
	
	container.innerHTML = "<div id='curriculumName'>" + text + "</div><div id='button' ><input type='button' name='changeCurriculumName' value='Cambiar' onClick='editCurriculumName(this.parentNode.parentNode)'/></div>";

	}

function cancelCurriculumText(container, text){
	closeError();
	var mytext = container.getElementsByTagName("input")[0].value;
	var textContainer = container.getElementsByTagName("div")[0];
	var mybutton = container.getElementsByTagName("div")[1];

	container.innerHTML = "<div id='curriculumName'>" +text+ "</div><div id='button'><br/><input type='button' name='changeCurriculumText' value='Cambiar' onClick='editCurriculumText(this.parentNode.parentNode)'/></div>";


	}


function editResearchItem(type, parentNode, newOne){
	// get the text and link
	closeError();

	var text = parentNode.getElementsByTagName("a")[0].innerHTML;
	var link = parentNode.getElementsByTagName("a")[0].href;
	var div = parentNode.getElementsByTagName("div")[0];
	var buttonsContainer = parentNode.getElementsByTagName("td")[0];
	var id = parentNode.getElementsByTagName("input")[0].value;

	//alert(div + " / " + text + ";" + link);
	// put the inputs
	div.innerHTML = "<input type='hidden' value='"+type+"' name='itemText'><input type='text' value='"+text+"' name='itemText'><br><input type='text' value='"+link+"' name='itemLink'>";
	
	if(newOne)
	buttonsContainer.innerHTML = "<input type='button' value='Guardar' onClick=\"saveResearchItem('"+type+"','"+id+"',this.parentNode.parentNode)\"><input type='button' value='Cancelar' onClick=\"this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode)\">";
	else
	buttonsContainer.innerHTML = "<input type='button' value='Guardar' onClick=\"saveResearchItem('"+type+"','"+id+"',this.parentNode.parentNode)\"><input type='button' value='Cancelar' onClick=\"cancelEditResearchItem(this.parentNode.parentNode,'"+text+"','"+link+"','"+type+"')\">";

}

function cancelEditResearchItem(parentNode, pretext, prelink, pretype){


	closeError();
	var div = parentNode.getElementsByTagName("div")[0];
	var text = div.getElementsByTagName("input")[1].value;
	var link = div.getElementsByTagName("input")[2].value;	
	var buttonsContainer = parentNode.getElementsByTagName("td")[0];
	var id = parentNode.getElementsByTagName("input")[0].value;
	var type= div.getElementsByTagName("input")[0].value;

	div.innerHTML = "<a target='_blank' href='"+prelink+"'>"+pretext+"</a>";
	buttonsContainer.innerHTML = "<input type='hidden' id='thisId' name='thisId' value='"+id+"'><input type='button' value='Editar' onClick=\"editResearchItem('"+pretype+"',this.parentNode.parentNode);\"/><input type='button' value='Borrar' onClick=\"eraseResearchItem('"+pretype+"',this.parentNode)\"/>";


}

function addResearchItem(type, parentNode){
	
	closeError();
	
	var tableDataOne = document.createElement("TD");
	var tableDataTwo = document.createElement("TD");
	var tableRow = document.createElement("TR");	
	
	tableDataOne.innerHTML = "<input type='hidden' id='thisId' name='thisId' value=''><input type='button' name='editItem' value='Editar' onClick=\"editResearchItem('"+type+"', this.parentNode.parentNode)\"/><input type='button' name='eraseItem' value='Borrar' onClick='this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode)'/>";
	
	tableDataTwo.innerHTML = "<div id='researchItem'><a target='_blank' href='#'>-link-</a></div>";	

	tableRow.appendChild(tableDataOne);
	tableRow.appendChild(tableDataTwo);	
	parentNode.appendChild(tableRow);		
	editResearchItem(type, tableRow, true);	
}

function saveResearchItem(type, idtosave,parentNode){
	closeError();
	pretypeForButtons = type;
	var div = parentNode.getElementsByTagName("div")[0];
	var text = div.getElementsByTagName("input")[1].value;
	var link = div.getElementsByTagName("input")[2].value;	
	var id = parentNode.getElementsByTagName("input")[0].value;
	
	thisItem = parentNode;	

	xml =  xmlserver+ "/xml/saveResearchItem.xml";	
	ajax.getNewResponse(xml,"post","id="+id+"&text="+text+"&link="+link,null,"updateResearchItem()");	
	
}

function updateResearchItem(){
	// verificar que no haya errores?	
	// returns the Id of the updated Entry
	
	var obj = ajax.getXMLObj();
	
	try{
		
		closeError();
		
		var parentNode = thisItem;
		var div = parentNode.getElementsByTagName("div")[0];
		var text = div.getElementsByTagName("input")[1].value;
		var link = div.getElementsByTagName("input")[2].value;	
		var id = obj.getElementsByTagName("transactionData")[0].getElementsByTagName("id")[0].childNodes[0].nodeValue;
		var buttonsContainer = parentNode.getElementsByTagName("td")[0];

	div.innerHTML = "<a target='_blank' href='"+link+"'>"+text+"</a>";
	buttonsContainer.innerHTML = "<input type='hidden' id='thisId' name='thisId' value='"+id+"'><input type='button' value='Editar' onClick=\"editResearchItem('"+pretypeForButtons+"',this.parentNode.parentNode);\"/><input type='button' value='Borrar' onClick=\"eraseResearchItem('"+pretypeForButtons+"',this.parentNode)\"/>";

	}catch(err){
		showError(" Error en la carga de informacion/ ",err);	
	}
	
}

function eraseResearchItem(type, parentNode){
	// has to call the php to erase the item
	
closeError();

	var text = parentNode.getElementsByTagName("a")[0].innerHTML;
	var link = parentNode.getElementsByTagName("a")[0].href;
	var div = parentNode.getElementsByTagName("div")[0];
	var buttonsContainer = parentNode.getElementsByTagName("td")[0];
	var id = parentNode.getElementsByTagName("input")[0].value;
	
	thisItem = parentNode;	

	xml =  xmlserver+ "/xml/removeResearchItem.xml";	
	ajax.getNewResponse(xml,"post","id="+id,null,"removeResearchItem()");	
		
	
}

function removeResearchItem(){
	// has to remove the item from the list
	var obj = ajax.getXMLObj();
		try{
			//document.removeChild(thisItem);
			showError( obj.getElementsByTagName("message")[0].childNodes[0].nodeValue ) ;
			//showError( obj.getElementById("message")[0].childNode[0].nodeValue);
		 (thisItem.parentNode.removeChild(thisItem));
		}catch(err){

			//mozilla firefox doex what it needs to, but keeps an error.
			
		}
}