sortitems = 1;
function move(fbox,tbox)
{
	for(var i=0; i<fbox.options.length; i++)
	{
		if(fbox.options[i].selected && fbox.options[i].value != "" && !esta(tbox,fbox.options[i].value))
		{
			var no = new Option();
			no.value = fbox.options[i].value;
			no.text = fbox.options[i].text;
			tbox.options[tbox.options.length] = no;
			//fbox.options[i].value = "";
			//fbox.options[i].text = "";
		}
	}
	//BumpUp(fbox);
	if (sortitems)
		SortD(tbox);
}

function BumpUp(box)
{
	for(var i=0; i<box.options.length; i++)
	{
		if(box.options[i].value == "")
		{
			for(var j=i; j<box.options.length-1; j++)
			{
				box.options[j].value = box.options[j+1].value;
				box.options[j].text = box.options[j+1].text;
			}
			var ln = i;
			break;
		}
	}
	if(ln < box.options.length)
	{
		box.options.length -= 1;
		BumpUp(box);
	}
}

function SortD(box)
{
	var temp_opts = new Array();
	var temp = new Object();
	for(var i=0; i<box.options.length; i++)
	{
		temp_opts[i] = box.options[i];
	}
	for(var x=0; x<temp_opts.length-1; x++)
	{
		for(var y=(x+1); y<temp_opts.length; y++)
		{
			if(temp_opts[x].text > temp_opts[y].text)
			{
				temp = temp_opts[x].text;
				temp_opts[x].text = temp_opts[y].text;
				temp_opts[y].text = temp;
				temp = temp_opts[x].value;
				temp_opts[x].value = temp_opts[y].value;
				temp_opts[y].value = temp;
			}
		}
	}
	for(var i=0; i<box.options.length; i++)
	{
		box.options[i].value = temp_opts[i].value;
		box.options[i].text = temp_opts[i].text;
	}
}

function esta(box,valor)
{
	for(i=0;i<box.options.length;i++)
	{
		if(box.options[i].value == valor)
		{
			alert("Ya estás suscrito a "+box.options[i].text);
			return true;
		}
	}
	return false;
}

function nuevoAjax()
{ 
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	var xmlhttp=false;
	try
	{
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			// Creacion del objet AJAX para IE
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(E)
		{
			if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
		}
	}
	return xmlhttp; 
}

// Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
var listadoSelects=new Array();
listadoSelects[0]="select1";
listadoSelects[1]="select2";
listadoSelects[2]="select3";

var listadoSelects2=new Array();
listadoSelects2[0]="select1_inferior";
listadoSelects2[1]="select2_inferior";
listadoSelects2[2]="select3_inferior";

function buscarEnArray(array, dato)
{
	// Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra
	var x=0;
	while(array[x])
	{
		if(array[x]==dato) return x;
		x++;
	}
	return null;
}

