//la siguiente variable hay que cambiarla si cambia la ruta de la aplicaci?n
var PATH = "/DigitalShop";	//servidor
//var PATH = "/DigitalShop/dev/DigitalShop_fran_nuevo"; //fran servidor dev
//var PATH = "/digitalShop/DigitalShop/src/main/webapp"; //fran. local


/*..............LOG
	-2008-10-09.Mod.Francisco Dominguez. Añadida nueva funcion "download_track" para descargar las pistas cuando se licencia un proyecto. Más q nada para no tocar la q estaba. En realidad es un copy-paste modificando un poco.
	-2008-12-03.Mod.Francisco Dominguez. Añadida nueva funcion "download_track_mp3_baja" para la descargas de pistas del reproductor flash.
*/


//muestra la capa para renombrar el proyecto
function showRenameProject(p_id){
	document.getElementById("project_id").value=p_id;
	document.getElementById("renProject").style.visibility = "visible";
	document.getElementById("renProject").style.position="absolute";
	document.getElementById("renProject").style.left=coordinateX+"px";
	document.getElementById("renProject").style.top=coordinateY+"px";
}

//captura la opcion nueva y l envia
function setNewLang(lang){
	document.getElementById('newLang').value=lang;
	document.getElementById('chLang').submit();
}

//comprueba en que parte del escaparate estamos y deuvelve el largode cadena adecuado para el nombre del proyecto
function evalProjectLength(){
	if ( (document.location.toString().indexOf("proManagement")) > (-1) ){
		return 25;
	}
	else{
		return 20;
	}
}

//carga la pagina de detalles para un proyecto
function OpenProject(p_id){
	location.replace(PATH+"/projectDetail.php?prj_id="+p_id);
}

//redirige a la pagina de compartir proyecto.
function ShareProject(p_id){
	if (p_id)
		location.replace(PATH+"/shareProject.php?prj_id="+p_id);
	else
		location.replace(PATH+"/shareProject.php?prj_id="+document.getElementById('formProjectOptions').project_id.value);
}

//redirige a la pagina de licenciamiento.
function LicenseProject(p_id){	
	if (p_id)
		location.replace(PATH+"/licenseProject.php?prj_id="+p_id);
	else
		location.replace(PATH+"/licenseProject.php?prj_id="+document.getElementById('formProjectOptions').project_id.value);
}

//redirige a la pantalla de licenciamiento.
function goBackToLicenseProject(p_id){
	location.replace(PATH+"/licenseProject.php?prj_id="+p_id);
}

//comprueba que el campo del email este bien formado.
function checkMail(v){
//	if (!eMail) return false;
//	var arroba = eMail.indexOf('@');
    if ((v == null) || (v.length == 0)) {
        return false;
    }
    
//	var point = eMail.indexOf('.');
    var regexp = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
    return regexp.test(v);
}

//recoge la informaci?n del formulario de 'compartir proyecto' para reformatearlo adecuadamente para su envio
function getShareInfo(){
	var i = 1;
	var checkedTracks = 0;
	var actualCheckBox = 'checkBox_';
	var actualTitle = 'TrackTitle_';
	var actualID ='TrackID_';
	var actualContent = "";

	if (checkMail(document.getElementById('shareProjectEMail').value)){		

		while(document.getElementById(actualCheckBox + i)){
			if (document.getElementById(actualCheckBox + i).checked){            
                var idTitle=actualTitle + i;
                var element=document.getElementById(idTitle)
				actualContent += element.firstChild.nodeValue;
				actualContent += '#';
				actualContent += document.getElementById(actualID + i).value;
				actualContent += '##';	
				checkedTracks++;
			}
			i++;
		}		
		
		actualContent = actualContent.substring(0,actualContent.length-2);
		
		if (checkedTracks){		
			document.getElementById('content').value = actualContent;		
			document.getElementById('sendMailForm').submit();
		}
		else{
			/* NINGUNA CANCI?N COMPARTIDA */
			showErrorWindow(ERROR_0001);  
			return;
		}
	}// If mail
	else{
		/* E-MAIL VACIO O NO V?LIDO */
		showErrorWindow(ERROR_0002);
		return;
	}
}

//recoge la informaci?n necesaria para enviar un correo.
function getMailInfo(){	
	
	if (checkMail(document.getElementById('shareProjectEMail').value)){
		document.getElementById('sendMailForm').submit();
	}
	else{
		/* E-MAIL VACIO O NO V?LIDO */
		showErrorWindow(ERROR_0002);
		return;
	}
}

//recoge la informacion para que un usuario anonimo que ha intentado hacer un licenciamiento mande un correo solicitando una cuenta.
function getAnonyLicenseInfo(){
	var actualContent = "";
	var name = document.getElementById('AccountName').value;
	var pass = document.getElementById('AccountPass').value;
		
	if (name && name.length > 0)
		actualContent = DESIRED_NAME+": "+name;
	else{
		/* NOMBRE PARA LA CUENTA VACIO */
		showErrorWindow(ERROR_0003);
		return;
	}
	
	if (pass && pass.length > 0)
		actualContent = actualContent+"<br>"+DESIRED_PASSWORD+": "+pass;
	else{
		/* EL PASSWORD DE LA CUENTA VACIO */
		showErrorWindow(ERROR_0004);
		return;
	}
	
	if (checkMail(document.getElementById('shareProjectEMail').value)){
			document.getElementById('content').value = actualContent;
			document.getElementById('sendMailForm').submit();
	}
	else{
		/* E-MAIL VACIO O NO V?LIDO */
		showErrorWindow(DS_ERROR_0002);
		return;
	}
	
}

//a?ade una obra a un proyecto
function AddTrackToProject(p_id){	
	remoteAddDraggableTrack("_"+document.getElementById('formAddTrack').track_id.value,p_id);
}

//elimina una obra de un proyecto
function deleteTrack(p_id,t_id){
	remoteDeleteTrack(p_id,t_id);
}

//"DEPRECATED" a?ade una obra que ha sido arrastrada desde un proyecto a otro con drag and drop
function addDraggableTrack(track,project,project2) {
	if (project2!=null) 
		document.getElementById('formAddTrack').project_id2.value=project2;	
		
	document.getElementById('formAddTrack').track_id.value= track.substring(2,track.length);
	document.getElementById('formAddTrack').project_id.value=project;	
	document.getElementById('formAddTrack').submit();
}

//borra una obra de un proyecto con ajax
function remoteDeleteTrack(p_id,t_id){
	showLoadingGif();
	dojo.require("dojo.io.*");	
	var bindArgs = {
	    url:       	PATH+"/deleteTrack.php",
	    method: 	"POST",
	    content:	{ track_id: t_id, prj_id:p_id},    					    					
	    load:      	function(type, data, evt){   		
	    
	    				var temp=data.split("##");
	    				if(temp[0] == "error"){ 
    						showErrorWindow(temp[1]);
   							showLoadingGif();
    						return;
    					}	    		
	    		
	    				document.getElementById("_project"+p_id).removeChild(document.getElementById(p_id+"-"+t_id));	

	    				var MainNode = document.getElementById('td_'+t_id);							
	    				if (MainNode) {
		    				for (var i=0; i<MainNode.childNodes.length; i++){
	  							var attributeNode = MainNode.childNodes[i].attributes;
	 							if (attributeNode){
		 							var actualItem = attributeNode.getNamedItem('id').nodeValue;
		 							if ( actualItem == '_color_'+p_id){
		 								MainNode.removeChild(MainNode.childNodes[i]);
		 								i = MainNode.childNodes.length;
		 							}	 								
		 						}
	  						}
	  					}
						//Si el origen se queda sin pistas aniadimos la capa de "No hay pistas"
						var ulLayer = document.getElementById("_project"+p_id);
						if (ulLayer.getElementsByTagName('a').length==0) {
							var NoTrackList = document.createElement("div");
								NoTrackList.id  = "noTracks"+p_id;
							var	TrackListTxt	= document.createTextNode(NO_TRACKS);							
							NoTrackList.appendChild(TrackListTxt);
							ulLayer.appendChild(NoTrackList);
						}
						showLoadingGif();
	    				},
	    error:		function(type, error) {
	    	alert(String(type) + ' -- ' + String(error));
    		showLoadingGif();}
		};
	var requestObj = dojo.io.bind(bindArgs);
}
/** remoteAddProject
	This function is used to make an AJAX call, and postproccess the data returned by it.
	input: project_name, it is the name that the user writes for the new project.
	output: it creates the new DOM elements and appends them where necesary.
*/ 