function pinta_select_multiple(idSelectOrigen,idSelectDestino)
{
	// Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
	var posicionSelectDestino=buscarEnArray(listadoSelects, idSelectOrigen);

	// Obtengo el select que el usuario modifico
	var selectActual=document.getElementById(listadoSelects[posicionSelectDestino]);

	// Obtengo la opcion que el usuario selecciono
	var opcionSeleccionada=selectActual.options[selectActual.selectedIndex].value;
	
	// Creo el div donde irá el select inferior
	var selectDestino = document.createElement("div");
	selectDestino.id=listadoSelects2[posicionSelectDestino];
	selectDestino.name=listadoSelects2[posicionSelectDestino];


	
	//pillo al padre de los divs de destino
	var papi=document.getElementById("demo2");
	var existe=false;
	//compruebo que el select no lo tenga de antes
	if (papi.hasChildNodes())
	{
		var children = papi.childNodes;
		var nchildren = children.length;
		for (var i = 0; i < nchildren; i++) 
		{
			if(children[i].id == selectDestino.id)
			{
				children[i].innerHTML="";
				existe=true;
				break;
			}
		}
	}
	//si no lo tengo lo añado, si no lo sustituyo
	if(!existe)
		papi.appendChild(selectDestino);
	else
		selectDestino=children[i]; 
			
	//ahora empiezo a comprobaren qué select me encuentro para recoger los valores ya elegidos en los anteriores, si los hubiese
	var parametros="";
	if(posicionSelectDestino == 0)
	{
		parametros="&pais="+opcionSeleccionada;
	}
	if(posicionSelectDestino == 1)
	{
		var posicionSelectDestino1=buscarEnArray(listadoSelects, idSelectOrigen);
		// Obtengo el select que el usuario modifico
		var selectActual1=document.getElementById(listadoSelects[posicionSelectDestino1-1]);
		// Obtengo la opcion que el usuario selecciono
		var opcionSeleccionada1=selectActual1.options[selectActual1.selectedIndex].value;
		
		parametros="&pais="+opcionSeleccionada1+"&comunidad="+opcionSeleccionada;
	}	
	if(posicionSelectDestino == 2)
	{
		var posicionSelectDestino1=buscarEnArray(listadoSelects, idSelectOrigen);
		// Obtengo el select que el usuario modifico
		var selectActual1=document.getElementById(listadoSelects[posicionSelectDestino1-2]);
		// Obtengo la opcion que el usuario selecciono
		var opcionSeleccionada1=selectActual1.options[selectActual1.selectedIndex].value;
		
		var posicionSelectDestino2=buscarEnArray(listadoSelects, idSelectOrigen);
		// Obtengo el select que el usuario modifico
		var selectActual2=document.getElementById(listadoSelects[posicionSelectDestino2-1]);
		// Obtengo la opcion que el usuario selecciono
		var opcionSeleccionada2=selectActual2.options[selectActual2.selectedIndex].value;
		
		parametros="&pais="+opcionSeleccionada1+"&comunidad="+opcionSeleccionada2+"&provincia="+opcionSeleccionada;
	}	

	// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
	var ajax= new nuevoAjax();
	ajax.open("GET", "fileadmin/apps/personalizacion/select_dependientes_3_niveles_proceso2.php?select="+selectDestino.id+parametros, true);
	ajax.onreadystatechange=function() 
	{ 
		if (ajax.readyState==1)
		{
			// Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."			
			selectDestino.length=0;
			var nuevaOpcion=document.createElement("option"); 
			nuevaOpcion.value=0; 
			nuevaOpcion.innerHTML="Cargando...";
			selectDestino.appendChild(nuevaOpcion); 
			selectDestino.disabled=true;	
		}
		if (ajax.readyState==4)
		{
			selectDestino.innerHTML=ajax.responseText;
			selectDestino.disabled=false;
		} 
	}
	ajax.send(null);
}

function cargaContenido(idSelectOrigen)
{
	// Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
	var posicionSelectDestino=buscarEnArray(listadoSelects, idSelectOrigen)+1;
	// Obtengo el select que el usuario modifico
	var selectOrigen=document.getElementById(idSelectOrigen);
	// Obtengo la opcion que el usuario selecciono
	var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
	// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
	if(opcionSeleccionada==0)
	{
		var x=posicionSelectDestino, selectActual=null;
		// Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilito
		while(listadoSelects[x])
		{
			selectActual=document.getElementById(listadoSelects[x]);
			selectActual.length=0;
			
			var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Opci&oacute;n...";
			selectActual.appendChild(nuevaOpcion);	
			selectActual.disabled=true;
			x++;
		}
	}
	// Compruebo que el select modificado no sea el ultimo de la cadena
	//	else if(idSelectOrigen!=listadoSelects[listadoSelects.length-1])
	else if(idSelectOrigen != listadoSelects[listadoSelects.length])
	{
		//en el último elemento de los desplegables solo debo entrar para rellenar el select inferior, si no hago el proceso normal
		if(posicionSelectDestino == 3)
		{
			pinta_select_multiple(idSelectOrigen,listadoSelects2[posicionSelectDestino]);
		}
		else
		{
			// Obtengo el elemento del select que debo cargar
			var idSelectDestino=listadoSelects[posicionSelectDestino];
			var selectDestino=document.getElementById(idSelectDestino);
			// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
			var ajax=nuevoAjax();
			ajax.open("GET", "fileadmin/apps/personalizacion/select_dependientes_3_niveles_proceso.php?select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);
			ajax.onreadystatechange=function() 
			{ 
				if (ajax.readyState==1)
				{
					// Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
					selectDestino.length=0;
					var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
					selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;	
				}
				if (ajax.readyState==4)
				{
					selectDestino.parentNode.innerHTML=ajax.responseText;
					selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=false;
				} 
			}
			pinta_select_multiple(idSelectOrigen,listadoSelects2[posicionSelectDestino]);
			ajax.send(null);
		}
	}
}

function cargaContenido2(idSelectOrigen,idSelectDestino,accion)
{		
	// Obtengo el select que el usuario modifico
	var selectOrigen=document.getElementById(idSelectOrigen);
	
	// Obtengo la opcion que el usuario selecciono
	var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
	
	// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
	if(opcionSeleccionada != 0)
	{
		// Obtengo el elemento del select que debo cargar
		var selectDestino=document.getElementById(idSelectDestino);
		// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
		var ajax=nuevoAjax();
		ajax.open("GET", "fileadmin/apps/personalizacion/select_dependientes_3_niveles_proceso5.php?select="+idSelectDestino+"&opcion="+opcionSeleccionada+"&accion="+accion, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==1)
			{
				// Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
				selectDestino.length=0;
				var nuevaOpcion=document.createElement("option");
				nuevaOpcion.value=0;
				nuevaOpcion.innerHTML="Cargando...";
				selectDestino.appendChild(nuevaOpcion);
				selectDestino.disabled=true;	
			}
			if (ajax.readyState==4)
			{
				selectDestino.parentNode.innerHTML=ajax.responseText;
				selectDestino.disabled=false;
			} 
		}
		ajax.send(null);
	}
}