function remoteAddProject(project_name){
	showLoadingGif();
	dojo.require("dojo.io.*");	
	var bindArgs = {
	    url:       	PATH+"/addProject.php",
	    method: 	"POST",
	    content:	{ PrjName: project_name },
	    load:      	function(type, data, evt){
	    
							
						if(document.getElementById("nProjects")!=null)
							document.getElementById("nProjects").value ++;
						
	    				var temp=data.split("##");
	    				if(temp[0] == "error"){ 
	    					showErrorWindow(temp[1]);
	    					showLoadingGif();
	    					return;
	    				}
	    				project_name=project_name.substr(0,evalProjectLength());
	    				var prj_id=parseInt(temp[1]);
	    				var prj_color="white";
	    				var prj_ids=new Array();
	    				prj_ids = temp[0].split("#");	    				
	    				//var prj_id=data;
	    				var ulPrjs = document.getElementById('ulPrjs');
	    				//para determinar si estamos en la pantalla de Mantenimiento de proyectos
	    				if (ulPrjs) {
	    					// variables para los elementos que necesitaremos a?adir
	    					var li 		= document.createElement('li');
	    					var table 	= document.createElement('table');
							var tr = document.createElement('tr');
							var td = document.createElement('td');							
							var a  = document.createElement('a');
							var Img		= document.createElement('img');							
							var	Txt =	document.createTextNode(project_name);
							
								// vamos creando la tabla y la primera columna	
	    						table.width		= "302px";							
	    						li.className 	= "project";							
	    						li.id			= "open_"+prj_id;
								td.width	= "302px";
								a.href		= "javascript:OpenProject('"+prj_id+"')";
								a.id		= "prjName_"+prj_id;

								td.appendChild(a);							
								a.appendChild(Txt);
								tr.appendChild(td);


								// la segunda columna
								td = document.createElement('td');							
								a  = document.createElement('a');
								td.width	= "35px";
								a.href		= "javascript:showRenameProject('"+prj_id+"');";

								if (iExplorer){
									a.onmouseover = function(){return overlib(RENAME_PROJECT+' '+project_name);};
									a.onmouseout = function(){return nd();};
									a.onclick = function(){return nd();};
								}
								else{
									a.addEventListener('mouseover', function(){return overlib(RENAME_PROJECT+' '+project_name);}, true);
									a.addEventListener('mouseout', function(){return nd();}, true);																												
									a.addEventListener('click', function(){return nd();}, true);
								}		
																						
								Img			= document.createElement('img');
								Img.src		= PATH+"/img/modificar.gif";
								Img.border	= "0";
								Img.height	= "11";
								Img.width	= "11";								
								
								a.appendChild(Img);
								td.appendChild(a);
								tr.appendChild(td);

								table.appendChild(tr);
								li.appendChild(table);
								ulPrjs.appendChild(li);

								// la tercera columna
								td = document.createElement('td');							
								a  = document.createElement('a');
								td.width	= "13px";
								a.href		= "javascript:deleteProject('"+prj_id+"');";

								if (iExplorer){
									a.onmouseover = function(){return overlib(DELETE_PROJECT+' '+project_name);};
									a.onmouseout = function(){return nd();};
									a.onclick = function(){return nd();};
								}
								else{
									a.addEventListener('mouseover', function(){return overlib(DELETE_PROJECT+' '+project_name);}, true);
									a.addEventListener('mouseout', function(){return nd();}, true);																												
									a.addEventListener('click', function(){return nd();}, true);
								}																

								Img			= document.createElement('img');
								Img.src		= PATH+"/img/borrar.gif";
								Img.border	= "0";
								Img.height	= "11";
								Img.width	= "11";								
								
								a.appendChild(Img);
								td.appendChild(a);
								tr.appendChild(td);

								table.appendChild(tr);
								li.appendChild(table);
								ulPrjs.appendChild(li);				
								
								
	    				} 
	    				else {
		    				//Creating OuterDiv..
		    				var Div = document.createElement('div');
								Div.id			= prj_id;
								Div.className	= "projectWin";
								Div.style.position	= "relative";
							//Creating HeaderDiv..
							var HeaderDiv = document.createElement('div');
								HeaderDiv.className	= "STheader";
								HeaderDiv.id	= "prj_"+prj_id;
							var temp = "_project"+prj_id.toString();

							if (iExplorer){
								HeaderDiv.onclick = function(){showProject(temp);};
							}
							else{
								HeaderDiv.setAttribute('onclick',"javascript:showProject('"+temp+"')");																						
							}																							
							
							Div.appendChild(HeaderDiv);
							//Creating Colora
							/*var ColorA = document.createElement('a');
								ColorA.href	= "javascript:assignColor("+prj_id+");";
							HeaderDiv.appendChild(ColorA);*/
							//Creating ColorImg
							var ColorImg = document.createElement('img');
								ColorImg.id					= "color_"+prj_id;
								ColorImg.border				= "1";
								ColorImg.style.width		= "10";
								ColorImg.style.height		= "10";
								ColorImg.src				= PATH+"/img/colorSelect.gif";
								ColorImg.style.background	= prj_color;//<<==AQUI HAY QUE METER EL COLOR QUE SEA!!
							HeaderDiv.appendChild(ColorImg);
							//Creating PrjNameTxt
							var PrjNameTxt	= document.createTextNode(" "+project_name);
							HeaderDiv.appendChild(PrjNameTxt);
												
							//Creating TrackList
							var TrackList = document.createElement('div');
								TrackList.id	= "_project"+prj_id;
								TrackList.className	= "track paddindBottom";
								TrackList.style.display	= "none";
							
							//Insertamos "No hay pistas" en TrackList
							var NoTrackList = document.createElement("div");
								NoTrackList.id  = "noTracks"+prj_id;
							var	TrackListTxt	= document.createTextNode(NO_TRACKS);							

							NoTrackList.appendChild(TrackListTxt);
							TrackList.appendChild(NoTrackList);
							Div.appendChild(TrackList);							
							
							//Inserting the complete tag Div at the end of RightProjects
							var RightProjects;
							if (document.getElementById('RightProjects')) 
								RightProjects = document.getElementById('RightProjects');
							else {//no existe ningun projecto y debemos construir el div padre
								RightProjects 	= document.createElement('div');
								RightProjects.id= "RightProjects";
							document.getElementById("RightButtons").removeChild(document.getElementById("noPrjs"));
							}
							RightProjects.appendChild(Div);
							document.getElementById("RightButtons").appendChild(RightProjects);

							
							
							/*ADDS THE NEW PROJECT TO THE PROJECTS POP UP FROM ADDTOMYMUSIC LINK*/
							//Creating OuterDiv..
							if (document.getElementById("noaddproject")){
								document.getElementById("noaddproject").parentNode.removeChild(document.getElementById("noaddproject"));
							}
		    				var ProjectsDiv = document.createElement('div');	    				
		    				//Creating AddProjectA
							var AddProjectA = document.createElement('a');
								AddProjectA.href	= "javascript:AddTrackToProject("+prj_id+");";
		    				//Creating PrjNameTxt
							var PrjNameTxt2	= document.createTextNode(project_name.substr(0,14));
							AddProjectA.appendChild(PrjNameTxt2);
							ProjectsDiv.appendChild(AddProjectA);
							document.getElementById("formAddTrack").appendChild(ProjectsDiv);
							
							//*Creation of the 'Options' Div with the link and the correspindig js calls in it*//							
							var ShareDiv = document.createElement('div');
								ShareDiv.setAttribute("id","Share");	
								
							var elementA = document.createElement('a');
								elementA.setAttribute("id","options");
								elementA.setAttribute("href","javascript:showLayerOnMousePosition('projectOptionsDiv'); showProjectOptions('"+prj_id+"');");							
								
								if (iExplorer){
									elementA.onmouseover = function(){return overlib(SEE_MORE_OPTIONS+'...',LEFT);};
									elementA.onmouseout = function(){return nd();};
								}
								else{
									elementA.addEventListener('mouseover', function(){return overlib(SEE_MORE_OPTIONS+'...',LEFT);}, true);
									elementA.addEventListener('mouseout', function(){return nd();}, true);																						
								}								
								
							ShareDiv.appendChild(elementA);
							//Creating text for the option
							var Txt =	document.createTextNode(OPTIONS);
								elementA.appendChild(Txt);
							/*End Creating the optoins link*/
							
							Div.appendChild(ShareDiv);

							//Borramos la capa de No projects si existe, ya que acabamos de a?adir uno nuevo
							var noPrjs = document.getElementById("noPrjs");
							if (noPrjs) 
								document.getElementById("RightButtons").removeChild(noPrjs);

							//Adding new trash to 'draggable' objects
							prj_id_str = prj_id.toString();						
							
							if ((prj_ids.length==1) && (prj_ids[0]=="")) {
								if (document.getElementById('title')!=null) 
									Droppables.add(prj_id_str,{accept: 'CDtitle', onDrop: function(element) { remoteAddDraggableTrack(element.id,prj_id_str,null); },hoverclass:'projectWinHover'});
							} 
							else  {
								for (var i=0;i<prj_ids.length;i++){
									actual_id = prj_ids[i];
									Droppables.add(prj_id_str,{accept: prj_ids[i].toString()+"_trackClass", onDrop: function(track,prj_id_str) { remoteAddDraggableTrack(track.id,prj_id_str.id,track.id.substring(0,track.id.indexOf("_"))); },hoverclass:'projectWinHover'});
								}
							
								if (document.getElementById('title')!=null) {
									Droppables.add(prj_id_str,{accept: 'CDtitle', onDrop: function(element) { remoteAddDraggableTrack(element.id,prj_id_str,null); },hoverclass:'projectWinHover'});
								}
									
								for (var i=0;i<prj_ids.length;i++){
									var str_id = prj_ids[i].toString();
									Droppables.add(str_id,{accept: prj_id_str+"_trackClass", onDrop: function(element,str_id) { remoteAddDraggableTrack(element.id,str_id.id,prj_id); },hoverclass:'projectWinHover'});							
								}
							}
						}
						showLoadingGif();

						if(document.getElementById("track_ceroProjects").value!=0)
						{
							document.getElementById('formAddTrack').track_id.value=document.getElementById("track_ceroProjects").value;
							AddTrackToProject(prj_id);
							document.getElementById("track_ceroProjects").value=0;
						}

						
	    				},
	    error:		function(type, error) {
	    	alert(String(type) + ' -- ' + String(error));
	    	showLoadingGif();}	    
		};
	var requestObj = dojo.io.bind(bindArgs);
}

//a?ade una obra a un proyecto an?nimo.
function remoteAddTrackAnony(track)
{
	showLoadingGif();
	var ulPrjs = document.getElementById('RightButtons');

	//no existe el panel de proyectos
	if (!ulPrjs) {
		
	    //create Div superior
		var GlobalDiv=document.createElement('div');
		GlobalDiv.id="RightButtons";
		
		//create HeaderDiv
		var HeaderDiv=document.createElement('div');
		HeaderDiv.id="STdivOuter";
		
		GlobalDiv.appendChild(HeaderDiv);
		
		//create SubHeaderDiv
		var SubHeaderDiv=document.createElement('div');
		SubHeaderDiv.className="Pheader";
		
		var Txt=document.createTextNode(PROJECTS_INFORMATION);
		SubHeaderDiv.appendChild(Txt);
		HeaderDiv.appendChild(SubHeaderDiv);
		
		//global de proyectos
		var BodyDiv=document.createElement('div');
		BodyDiv.id="RightProjects";
		
		//subcapa de proyectos
		var ProjectDiv=document.createElement('div');
		ProjectDiv.id="anony";
		ProjectDiv.className="projectWin";
		
		//capa de proyectos
		var PrjDiv=document.createElement('div');
		PrjDiv.className="STheader";
		
		var TxtPrj=document.createTextNode(MY_PROJECT);
		
		
		//color para el proyecto
		var Colora=document.createElement('a');
		Colora.href="javascript:assignColor('anony');";
		
		
		
		var ColorImg=document.createElement('img');
		ColorImg.id="color_anony";
		ColorImg.border="1";
		ColorImg.width="10";
		ColorImg.height="10";
		ColorImg.src=PATH+"/img/colorSelect.gif";
		ColorImg.style.background="#FF0000";
		
		Colora.appendChild(ColorImg);
		PrjDiv.appendChild(Colora);
		PrjDiv.appendChild(TxtPrj);
		
		ProjectDiv.appendChild(PrjDiv);
		
		//GlobalDiv.appendChild(ProjectDiv);
		BodyDiv.appendChild(ProjectDiv);
		GlobalDiv.appendChild(BodyDiv);
		
		//ul de track para el proyectos
		var ul=document.createElement('div');
		ul.id="_projectanony";
		ul.className="track paddindBottom";
		
		ProjectDiv.appendChild(ul);
		
		document.getElementsByTagName("body")[0].appendChild(GlobalDiv);
		
		//Creating Share Div
		var ShareDiv = document.createElement('div');
			ShareDiv.setAttribute("id","Share");							
		
		//Creating shareProject a
		var elementA = document.createElement('a');
			elementA.setAttribute("id","shareProject");
			elementA.setAttribute("href","javascript:ShareProject('anony');");							
			
			if (iExplorer){
				elementA.onmouseover = function(){return overlib(CLICK_SHARE_ANONIMOUS);};
				elementA.onmouseout = function(){return nd();};
			}
			else{
				elementA.addEventListener('mouseover', function(){return overlib(CLICK_SHARE_ANONIMOUS);}, true);
				elementA.addEventListener('mouseout', function(){return nd();}, true);																						
			}								
			
			ShareDiv.appendChild(elementA);
			//Creating text for the shareProject
		var Txt =	document.createTextNode(SHARE);
			elementA.appendChild(Txt);

		//Creating licenseProject a
			elementA = document.createElement('a');							
			elementA.setAttribute("id","licenseProject");
			elementA.setAttribute("href","javascript:LicenseProject('anony');");							
			
			if (iExplorer){
				elementA.onmouseover = function(){return overlib(CLICK_LICENSE_ANONIMOUS);};
				elementA.onmouseout = function(){return nd();};
			}
			else{
				elementA.addEventListener('mouseover', function(){return overlib(CLICK_LICENSE_ANONIMOUS);}, true);
				elementA.addEventListener('mouseout', function(){return nd();}, true);																						
			}								
		
			ShareDiv.appendChild(elementA);
			//Creating text for the shareProject
			Txt =	document.createTextNode(LICENSE);
			elementA.appendChild(Txt);
			
			ProjectDiv.appendChild(ShareDiv);
		
		if (document.getElementById('title')!=null)
			Droppables.add('anony',{accept: 'CDtitle', onDrop: function(element) { remoteAddDraggableTrack(element.id,'anony',null); },hoverclass:'projectWinHover'});	
	}// if !prj
		remoteAddDraggableTrack('_'+track,'anony',null);
	showLoadingGif();
		
}