function pinta_select_multiple2(idSelectOrigen,idSelectDestino,accion)
{
	// Obtengo el select que el usuario modifico
	var selectActual=document.getElementById(idSelectOrigen);

	// Obtengo la opcion que el usuario selecciono
	var opcionSeleccionada=selectActual.options[selectActual.selectedIndex].value;
	// Creo el div donde irá el select inferior
	var selectDestino = document.createElement("div");
	selectDestino.id=idSelectDestino;
	selectDestino.name=idSelectDestino;

	
	//pillo al padre de los divs de destino
	var papi=document.getElementById("contenedor_"+idSelectDestino);
	var existe=false;
	
	//modificación
	/*if(accion == 4)
	{
		var papi=document.getElementById("contenedor_"+idSelectOrigen);
		var existe=false;	
	}*/
	//compruebo que el select no lo tenga de antes
	if (papi.hasChildNodes())
	{
		var children = papi.childNodes;
		var nchildren = children.length;
		for (var i = 0; i < nchildren; i++) 
		{
			if(children[i].id == selectDestino.id)
			{
				children[i].innerHTML="";
				existe=true;
				break;
			}
		}
	}
	//si no lo tengo lo añado, si no lo sustituyo
	if(!existe)
		papi.appendChild(selectDestino);
	else
		selectDestino=children[i]; 
			
	// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
	var ajax=nuevoAjax();
	ajax.open("GET", "fileadmin/apps/personalizacion/select_dependientes_3_niveles_proceso5.php?select="+selectDestino.id+"&accion="+accion+"&opcion="+opcionSeleccionada, true);
	ajax.onreadystatechange=function() 
	{ 
		if (ajax.readyState==1)
		{
			// Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."			
			selectDestino.length=0;
			var nuevaOpcion=document.createElement("option"); 
			nuevaOpcion.value=0; 
			nuevaOpcion.innerHTML="Cargando...";
			selectDestino.appendChild(nuevaOpcion); 
			selectDestino.disabled=true;	
		}
		if (ajax.readyState==4)
		{
			selectDestino.innerHTML=ajax.responseText;
			selectDestino.disabled=false;
		} 
	}
	ajax.send(null);
}

function grabaSuscripciones(box,usuario,resultado)
{
	document.getElementById("msg"+resultado).innerHTML="";
	if(suscripciones=box.options.length)
	{
		var suscripciones=box.options.length;
		var ids=box.options[0].value;	
		for(var i=1; i<suscripciones; i++)
		{
			ids=ids+"-"+box.options[i].value;
		}
	
		var ajax=nuevoAjax();
		ajax.open("GET", "fileadmin/apps/personalizacion/select_dependientes_3_niveles_proceso3.php?usuario="+usuario+"&ristrasuscripciones="+ids, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==4)
			{
				document.getElementById("msg"+resultado).innerHTML=ajax.responseText;				
			} 
		}
		ajax.send(null);
	}		
}
function eliminaSuscripciones(box,usuario,resultado)
{
	document.getElementById("msg"+resultado).innerHTML="";
	var tamano=box.options.length;
	var eliminados=0;
	if(tamano && box.selectedIndex != -1)
	{
		var suscripciones=box.options.length;
		var ids=box.options[box.selectedIndex].value;	
		for(var i=0; i<suscripciones; i++)
		{
			if(box.options[i].selected)
			{
				ids=ids+"-"+box.options[i].value;
				box.options[i].value = "";
				box.options[i].text = "";
				eliminados++;
			}
		}
		if(box.options.length)
		{
			BumpUp(box);
			SortD(box);
		}
	
		var ajax=nuevoAjax();
		ajax.open("GET", "fileadmin/apps/personalizacion/select_dependientes_3_niveles_proceso4.php?usuario="+usuario+"&ristrasuscripciones="+ids, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==4)
			{
				document.getElementById("msg"+resultado).innerHTML=ajax.responseText;
			} 
		}
		ajax.send(null);
	}		
}