/** remoteAddDraggableTrack
	This function is used to make an AJAX call, and postproccess the data returned by it.
	input: project and project2, these are src and dst id if both have a value, if only 
	project has a value then it's the dst id.
	output: it creates the new DOM elements and appends them where necesary.
*/ 
function remoteAddDraggableTrack(track,project,project2){

	showLoadingGif();
	var dstPrjId=null;
	var srcPrjId=null;	
	if (project2!=null){				
		srcPrjId=project;
		dstPrjId=project2;
	}
	else{
		srcPrjId=project;
		dstPrjId=project;
	}
	dojo.require("dojo.io.*");

	if (srcPrjId!=dstPrjId){//Drag's a track from a project to another project
		var bindArgs = {
		    url:       	PATH+"/addToMyMusic.php",
		    method: 	"POST",
		    content:	{ track_id: track.substring(track.indexOf('_')+1,track.length), project_id:srcPrjId, project_id2: dstPrjId},
		    load:      	function(type, data, evt){
		    				var temp=data.split("##");
		    				if(temp[0] == "error"){ 
	    						showErrorWindow(temp[1]);
	    						showLoadingGif();
	    						return;
	    					}
		    				
		    				document.getElementById("_project"+srcPrjId).appendChild(document.getElementById(dstPrjId+"-"+track.substring(track.indexOf('_')+1,track.length)));
		    				document.getElementById(dstPrjId+"_"+track.substring(track.indexOf('_')+1,track.length)).className=srcPrjId+"_trackClass";
		    				document.getElementById(dstPrjId+"_"+track.substring(track.indexOf('_')+1,track.length)).id=srcPrjId+"_"+track.substring(track.indexOf('_')+1,track.length);		    				
		    				document.getElementById(dstPrjId+"-"+track.substring(track.indexOf('_')+1,track.length)).id=srcPrjId+"-"+track.substring(track.indexOf('_')+1,track.length);
		    				document.getElementById("Link"+dstPrjId+"-"+track.substring(track.indexOf('_')+1,track.length)).href="javascript:deleteTrack("+srcPrjId+",'"+track.substring(track.indexOf('_')+1,track.length)+"');";
		    				document.getElementById("Link"+dstPrjId+"-"+track.substring(track.indexOf('_')+1,track.length)).id="Link"+srcPrjId+"-"+track.substring(track.indexOf('_')+1,track.length);		    										
							
							//Creating Color Img...
							var ColorImg = document.createElement('img');
							ColorImg.id = '_color_'+srcPrjId;
							ColorImg.border = "1";
							ColorImg.style.width="10";
							ColorImg.style.height="10";
							ColorImg.src="./img/colorSelect.gif";							
							ColorImg.style.background = document.getElementById('color_'+srcPrjId).style.background;														
							
							var MainNode = null;								
							if (document.getElementById('td_'+track.substring(dstPrjId.toString().length+1,track.length))){
								MainNode = document.getElementById('td_'+track.substring(dstPrjId.toString().length+1,track.length));
	  							for (var i=0; i<MainNode.childNodes.length; i++){
	  								var attributeNode = MainNode.childNodes[i].attributes;
	 								if (attributeNode){
		 								var actualItem = attributeNode.getNamedItem('id').nodeValue;
		 								if ( actualItem == '_color_'+dstPrjId){
		 									MainNode.removeChild(MainNode.childNodes[i]);
		 									i = MainNode.childNodes.length;
		 								}	 								
		 							}
	  							}
	  						}
  													
							var SpaceText = document.createTextNode(' ');										
							if (MainNode!=null){
								MainNode.insertBefore(ColorImg,MainNode.firstChild);	
								MainNode.insertBefore(SpaceText,MainNode.firstChild);	
							}						

							//Si el origen se queda sin pistas a?adimos la capa de "No hay pistas"
							var ulLayer = document.getElementById("_project"+dstPrjId);
							if (ulLayer.getElementsByTagName('a').length==0) {
								var NoTrackList = document.createElement("div");
									NoTrackList.id  = "noTracks"+dstPrjId;
								var	TrackListTxt	= document.createTextNode(NO_TRACKS);							
								NoTrackList.appendChild(TrackListTxt);
								ulLayer.appendChild(NoTrackList);
							}
							
							//Borramos la capa de No hay pistas si existe, ya que acabamos de a?adir uno nuevo
							var NoTraPrjs = document.getElementById("noTracks"+srcPrjId);
							if (NoTraPrjs) 
								document.getElementById("_project"+srcPrjId).removeChild(NoTraPrjs);
							showLoadingGif();	
		    				},
		    error:		function(type, error) {
		    	alert(String(type) + ' -- ' + String(error));
		    	showLoadingGif();}	    
			};
		var requestObj = dojo.io.bind(bindArgs);		
	}
	else{//Drag's a title from a search list => srdPrjId == dstPrjId
		var bindArgs = {
		    url:       	PATH+"/addToMyMusic.php",
		    method: 	"POST",
		    content:	{ track_id: track.substring(track.indexOf('_')+1,track.length), project_id:srcPrjId, project_id2: dstPrjId},
		    load:      	function(type, data, evt){
		    				var temp=data.split("##");
		    				if(temp[0] == "error"){ 
	    						showErrorWindow(temp[1]);
	    						showLoadingGif();
	    						return;
	    					}
							
		    				var temp_data = data.split("#");
		    				var track_title = temp_data[0];
		    				var track_id = temp_data[3];
		    				var track_reference = temp_data[2];
		    				var track_description = temp_data[1];
							//Creating Div..
							var Div = document.createElement('div');
							Div.id 	= dstPrjId+"-"+track.substring(1,track.length);
							//Creating 1st Link (delete)..
							var Dela 			= document.createElement('a');
							Dela.id				= "Link"+dstPrjId+"-"+track.substring(1,track.length);
							Dela.href			= "javascript:deleteTrack('"+dstPrjId+"','"+track.substring(1,track.length)+"');";

							if (iExplorer){
								Dela.onmouseover = function(){return overlib(DELETE_CLICK+' '+track_title);};
								Dela.onmouseout = function(){return nd();};
								Dela.onclick = function(){return nd();};
							}
							else{
								Dela.addEventListener('mouseover', function(){return overlib(DELETE_CLICK+' '+track_title);}, true);
								Dela.addEventListener('mouseout', function(){return nd();}, true);																												
								Dela.addEventListener("click", function(){return nd();}, true);																
							}							
							
							Div.appendChild(Dela);
							//Creating image for delete link..
							var Img		= document.createElement('img');
							Img.src		= PATH+"/img/borrar.gif";
							Img.border	= "0";
							Img.height	= "11";
							Img.width	= "11";
						
							Dela.appendChild(Img);
							//Creating Track Link..
							var Trka 			= document.createElement('a');
							Trka.id				= dstPrjId+"_"+track.substring(1,track.length);
							Trka.href			= "javascript:void(0);";
							
							if (iExplorer){
								//Trka.onmouseover = function(){return overlib(TRACK+': '+track_id+'<br>'+CD_REFERENCE+': '+track_reference+'<br>'+DESCRIPTION+': '+track_description);};
								Trka.onmouseover = function(){return overlib(DS_REFERENCE_CUT+': '+track_id);};								
								Trka.onmouseout = function(){return nd();};
								Trka.onclick = function(){return nd();};
							}
							else{
//								Trka.addEventListener('mouseover', function(){return overlib(TRACK+': '+track_id+'<br>'+CD_REFERENCE+': '+track_reference+'<br>'+DESCRIPTION+': '+track_description);}, true);
								Trka.onmouseover = function(){return overlib(DS_REFERENCE_CUT+': '+track_id);};								
								Trka.addEventListener('mouseout', function(){return nd();}, true);								
								Trka.addEventListener('mouseout',function(){return nd();}, true);
							}							
							
							Trka.className		= dstPrjId+"_trackClass";							
							Div.appendChild(Trka);	
							//Creating text for the track
							var Txt =	document.createTextNode(" "+track_title);
							
							Trka.appendChild(Txt);	
							//Creating br tag
							var Br = document.createElement('br');
							
							Div.appendChild(Br);
							document.getElementById("_project"+dstPrjId).appendChild(Div);
							
							new Draggable(dstPrjId+"_"+track.substring(1,track.length), {revert:true});
							
							//Creating Color Img...
							var ColorImg = document.createElement('img');
							ColorImg.id = '_color_'+dstPrjId;
							ColorImg.border = "1";
							ColorImg.style.width="10";
							ColorImg.style.height="10";
							ColorImg.src="./img/colorSelect.gif";								
							var MainNode = document.getElementById('td_'+track.substring(1,track.length));
							var SpaceText = document.createTextNode(' ');										
							MainNode.insertBefore(ColorImg,MainNode.firstChild);	
							MainNode.insertBefore(SpaceText,MainNode.firstChild);	

							changeIndicativeColor(dstPrjId);
							
							//Borramos la capa de No projects si existe, ya que acabamos de a?adir uno nuevo
							var NoTraPrjs = document.getElementById("noTracks"+dstPrjId);
							if (NoTraPrjs) 
								document.getElementById("_project"+dstPrjId).removeChild(NoTraPrjs);						
							showLoadingGif();
		    				},
			error:	function(type, error) {
				    	alert(String(type) + ' -- ' + String(error));
				    	showLoadingGif();}	    
					};
		var requestObj = dojo.io.bind(bindArgs);
	}
}

//asigna el nuevo identificador a un campo de un formulario.
function setPrjDuplicationId(prj_id){
	document.getElementById("prjDupId").value=prj_id;
}

//asigna el nuevo identificador a un campo de un formulario recogiendolo de otra parte del documento.
function setPrjDuplicationId(){
	document.getElementById("prjDupId").value=document.getElementById('formProjectOptions').project_id.value;
}

/** This function transforms an id in form 'LinkPPPP-TTTTTTT' into form 'PPPP_TTTTTTT'
PPPP is suposed to be a number (prj_id), TTTT can be any character combination(trk_id)
then it searches for the correct title with that id
*/
function getTitle(src_id){
 var aux=src_id.substring(4,src_id.length);
 var parts = aux.split('-');
 var i=0;
 var transformed_id='';
 for (i=0;i<parts.length;i++){
	transformed_id=transformed_id+parts[i];
	if (i==0) transformed_id=transformed_id+'_';
	//else transformed_id=transformed_id+'-';
 }
 return document.getElementById(transformed_id).firstChild.nodeValue;
}

/** remoteDuplicate Project
	This function makes a copy of an existing project. The user should
	introduce an new name and it must be different from all the other
	project names owned by the user, including closed and expired ones.<b> 
	- input: srcPrjId, is de id of the project witch is being duplicated.
	newPrjName, is the new name for the project.
	- output: it creates the new DOM elements and appends them where necesary.
*/
function remoteDuplicateProject(srcPrjId, newPrjName){
	showLoadingGif();
	var bindArgs = {
		url:       	PATH+"/duplicateProject.php",
		method: 	"POST",
		content:	{ prj_id: srcPrjId, prj_name: newPrjName },
		load:      	function(type, data, evt){
						//alert(data);
						temp = data.split("##");
						var track_ids = temp[0].split("#");
						if(temp[0] == "error"){ 
	    					showErrorWindow(temp[1]);
	    					showLoadingGif();
	    					return;
	    				}
						newPrjName = newPrjName.substr(0,evalProjectLength());
						var new_prj_id = temp[1];
						var prj_ids = temp[2].split("#");
						//alert(track_ids+"\n"+new_prj_id+"\n"+prj_ids);
						//data reception
						
						/**************** DUPLICAR PROYECTO SIN CLONE *****************/
			
							//Creating OuterDiv..
		    				var Div = document.createElement('div');
								Div.id			= new_prj_id;
								Div.className	= "projectWin";
								Div.style.position	= "relative";
							//Creating HeaderDiv..
							var HeaderDiv = document.createElement('div');
								HeaderDiv.className	= "STheader";
								HeaderDiv.id = "prj_"+new_prj_id;
							var temp = "_project"+new_prj_id.toString();

							if (iExplorer){
								HeaderDiv.onclick = function(){showProject(temp);};
							}
							else{
								HeaderDiv.setAttribute('onclick',"javascript:showProject('"+temp+"')");																						
							}																							
							
							Div.appendChild(HeaderDiv);
							//Creating Colora
							/*var ColorA = document.createElement('a');
								ColorA.href	= "javascript:assignColor("+new_prj_id+");";
							HeaderDiv.appendChild(ColorA);*/
							//Creating ColorImg
							var ColorImg = document.createElement('img');
								ColorImg.id					= "color_"+new_prj_id;
								ColorImg.border				= "1";
								ColorImg.style.width		= "10";
								ColorImg.style.height		= "10";
								ColorImg.src				= PATH+"/img/colorSelect.gif";
								ColorImg.style.background	= "#FFFFFF";
							HeaderDiv.appendChild(ColorImg);
							//Creating PrjNameTxt
							var PrjNameTxt	= document.createTextNode(" "+newPrjName);
							HeaderDiv.appendChild(PrjNameTxt);
		
							//Creating TrackList
							var TrackList = document.createElement('div');
								TrackList.id	= "_project"+new_prj_id;
								TrackList.className	= "track paddindBottom";
								TrackList.style.display	= "none";

							Div.appendChild(TrackList);	
							//Inserting the complete tag Div at the end of RightProjects
							var RightProjects;
							if (document.getElementById('RightProjects')) 
								RightProjects = document.getElementById('RightProjects');
							else {//no existe ningun projecto y debemos construir el div padre
								RightProjects 	= document.createElement('div');
								RightProjects.id= "RightProjects";
							document.getElementById("RightButtons").removeChild(document.getElementById("noPrjs"));
							}
							RightProjects.appendChild(Div);
							document.getElementById("RightButtons").appendChild(RightProjects);	
	
							if (track_ids[0] == ""){								
							//Insertamos "No hay pistas" en TrackList
							var NoTrackList = document.createElement("div");
								NoTrackList.id  = "noTracks"+new_prj_id;
							var	TrackListTxt	= document.createTextNode(NO_TRACKS);							

							NoTrackList.appendChild(TrackListTxt);
							TrackList.appendChild(NoTrackList);
							}
							else
							/**************** CREAR LA LISTA DE TRACKS *****************/
							var track_title = new Array();
							for (var i=0; i < track_ids.length; i++){								
								
								var deleteDiv = document.createElement('div');
								deleteDiv.id = new_prj_id+"-"+track_ids[i];
								
								//Creating 1st Link (delete)..
								var Dela 			= document.createElement('a');
								Dela.id				= "Link"+new_prj_id+"-"+track_ids[i];																							

								track_title = document.getElementById(srcPrjId+"_"+track_ids[i]).firstChild.nodeValue;
								
								if (iExplorer){
									Dela.onmouseover = function(){return overlib(DELETE_CLICK+' '+getTitle(this.id));};
									Dela.onmouseout = function(){return nd();};
									Dela.onclick = function(){return nd();};
									Dela.href = "javascript:deleteTrack("+new_prj_id+",'"+track_ids[i]+"');";
								}
								else{
									Dela.addEventListener('mouseover', function(){return overlib(DELETE_CLICK+' '+getTitle(this.id));}, true);
									Dela.addEventListener('mouseout', function(){return nd();}, true);																												
									Dela.addEventListener("click", function(){return nd();}, true);																
									Dela.href = "javascript:deleteTrack("+new_prj_id+",'"+track_ids[i]+"');";
								}															
							
								//Creating image for delete link..
								var Img		= document.createElement('img');
								Img.src		= PATH+"/img/borrar.gif";
								Img.border	= "0";
								Img.height	= "11";
								Img.width	= "11";															
								
								//Creating Track Link..
								var Trka 			= document.createElement('a');
								Trka.id				= new_prj_id+"_"+track_ids[i];
								Trka.href			= "javascript:void(0);";
								Trka.className	= new_prj_id+"_trackClass";
								
								var oldTrka = document.getElementById(srcPrjId+"_"+track_ids[i]);
																
								if (iExplorer){
									Trka.onmouseover = oldTrka.onmouseover;
									Trka.onmouseout = function(){return nd();};
									Trka.onclick = function(){return nd();};
								}
								else{
									Trka.onmouseover = oldTrka.onmouseover;
									Trka.addEventListener('mouseout', function(){return nd();}, true);								
									Trka.addEventListener('mouseout',function(){return nd();}, true);
								}							
								
								//Creating text for the track																																			
								var Txt = document.createTextNode(track_title);

								//Creating br tag
								//var Br = document.createElement('br');																		
							
								Dela.appendChild(Img);																
								deleteDiv.appendChild(Dela)
								Trka.appendChild(Txt);
								deleteDiv.appendChild(Trka);					

								TrackList.appendChild(deleteDiv);
								
								var cadena = "'"+new_prj_id+"_"+track_ids[i]+"'";
								cadena.toString();
								//alert("draggable: "+cadena);								
								new Draggable(Trka.id, {revert:true});								
								
								//Creating Color Img...
								var ColorImg = document.createElement('img');
								ColorImg.id = '_color_'+new_prj_id;
								ColorImg.border = "1";
								ColorImg.style.width="10";
								ColorImg.style.height="10";
								ColorImg.src="./img/colorSelect.gif";					
								if (document.getElementById('td_'+track_ids[i])){			
									var MainNode = document.getElementById('td_'+track_ids[i]);
									var SpaceText = document.createTextNode(' ');										
										
									MainNode.insertBefore(SpaceText,MainNode.firstChild);	
									MainNode.insertBefore(ColorImg,MainNode.firstChild);
								    //changeIndicativeColor(new_prj_id);
								}
								
								//Borramos la capa de No projects si existe, ya que acabamos de a?adir uno nuevo
								var NoTraPrjs = document.getElementById("noTracks"+new_prj_id);
								if (NoTraPrjs) 
									document.getElementById("_project"+new_prj_id).removeChild(NoTraPrjs);													
							
							}
							/**************** FIN CREAR LA LISTA DE TRACKS ******************/
							
							/*ADDS THE NEW PROJECT TO THE PROJECTS POP UP FROM ADDTOMYMUSIC LINK*/
							//Creating OuterDiv..
							
		    				var ProjectsDiv = document.createElement('div');	    				
		    				//Creating AddProjectA
							var AddProjectA = document.createElement('a');
								AddProjectA.href	= "javascript:AddTrackToProject("+new_prj_id+");";
		    				//Creating PrjNameTxt
							var PrjNameTxt2	= document.createTextNode(newPrjName);
							AddProjectA.appendChild(PrjNameTxt2);
							ProjectsDiv.appendChild(AddProjectA);
							document.getElementById("formAddTrack").appendChild(ProjectsDiv);
																					
							//*Creation of the 'Options' Div with the link and the correspindig js calls in it*//							
							var ShareDiv = document.createElement('div');
								ShareDiv.setAttribute("id","Share");	
								
							var elementA = document.createElement('a');
								elementA.setAttribute("id","options");
								elementA.setAttribute("href","javascript:showLayerOnMousePosition('projectOptionsDiv'); showProjectOptions('"+new_prj_id+"');");							
								
								if (iExplorer){
									elementA.onmouseover = function(){return overlib(SEE_MORE_OPTIONS+'...',LEFT);};
									elementA.onmouseout = function(){return nd();};
								}
								else{
									elementA.addEventListener('mouseover', function(){return overlib(SEE_MORE_OPTIONS+'...',LEFT);}, true);
									elementA.addEventListener('mouseout', function(){return nd();}, true);																						
								}								
								
							ShareDiv.appendChild(elementA);							
							//Creating text for the option
							var Txt =	document.createTextNode(OPTIONS);
								elementA.appendChild(Txt);
							/*End Creating the optoins link*/
							Div.appendChild(ShareDiv);
							
							//Borramos la capa de No projects si existe, ya que acabamos de a?adir uno nuevo
							var noPrjs = document.getElementById("noPrjs");
							if (noPrjs) 
								document.getElementById("RightButtons").removeChild(noPrjs);

							//Adding new traks to 'draggable' objects
							prj_id_str = new_prj_id.toString();						
							
							if ((prj_ids.length==1) && (prj_ids[0]=="")) {
								if (document.getElementById('title')!=null) 
									Droppables.add(prj_id_str,{accept: 'CDtitle', onDrop: function(element) { remoteAddDraggableTrack(element.id,prj_id_str,null); },hoverclass:'projectWinHover'});
							} 
							else  {
								for (var i=0;i<prj_ids.length;i++){
									actual_id = prj_ids[i];
									Droppables.add(prj_id_str,{accept: prj_ids[i].toString()+"_trackClass", onDrop: function(track,prj_id_str) { remoteAddDraggableTrack(track.id,prj_id_str.id,track.id.substring(0,track.id.indexOf("_"))); },hoverclass:'projectWinHover'});
								}
							
								if (document.getElementById('title')!=null) {
									Droppables.add(prj_id_str,{accept: 'CDtitle', onDrop: function(element) { remoteAddDraggableTrack(element.id,prj_id_str,null); },hoverclass:'projectWinHover'});
								}
									
								for (var i=0;i<prj_ids.length;i++){
									var str_id = prj_ids[i].toString();
									Droppables.add(str_id,{accept: prj_id_str+"_trackClass", onDrop: function(element,str_id) { remoteAddDraggableTrack(element.id,str_id.id,new_prj_id); },hoverclass:'projectWinHover'});							
								}
							}
						showLoadingGif();
						},
												
		error:		function(type, error) {
				    	alert(String(type) + ' -- ' + String(error));
				    	showLoadingGif();}
	};
	var requestObj = dojo.io.bind(bindArgs);
}

//esta funcion determina cual es el destino para el siguiente paso en el escaparate.
function whereGo(){
	if (document.getElementById('Pagination'))
		document.getElementById('LoginForm').hasSearch.value="true";
	
	document.getElementById('LoginForm').submit();
}

//retonrna al index ocultando y mostrando las capas adecuadas
function goIndex(idLayer,layer2Show,layer2Hide) {
	//if (document.getElementById("SProject"))
		location.replace(PATH+"/index.php?layer2Show="+layer2Show+"&layer2Hide="+layer2Hide);			
}

//borra un proyecto de la BD y de la sesion con ajax, para despues actualizar el interfaz borrando los elementos adecuados del DOM
function deleteProject(prj_id){

	showLoadingGif();
	var bindArgs = {
		    url:       	PATH+"/deleteProject.php",
		    method: 	"POST",
		    content:	{ projectID: prj_id },
		    load:      	function(type, data, evt){
		    

		
	    				var temp=data.split("##");
	    				if(temp[0] == "error"){ 
    						showErrorWindow(temp[1]);
							showLoadingGif();
    						return;
    					}
						document.getElementById("nProjects").value=document.getElementById("nProjects").value-1;							

						var temp2 = null;
		    			temp2 = document.getElementById("prjName_"+prj_id);
    					if (temp2==null)
    						document.getElementById(prj_id).parentNode.removeChild(document.getElementById(prj_id));
    					else{
															
			    			//We need to know if the deleted project had tracks or not.
			    			if (data==1){
			    				document.getElementById("ulPrjsClosed").appendChild(document.getElementById("open_"+prj_id));
			    				document.getElementById("open_"+prj_id).id="close_"+prj_id;
			    			}		    			
		    				if (data==0){
		    					document.getElementById("open_"+prj_id).parentNode.removeChild(document.getElementById("open_"+prj_id));
		    					}
		    				if (data==2){
		    					document.getElementById("close_"+prj_id).parentNode.removeChild(document.getElementById("close_"+prj_id));
		    				}
		    			}
		    			//.parent.removeChild(document.getElementById("open_"+prj_id));
		    			showLoadingGif();
		    },
		    error:		function(type, error) {
				    	alert(String(type) + ' -- ' + String(error));
				    	showLoadingGif();}
	};
	var requestObj = dojo.io.bind(bindArgs);
}

//cambia el nombre de un proyecto en BBDD y sesion con ajax y despues realiza los cambios necesarios en el DOM para que se reflejen en la pantalla.
function remoteRenameProject(project_id, newName){
	showLoadingGif();
	var bindArgs = {
	    url:       	PATH+"/renameProject.php",
	    method: 	"POST",
	    content:	{ project_id: project_id, newName: newName },
	    load:      	function(type, data, evt){
	    
	    				var temp=data.split("##");
	    				if(temp[0] == "error"){ 
    						showErrorWindow(temp[1]);
    						showLoadingGif();
    						return;
    					}
    					newName = newName.substr(0,evalProjectLength());
    					if (null==document.getElementById("prjName_"+project_id))
    						document.getElementById("prj_"+project_id).lastChild.data=" "+newName;
    					else
							document.getElementById("prjName_"+project_id).firstChild.nodeValue=newName;
	    				showLoadingGif();
	    			},
   		error:		function(type, error) {
				    	alert(String(type) + ' -- ' + String(error));
				    	showLoadingGif();}
	};
	var requestObj = dojo.io.bind(bindArgs);
}

//a?ade un identificador a una obra
function setTrackID(track_id){
	document.getElementById("track_id").value=track_id;
}

//a?ade una version de una obra a un objeto a trav?s de ajax
function remoteAddVersion(project_id, track_id, duration, count){
	showLoadingGif();
	var bindArgs = {
		    url:       	PATH+"/addVersion.php",
		    method: 	"POST",
		    content:	{ projectID: project_id, trackID: track_id, duration: duration, cont: count },
		    load:      	function(type, data, evt){
		    			//alert(data);
		    			
	    				var temp=data.split("##");
	    				if(temp[0] == "error"){ 
    						showErrorWindow(temp[1]);
    						showLoadingGif();
    						return;
    					}		    			
		    			
		    			temp = data.split("#");
		    			is_new=temp[0];
		    			cont=temp[1];
		    			if (is_new==0){//a new entry has to be created in the versiontable.
		    				//Creating the tag for the new row
		    				var rowTR = document.createElement('tr');
		    				
		    				//Final append
	    					document.getElementById("table_"+track_id).getElementsByTagName("tbody")[0].appendChild(rowTR);
	    					
		    				rowTR.align = "center";	
		    				rowTR.style.background = "#f0f0f0";
		    				rowTR.className = "versionData";
		    				rowTR.id = "TR_"+track_id+"_"+duration;
		    				
		    				//Creating first column, number of versions
		    				var columnCountTD = document.createElement('td');
		    				rowTR.appendChild(columnCountTD);
		    				columnCountTD.id = track_id+"_"+duration;		    				
		    				
		    				
		    				//Creating text node with the number of versions
							var Txt =	document.createTextNode(cont);							
							columnCountTD.appendChild(Txt);
							
		    				//Creating second column, total duration in seconds
		    				var columnDurationTD = document.createElement('td');		    				
		    				rowTR.appendChild(columnDurationTD);

		    				
		    				//Creating text node with the duration
							var Txt2 =	document.createTextNode(duration);		    				
		    				columnDurationTD.appendChild(Txt2);
		    				
							//Creating third column, the one with the delete link
		    				var columnDeleteTD = document.createElement('td');
		    				rowTR.appendChild(columnDeleteTD);
		    				
		    				//Creating 1st Link (delete)..
							var Dela 			= document.createElement('a');
		    				columnDeleteTD.appendChild(Dela);		    				
							Dela.href			= "javascript:remoteDelVersion('"+project_id+"','"+track_id+"','"+duration+"');";

							//Creating image for delete link..
							var Img		= document.createElement('img');
							Dela.appendChild(Img);
							Img.src		= PATH+"/img/borrar.gif";
							Img.border	= "0";
							Img.height	= "11";
							Img.width	= "11";
		    			}
		    			else{//we have to modify the cuantity value		    				
		    				document.getElementById(track_id+"_"+duration).firstChild.nodeValue=cont;
		    			}
		    			if (document.getElementById("version_"+track_id).style.display=='none')
		    				document.getElementById("version_"+track_id).style.display='block';
		    			showLoadingGif();
		    },
		    error:		function(type, error) {
				    	alert(String(type) + ' -- ' + String(error));
				    	showLoadingGif();}
	};
	var requestObj = dojo.io.bind(bindArgs);
}

//borra una obra de la BD y de la sesion a trav?s de AJAX
function remoteDelVersion(project_id, track_id, duration){
	showLoadingGif();
	var bindArgs = {
	    url:       	PATH+"/delVersion.php",
	    method: 	"POST",
	    content:	{ projectID: project_id, trackID: track_id, duration: duration },
	    load:      	function(type, data, evt){
	    				
	    				var temp=data.split("##");
	    				if(temp[0] == "error"){ 
    						showErrorWindow(temp[1]);
    						showLoadingGif();
    						return;
    					}
	    
	    				cont=data;
	    				if (cont>0){//we have to make a substitution of de number of versions
	    					document.getElementById(track_id+"_"+duration).firstChild.nodeValue=cont;
	    				}
	    				else{//we have to delete a complete child
	    					document.getElementById("TR_"+track_id+"_"+duration).parentNode.removeChild(document.getElementById("TR_"+track_id+"_"+duration));
	    				}
	    				if (document.getElementById("version_"+track_id).getElementsByTagName("TR").length <= 1){
	    					document.getElementById("version_"+track_id).style.display = "none";
	    				}
	    				showLoadingGif();
	    			},
   		error:		function(type, error) {
				    	alert(String(type) + ' -- ' + String(error));
				    	showLoadingGif();}
	};
	var requestObj = dojo.io.bind(bindArgs);
}

/**
* Creates a 'select' with an array as source for the 'option' elements
* field = is the id from the HTML DOMelement, you can pass the 'element' too as is
* data = the source array
* id = value of the 'option' element
* name = tagData from the 'option' element
*/
function createList (field,data,id,name){

    if(data.length!=0){
        DWRUtil.removeAllOptions(field);
        DWRUtil.addOptions(field, data, id, name);          
    }
    else{
        DWRUtil.removeAllOptions(field);
        DWRUtil.addOptions(field, [{name:'No Seleccionado', id:''}], id, name);
   }
}

//resetea la informaci?n del formulario.
function resetLicensingInfo(){
	document.getElementById("media").value="";
	document.getElementById("support").value="";
	document.getElementById("emission").value="";
	document.getElementById("territory").value="";
	document.getElementById("emissionAdd").style.visibility="hidden";
	document.getElementById("territoryAdd").style.visibility="hidden";
}

//recoge la informaci?n de los checkbox creando un array con los identificadores de las obras seleccionadas.
function getCheckboxValues(){
	NodeList = document.getElementsByName("checkbox");
	i=0;
	var TrackIds = new Array();
	for (i=0;i<NodeList.length;i++){
		if (NodeList[i].checked==true){
			TrackIds[TrackIds.length]=NodeList[i].id;
		}
	}
	return TrackIds;
}

//comprueba la validez y presencia de los campos necesarios para la licencia.
function checkLicensingInfo(){
	validation=1;
	
	if (document.getElementById("licenseDate").value.length==0)
		validation=0;
	
	if (document.getElementById("media").value.length==0)
		validation=0;
		
	if (document.getElementById("support").value.length==0)
		validation=0;
		
	if (document.getElementById("emission").value.length==0)
		validation=0;
		
	if (document.getElementById("territory").value.length==0)
		validation=0;
	
	if (document.getElementById("productionTitle").value.length==0)
		validation=0;
	
	if (document.getElementById("clientName").value.length==0)
		validation=0;
	
	if (document.getElementById("TariffNames").value<1)
		validation=0;

	if (document.getElementById("TariffCodes").value<1)
		validation=0;

	if ( (document.getElementById("emissionAdd").style.visibility=='visible')
		&& ( (document.getElementById("emissionAdd").value=='Especifique')
			|| (document.getElementById("emissionAdd").value.length==0) ) )
		validation=0;

	if ( (document.getElementById("territoryAdd").style.visibility=='visible')
		&& ( (document.getElementById("territoryAdd").value=='Especifique')
			|| (document.getElementById("territoryAdd").value.length==0) ) )
		validation=0;

	return validation;
}

//recoge de la BD las tarifas de un libro a traves de ajax, luego se genera el DOM necesario para el list
function completeTariffCodes(tariffId,assigneeId){
	if (tariffId > 0){
		showLoadingGif();
		var bindArgs = {
		    url:       	PATH+"/getTariffCodes.php",
		    method: 	"POST",
		    content:	{ tariffId: tariffId, asg_id: assigneeId},
		    load:      	function(type, data, evt){
		    				eval("var tariffCodes="+data);
		    				
		    				if (tariffCodes[0] == "error"){
		    					showErrorWindow(tariffCodes[1]);
		    					showLoadingGif();
		    					return;
		    				}
		    				
		    				//Then i insert a 'first' option to force the user select a new option
		    				var temp = {trfb_it_id: -1, trfb_it_code: "Elige una opcion"};
		    				tariffCodes.unshift(temp);
		    				//creating the list.
		    				createList("TariffCodes",tariffCodes,"trfb_it_id","trfb_it_code");
		    				//altering the font of the first option;
		    				document.getElementById("TariffCodes").firstChild.className = "noDecoration";		    				
		    				resetLicensingInfo();
		    				showLoadingGif();
		    			},
	   		error:		function(type, error) {
					    	alert(String(type) + ' -- ' + String(error));
					    	showLoadingGif();}
		};
		var requestObj = dojo.io.bind(bindArgs);
	}
	else{//delete the actual list
		createList("TariffCodes",{},"","");
		resetLicensingInfo();
	}
}

//esta funcion consulta la BD y recoge la informacion de un c?digo de tarifa determinado a traves de AJAX y realiza los comabios necesarios
function completeLicensingInfo(tariffItemId){
	if (tariffItemId > 0){
		showLoadingGif();
		var bindArgs = {
		    url:       	PATH+"/getTariffInfo.php",
		    method: 	"POST",
		    content:	{ tariffItemId: tariffItemId },
		    load:      	function(type, data, evt){
		   					eval("var tariffInfo="+data);
		   					
   		    				if (tariffInfo[0] == "error"){
		    					showErrorWindow(tariffInfo[1]);
		    					showLoadingGif();
		    					return;
		    				}
		    						   
		    				document.getElementById("emissionAdd").style.visibility="hidden";
							document.getElementById("territoryAdd").style.visibility="hidden";
		    				
		    				document.getElementById("media").value=tariffInfo[0]["trfb_it_usgt"];
		    				document.getElementById("support").value=tariffInfo[0]["trfb_it_usg"];
		    				if (tariffInfo[0]["trfb_it_desc_emis"]!=0){
			    				document.getElementById("emissionAdd").style.visibility="visible";
		    					document.getElementById("emissionAdd").value="Especifique";		    					
		    				}
		    				document.getElementById("emission").value=tariffInfo[0]["trfb_it_em_ty_id"];
		    				if (tariffInfo[0]["trfb_it_desc_ter"]!=0){
		    					document.getElementById("territoryAdd").style.visibility="visible";
		    					document.getElementById("territoryAdd").value="Especifique";
		    				}
		    				document.getElementById("territory").value=tariffInfo[0]["trfb_it_ter_tar_id"];
		    				document.getElementById("Count").defaultValue = "1";
		    				document.getElementById("Duration").defaultValue = tariffInfo[0]["trfb_it_duration"];
		    				showLoadingGif();
		    			},
	   		error:		function(type, error) {
					    	alert(String(type) + ' -- ' + String(error));
					    	showLoadingGif();}
		};
		var requestObj = dojo.io.bind(bindArgs);
	}
	else{//delete the actual list
		resetLicensingInfo();
	}
}
//realiza una llamada a traves de AJAX a un servicio web que calcula el coste de la licencia, lo devuleve y se pinta en pantalla.
function calculateTotalCost(){
	showLoadingGif();
	/*some previous necesary calculations*/
	//alert(document.getElementById("TariffCodes").value);
	if (document.getElementById("territoryAdd").style.visibility=='visible')
		territory = document.getElementById("territoryAdd").value;
	else
		territory = document.getElementById("territory").value;
		
	if (document.getElementById("emissionAdd").style.visibility=='visible')
		emission = document.getElementById("emissionAdd").value;
	else
		emission = document.getElementById("emission").value;		

	if (checkLicensingInfo()){
		
		var bindArgs = {
		    url:       	PATH+"/calcTotalCost.php",
		    method: 	"POST",
		    content:	{	client: 		document.getElementById("clientName").value ,
		    				title: 			document.getElementById("productionTitle").value,
		    				licenseDate:	document.getElementById("licenseDate").value,
		    				tariffItemId:	document.getElementById("TariffCodes").value,
		    				project_id:		document.getElementById("actualPrj").value,
		    				territory:		territory,
		    				emission:		emission,
		    				trackIds:		getCheckboxValues()},
		    load:      	function(type, data, evt){

		    				eval("var importData="+data);
		    						    				
							if (importData['error']==1){
								showErrorWindow(importData['errorDesc']);
								showLoadingGif();
								return;
							}
							else{
								convertedImport=importData['Import'].toString().replace('.',',');
								if (document.getElementById('totalCost').firstChild)							
									document.getElementById('totalCost').replaceChild(document.createTextNode(" "+convertedImport+" Euros"),document.getElementById('totalCost').firstChild);
								else
									document.getElementById('totalCost').appendChild(document.createTextNode(" "+convertedImport+" Euros"));
							}
							showLoadingGif();
		    			},
	   		error:		function(type, error) {
					    	alert(String(type) + ' -- ' + String(error));
					    	showLoadingGif();}
		};
		var requestObj = dojo.io.bind(bindArgs);
		//document.getElementById("license").disabled=true;
	}
	else{
		showLoadingGif();
		showErrorWindow("Falta informacion para completar la operacion que ha solicitado, revisela y vuelva a intentarlo.");
	}	
}

/*PreConfirmation*/
//actualiza la informaci?n del formulario para licenciamiento.
function confirmLicenseData(){
	
alert("function confirmLicenseData?");
return 0; //fran.quitar
	if (document.getElementById("territoryAdd").style.visibility=='visible')
		territory = document.getElementById("territoryAdd").value;
	else
		territory = document.getElementById("territory").value;
		
	if (document.getElementById("emissionAdd").style.visibility=='visible')
		emission = document.getElementById("emissionAdd").value;
	else
		emission = document.getElementById("emission").value;
		
	if (checkLicensingInfo()){		
		document.getElementById("TariffNamesText").value=document.getElementById("TariffNames").options[document.getElementById("TariffNames").selectedIndex].text;
		document.getElementById("TariffCodesText").value=document.getElementById("TariffCodes").options[document.getElementById("TariffCodes").selectedIndex].text;
		document.getElementById("licensingForm").setAttribute('action',"./confirmLicense.php");
		document.getElementById("trackIds").value = getCheckboxValues();
		document.forms["licensingForm"].submit();
	}
	else{
		showErrorWindow("Falta informacion para completar la operacion que ha solicitado, revisela y vuelva a intentarlo.");	
	}
}

/*PreConfirmation*/
//actualiza la informaci?n del formulario para declaraciones de uso.
function confirmUseDeclarationData(){
	var i = 0;
	var checkedTracks = 0;
	var actualCheckBox = 'checkbox';     	                  
	var actualUse = 'use';
	var productionTitle = document.getElementById('productionTitle_desc').value;
	var trackUses = '';
	// ver q existe el nombre del proyecto
	if (productionTitle.length > 0){
		// ver q hay al menos un checkbox marcado.
        document.getElementById('productionTitle').value=productionTitle;		
		while(document.getElementById(actualCheckBox+i)){
			if (i > 0) trackUses += ',';	
			
			if (document.getElementById(actualCheckBox+i).checked){			
				checkedTracks++;
				trackUses += document.getElementById(actualUse+i).value;
			}
			else trackUses += "";			
			i++;
		}		
	}
	else{
		/* NOMBRE DEL PROYECTO INCORRECTO */
		showErrorWindow(ERROR_0005);  
		return;
	}
	
	if (checkedTracks > 0){
		document.forms["licensingForm"].trackUses.value = trackUses;
		document.forms["licensingForm"].action="doUseDeclaration.php";
		document.forms["licensingForm"].submit();
	}
	else{
		/* NINGUNA CANCION SELECCIONADA */
		showErrorWindow(ERROR_0006);  
		return;
	}
}

//llama al servicio web de licenciamiento, y muestra un error si lo devuelve el servicio web, si todo sale bien se ejecuta el script endLicense.php
function licenseProject(){
	showLoadingGif();
	/*some previous necesary calculations*/
	//alert(document.getElementById("TariffCodes").value);
	if (document.getElementById("territoryAdd").style.visibility=='visible')
		territory = document.getElementById("territoryAdd").value;
	else
		territory = document.getElementById("territory").value;
		
	if (document.getElementById("emissionAdd").style.visibility=='visible')
		emission = document.getElementById("emissionAdd").value;
	else
		emission = document.getElementById("emission").value;		

	if (checkLicensingInfo()){
		var bindArgs = {
		    url:       	PATH+"/doLicense.php",
		    method: 	"POST",
		    content:	{	client: 		document.getElementById("clientName").value ,
		    				title: 			document.getElementById("productionTitle").value,
		    				licenseDate:	document.getElementById("licenseDate").value,
		    				tariffItemId:	document.getElementById("TariffCodesId").value,
		    				project_id:		document.getElementById("actualPrj").value,
		    				territory:		territory,
		    				emission:		emission,
		    				trackIds:		document.getElementById("trackIds").value.toString().split(",")},
		    load:      	function(type, data, evt){
		    				eval("var licenseResponseData="+data);
							if (licenseResponseData['error']==1){
								showErrorWindow(licenseResponseData['errorDesc']);
								showLoadingGif();
								return;
							}
							else{
								//alert(licenseResponseData.licenseNumber);
								/*construir un formulario meterle el data este ponerle un action y mandarlo*/
								document.forms['confirmLicensingForm'].action="./endLicense.php";
								document.forms['confirmLicensingForm'].licenseNumber.value=licenseResponseData.licenseNumber;
								document.forms['confirmLicensingForm'].startDate.value=licenseResponseData.startDate;
								document.forms['confirmLicensingForm'].endDate.value=licenseResponseData.endDate;
								document.forms['confirmLicensingForm'].submit();
								showLoadingGif();
							}
		    			},
	   		error:		function(type, error) {
					    	alert(String(type) + ' -- ' + String(error));
					    	showLoadingGif();}
		};
		var requestObj = dojo.io.bind(bindArgs);
	}
	else{
		showErrorWindow(ERROR_0007);
	}
}

//"DEPRECATED" llama al servicio web de licenciamiento, y muestra un error si lo devuelve el servicio web, si todo sale bien se ejecuta el script endLicense.php
function useDeclarationProject(){
	showLoadingGif();
	var bindArgs = {
	    url:       	PATH+"/doUseDeclaration.php",
	    method: 	"POST",
	    content:	{
	    				assignee: 		document.getElementById("assignee").value ,
	    				title: 			document.getElementById("productionTitle").value,
	    				project_id:		document.getElementById("actualPrj").value,
	    				trackIds:		document.getElementById("trackIds").value.toString().split(","),
	    				trackUses:		document.getElementById("trackUses").value.toString().split(",")
	    			},
	    load:      	function(type, data, evt){	
						//alert(data);						
	    				eval("var declarationResponseData="+data);
						if (declarationResponseData['error']==1){
							showErrorWindow(declarationResponseData['errorDesc']);
							showLoadingGif();
							return;
						}	
						
						else{
							//alert(declarationResponseData);
							/*construir un formulario meterle el data este ponerle un action y mandarlo*/
							var Input	= document.createElement('input');
							Input.value	= document.getElementById("actualPrj").value;
							Input.type	= "hidden";
							Input.id	= "project_id";
							Input.name	= "project_id";							
							var Form	= document.createElement('form');
							Form.action = "./endUseDeclaration.php";
							Form.method = "post";
							Form.id		= "endDeclarationForm";
							Form.name	= "endDeclarationForm";
							Form.appendChild(Input);
							document.body.appendChild(Form);
							document.forms["endDeclarationForm"].submit();
						}
						showLoadingGif();
	    			},
   		error:		function(type, error) {
				    	alert(String(type) + ' -- ' + String(error));}
	};
	var requestObj = dojo.io.bind(bindArgs);
}


//gestiona la descarga de canciones licenciadas.
function initDownload(id){
	var windowTitle = id;	
	var windowUrl = PATH+"/initDownload.php?id="+id;
	var windowWidth = 420;
	var windowHeight = 150;
	var windowProperties = "top=0,left=0,toolbar=no,location=no,status=no, menubar=no,scrollbars=no, resizable=no,width=" + windowWidth + ",height=" + windowHeight;
	
	window.open(windowUrl,windowTitle,windowProperties); 
}



//esta funcion gestiona la descarga de obras licenciadas.
function download(trackID){

	if (trackID){		
		var bindArgs = {
		    url:       	PATH+"/download.php",
		    method: 	"POST",
		    content:	{
		    				id: trackID	    				
		    			},
		    load:      	function(type, data, evt){		

					    	document.getElementById("InfoMessage").removeChild(document.getElementById("WaitMessage"));				
							var newLink  = document.createElement('a');
							newLink.href = "javascript:download();";
							//Creating text for the option
							var Txt =	document.createTextNode("Descargar");
							newLink.appendChild(Txt);							
							document.getElementById("InfoMessage").appendChild(newLink);
							// Pintar el enlace												
		    			},
	   		error:		function(type, error) {
					    	alert(String(type) + ' -- ' + String(error));}
		};
		var requestObj = dojo.io.bind(bindArgs);
	}
	else
		if (document.getElementById('downloadForm')){
			document.getElementById('downloadForm').action="download.php";
			document.getElementById('downloadForm').submit();
		}
}



//gestiona la impresi?n del informa de licenciamientos.
function printLicense(){
	if (document.getElementById('printLicensingForm')){
		var Input	= document.createElement('input');
		Input.value	= "true";
		Input.id	= "print";
		Input.name	= "print";
		Input.type	= "hidden";
		
		document.getElementById('printLicensingForm').appendChild(Input);
		document.getElementById('printLicensingForm').action="printLicense.php";		
		document.getElementById('printLicensingForm').target="_new";
		document.getElementById('printLicensingForm').submit();
	}
}

//redirige a la ventana de impresi?n.
function printUse(){
	if (document.getElementById('confirmUseForm')){
		document.getElementById('confirmUseForm').action="printUse.php";
		document.getElementById('confirmUseForm').target="_new";
		document.getElementById('confirmUseForm').submit();
	}
}

//gesti?n de busquedas por estilos.
function versionSearch(track_id){
	document.forms["STtrackLitle"].reset();
	document.forms["STtrackLitle"].track.value = track_id;
	document.forms["STtrackLitle"].isNewSearch.value = true;
	document.forms["STtrackLitle"].target="_new";
	document.forms["STtrackLitle"].action= "searchVersions.php";
	document.forms["STtrackLitle"].submit();
	document.forms["STtrackLitle"].target="_self";
	document.forms["STtrackLitle"].action= "searchTrack.php";
}


//2008-10-09.Mod.
function download_track(trackID){

	document.getElementById("InfoMessage").innerHTML="guardando la pista";
	if (trackID){		
		var bindArgs = {
		    url:       	PATH+"/download.php",
		    method: 	"POST",
		    content:	{
		    				id: trackID	    				
		    			},
		    load:      	function(type, data, evt)
						{		
							document.getElementById("InfoMessage").innerHTML="pista guardada";
							document.getElementById("InfoMessage").innerHTML=data;							
		    			},
	   		error:		function(type, error) {
					    	alert(String(type) + ' -- ' + String(error));}
		};
		var requestObj = dojo.io.bind(bindArgs);
	}
	else
		if (document.getElementById('downloadForm')){
			document.getElementById('downloadForm').action="download.php";
			document.getElementById('downloadForm').submit();
		}
}


function download_track_mp3_baja(trackID,trackTitle)
{//Descarga las tracks de Mp3 de baja calidad que se reproducen en el Reproductor flash.

	document.getElementById("InfoMessage").innerHTML="guardando la pista: <br>"+trackTitle;
	if (trackID){		
		var bindArgs = {
		    url:       	PATH+"/download_mp3.php?",
		    method: 	"POST",
		    content:	{
		    				trackID: trackID,
							trackTitle:trackTitle
		    			},
		    load:      	function(type, data, evt)
						{		
							document.getElementById("InfoMessage").innerHTML="pista guardada";
		    			},
	   		error:		function(type, error) {
					    	alert(String(type) + ' -- ' + String(error));}
		};
		var requestObj = dojo.io.bind(bindArgs);
	}
}







function downloadTracks_project_mp3_baja(prj_id)
{
	var windowUrl = PATH+"/downloadTracks_project_mp3.php?prj_id="+prj_id;
	var windowWidth = 420;
	var windowHeight = 150;
	var windowProperties = "top=0,left=0,toolbar=no,location=no,status=no, menubar=no,scrollbars=no, resizable=no,width=" + windowWidth + ",height=" + windowHeight;
	
	window.open(windowUrl,"",windowProperties); 	
}

	function initDownload_allTracks(id_prj,tipo)
	{//prepara la descarga para todas las canciones seleccionadas.

		var _id="";
		var _i=0;
		var parametros="";
	
		switch(tipo)
		{
			case 1:
			//descarga de mp3 de alta calidad
				url_descarga="downloadTrack_mp3.php?alta=1";				
				break;
			case 2:
			//descar de flacs
				url_descarga="downloadTrack.php?";
				break;
		}
	
		for( var key in track_nameSpace)
		{
			parametros="&prjId="+id_prj+"&trackId="+track_nameSpace[key]+"&tipo="+tipo;
			var windowTitle = id_prj+_i;	
			var windowUrl = url_descarga+parametros;
			var windowWidth = 420;
			var windowHeight = 150;
			var windowProperties = "top=0,left=0,toolbar=no,location=no,status=no, menubar=no,scrollbars=no, resizable=no,width=" + windowWidth + ",height=" + windowHeight;
			
			window.open(windowUrl,windowTitle,windowProperties); 					
			_i++;		
		}   

	}	
	
	function showTrack_popUp(trackId)
	{

		if(document.getElementById("nProjects").value==0)
		{	
			//showLayer('addProject');
			showLayerOnMousePosition('addProject');
			document.getElementById("track_ceroProjects").value=trackId;
		}
		else
			showAddTrackLayer('projectPopUpDiv',trackId);
	
	}

