
var max;
var listaCamino;
var indice = 0;
var opera=window.opera?true:false;
var gecko=document.addEventListener && !opera ? true:false;
var ie=window.ActiveXObject && !window.opera ? true:false;
var version = navigator.appVersion;
var not_supported=(ie && version<6) || (opera && version<7) ? true:false;
var DEBUG=0, DISABLE_UNAVAIL=1;
var thumbs_hidden=true;
var listaFamilias=null;
var familiasVisibles="";

var preguntas; 
var arrPreguntas;
var arrRespuestas=new Array();
var strRespuestas="";
var arrNoDeseadas=null;
var strNoDeseadas="";
var strSeleccionados="";
var arrSeleccionados= new Array();
var noDeseada="";
var arrFamiVisibles = new Array();
var strFamiVisible="";
var strFamiliasAct="";
var arrFamiliasAct = new Array();
var arrFiltros =null;
var esFiltro="0";
var filtroAct="";
var arrDesactivadas= new Array();

//**********************************************************************************************************
// * Función: iniciaSolucionIdeal					   										
// * Autor: Elena S. V.							                           								
// * Fecha Creación: 31 Mayo de 2008 								           									
// * Objetivo:  iniciar la página de solución ideal                                                                  
//**********************************************************************************************************
function iniciaSolucionIdeal(cont, preguntasJS, noDeseadas, pregsFiltro){
	//si el navegador no soporta la funcionalidad devuelve
	if (not_supported) return false;

	//vamos a capturar los eventos del raton cuando se mueva guardas coordenadas
	if (window.event)
		if(event.MOUSEMOVE)document.captureEvents(event.MOUSEMOVE);
	document.onmousemove=getMouseXY;

	arrNoDeseadas = noDeseadas.split(" ");
	arrPreguntas = preguntasJS.split(" ");
	strFamiVisible="";
	filtroAct="";
	arrFiltros = pregsFiltro.split(";");
	document.getElementById("familiasFiltro").style.display = 'none';
	document.getElementById("familiasContainer").style.display = 'block';
	obtenerRespuestas();
	
	showHide('familiasContainer',1);
	
	//obtener numMax de Preguntas
	max = cont;
	
	preguntas = preguntasJS;
		
	//Inicializar check y radios (habilitar, deseleccionar)
	for(var i=0; i<arrPreguntas.length; i++){
			var reg = arrPreguntas[i];
			indIni=0;
			indFin=reg.indexOf(":");
	 		var anular = reg.substring (indIni, indFin);
			for (j=0; j < document.form1.length; j++){
				if (document.form1.elements[j].name=="radio_" + anular || document.form1.elements[j].name=="check_" + anular){
					document.form1.elements[j].disabled=false;
					document.form1.elements[j].checked=false;
				}
			}
	}

	//visualizar primera pregunta
	document.getElementById("pregutaRespSI_1").style.display = 'block';
	document.getElementById("contVerMiSol").style.display = 'none';
	document.getElementById("linkSolPresupuesto").style.display = 'none';
	//ocultar resto de preguntas
	for(var i=2; i<= cont; i++){
		document.getElementById("pregutaRespSI_" + i).style.display = 'none';
	}
	document.getElementById("cajaPreguntas").style.display = 'block';
	
	//hacemos transparentes las imágenes de las familias	
	borrarImagenes();
	document.getElementById("pregutaRespSI_1").className = "pregutaRespSI_0";
}

//**********************************************************************************************************
// * Función: abrirSiguientePregunta					   										
// * Autor: Elena S. V.							                           								
// * Fecha Creación: 31 Mayo de 2008 								           									
// * Objetivo: abre la siguiente pregunta al pulsar una respuesta                                                          
//**********************************************************************************************************
function abrirSiguientePregunta(idPregSig, idRespuesta)
{
	//visualizo las capas necesarias
	if(document.getElementById("iniSolucion"))document.getElementById("iniSolucion").style.display = 'block';
	if(document.getElementById("bottomSolucion"))document.getElementById("bottomSolucion").style.display = 'block';
	if(document.getElementById("contVerMiSol"))document.getElementById("contVerMiSol").style.display = 'none';
		
		//obtener en variable arrSeleccionados las seleccion actual Formato(idPreg:idResp1;idResp2)
		obtenerSeleccionados();
		
	if(document.getElementById("pregutaRespSI_1"))document.getElementById("pregutaRespSI_1").className = "";
		
		//activamos todas las preguntas que estaban desactivadas por ser no deseadas anteriormente
		activarNoDeseadas();
		
		//desactivamos las preguntas no deseadas actuales
		desactivarNoDeseadas();
		
		//si hemos desactivado preguntas...	
		if(arrDesactivadas.length > 0){
			//obtener seleccion definitiva (seleccionadas - no deseadas)
			obtenerSeleccionDefinitiva(noDeseada);
		}
		noDeseada="";
		
		//obtener las familias relacionadas con las respuestas que se van a visualizar	
		obtenerFamiliasVisualizar();
		
		//comprobamos si la pregunta es filtro
		esPreguntaFiltro(idPregSig);	
		
		strFamiVisible = arrFamiVisibles.join();

		//si no es filtro...
		if(esFiltro == "0"){
			//visualizamos siguiente pregunta con sus respuestas
			if(idPregSig != 0){
				var arrPregSig = idPregSig.split(";");
				
				for(var j=0; j<arrPregSig.length; j++){
					document.getElementById("pregutaRespSI_" + arrPregSig[j]).style.display = 'block';
				}
			}
		//si es filtro y tenemos familias seleccionadas...
		}else if(strFamiVisible != ""){
			filtroAct="";
			//visualizamos la selección definitiva
			document.getElementById("contVerMiSol").style.display = 'block';
			filtroAct= idPregSig;
		}
	
}

//**********************************************************************************************************
// * Función: esFiltro					   										
// * Autor: Elena S. V.							                           								
// * Fecha Creación: 31 Mayo de 2008 									           									
// * Objetivo:  dado el id de una pregunta se devuelve 0 si no es filtro y -1 si lo es                                                                  
//**********************************************************************************************************
function esPreguntaFiltro(idPregunta) {
		esFiltro="0";
		
		for(var i=0; i < arrFiltros.length; i++){
			var idFiltro = arrFiltros[i];
			if(idFiltro == idPregunta){
				esFiltro = "-1";
				return;
			}
		}
}

//**********************************************************************************************************
// * Función: getElemento(sid)					   										*
// * Autor: Elena S. V.							                           								*
// * Fecha Creación: 31 Mayo de 2008 									           									*
// * Objetivo:     obtiene el elemento del formulario con id = sid                                                                     
//**********************************************************************************************************
function getElemento(sid) {
	return document.getElementById(sid);
}

function showHide(sid,show) {
	getElemento(sid).style.visibility=show?'visible':'hidden';
}



function getMouseXY(e) {
	mx = (window.event && e) ? e.pageX : event.clientX + document.body.scrollLeft;
	my = (window.event && e) ? e.pageY : event.clientY + document.body.scrollTop;
	if (ie) {
		page_x = document.body.scrollLeft;
		page_y = document.body.scrollTop;
	} else {
		page_x = window.pageXOffset;
		page_y = window.pageYOffset;
	}
	return false;
}

//**********************************************************************************************************
// * Función: obtenerSeleccionados					   										
// * Autor: Elena S. V.							                           								
// * Fecha Creación: 31 Mayo de 2008 								           									
// * Objetivo:  obtenemos la selección actual de Preguntas-Respuestas en el siguiente formato
// *            radios = idPreg:idResp1 
// *            checkbox = idPreg:idResp1;idResp2; (cuando seleccionamos n respuestas)                                                                
//**********************************************************************************************************
function obtenerSeleccionados() {
	
	strSeleccionados="";
	var indIni=0;
	var indFin=0;
	var idPregAct;
	var idPregAnt=0;
	
	for (i=0; i < document.form1.length; i++){
		if (document.form1.elements[i].type=="radio"){
			if (document.form1.elements[i].checked){
				if(strSeleccionados != "")
					strSeleccionados += " ";
				strSeleccionados +=document.form1.elements[i].value;
			}
		}
		
		if (document.form1.elements[i].type=="checkbox"){
			if (document.form1.elements[i].checked){
				var box = document.form1.elements[i].value;
				indFin = box.indexOf(":");
				
				idPregAct= box.substring (indIni, indFin);
				var pinchado = document.form1.elements[i].value;
				
				if(idPregAct!=idPregAnt){
					strSeleccionados += " ";
					idPregAnt = idPregAct; 
					strSeleccionados += pinchado;
				}else{
					var idRespTemp = "";
					var indIni1=pinchado.indexOf(":")+1;
					var indFin1=pinchado.length;
					idRespTemp = pinchado.substring (indIni1, indFin1);
					strSeleccionados += ";" + idRespTemp;
				}
			}
		}
	}
	arrSeleccionados = strSeleccionados.split(" ");
}

//**********************************************************************************************************
// * Función: activarNoDeseadas		   		      								
// * Autor: Elena S. V.							                           								
// * Fecha Creación: 31 Mayo de 2008 									           									
// * Objetivo: activamos todas las preguntas que hayan podido ser anuladas anteriormente                                                   
//**********************************************************************************************************
function activarNoDeseadas() {
	var indIni=0;
	var indFin=0;

	for (i=0; i < document.form1.length; i++){
		for(var j=0; j<arrDesactivadas.length; j++){
			var idPregDes = arrDesactivadas[j];
			if (document.form1.elements[i].name=="radio_" + idPregDes || document.form1.elements[i].name=="check_" + idPregDes){
				document.form1.elements[i].disabled=false;
			}
		}
		
	}
	arrDesactivadas=null;
}

//**********************************************************************************************************
// * Función: desactivarNoDeseadas		   		      								
// * Autor: Elena S. V.							                           								
// * Fecha Creación: 31 Mayo de 2008 								           									
// * Objetivo: recorremos las respuestas seleccionadas y desactivamos las preguntas correspondientes                                                   
//**********************************************************************************************************
function desactivarNoDeseadas() {
	var indIni=0;
	var indFin=0;
	var arrRespNoDeseadas = new Array();
	var cont =0;
	var arrIdPregNoDese = new Array();
	var cont2=0;
	
	for(var i=0; i<arrSeleccionados.length; i++){
			var reg = arrSeleccionados[i];
			indIni=reg.indexOf(":")+1;
	 		indFin=reg.length;
			var idResp = reg.substring (indIni, indFin);
			if(idResp.indexOf(";") != -1){
				indIni1=idResp.indexOf(":")+1;
	 			indFin1=idResp.length;
				var reg2 = idResp.substring (indIni1, indFin1);
				var arrRespCheck = reg2.split(";");
				
				for(var j=0; j<arrRespCheck.length; j++){
					var reg3 = arrRespCheck[j];
					
					arrRespNoDeseadas[cont]= reg3;
					cont++;
				}
			}else{
				arrRespNoDeseadas[cont]= idResp;
				cont++;
			}
			
	}
	for(var i=0; i<arrRespNoDeseadas.length; i++){
			var reg = arrRespNoDeseadas[i];
			obtenerNoDeseadas(reg);
			if(noDeseada.indexOf(";") != -1){
				var arrAuxPreg = noDeseada.split(";");
				for(var j=0; j<arrAuxPreg.length; j++){
					var reg4 = arrAuxPreg[j];
					arrIdPregNoDese[cont2]= reg4;
					cont2++;
				}
			}else{
				arrIdPregNoDese[cont2]= noDeseada;
				cont2++;
			}
	}
	
	arrDesactivadas = noDeseada.split(";");
}


//**********************************************************************************************************
// * Función: obtenerNoDeseadas			   		      								
// * Autor: Elena S. V.							                           								
// * Fecha Creación: 31 Mayo de 2008 							           									
// * Objetivo: dado un idRespuesta Obtiene todas las Preguntas que anula dicha respuesta                                                                      
//**********************************************************************************************************/
function obtenerNoDeseadas(idRespuesta) {
	var indIni=0;
	var indFin=0;
		
	if(arrNoDeseadas != null){
		for(var i=0; i<arrNoDeseadas.length; i++){
			var reg = arrNoDeseadas[i];
			indFin=reg.indexOf(":");
	 		
			var idResp = reg.substring (indIni, indFin);
			
			if(idResp == idRespuesta){
				indIni = indFin+1;
				indFin = reg.length;
				noDeseada=reg.substring (indIni, indFin);
			}
		}
	}
}

//**********************************************************************************************************
// * Función: obtenerSeleccionDefinitiva					   										
// * Autor: Elena S. V.							                           								
// * Fecha Creación: 31 Mayo de 2008 								           									
// * Objetivo:  obtenemos la selección definitiva de Preguntas-Respuestas quitándole las no deseadas                                                              
//**********************************************************************************************************

function obtenerSeleccionDefinitiva() {
	var indIni=0;
	var indFin=0;
	var arrSelecAux= new Array();
	var cont = 0;
	
	arrSeleccionados= strSeleccionados.split(" ");

	for(var i=0; i<arrSeleccionados.length; i++){
		var reg = arrSeleccionados[i];
		indFin=reg.indexOf(":");
		
		var idPreg = reg.substring (indIni, indFin);
		
		for(var j=0; j<arrDesactivadas.length; j++){
			var idPregDes = arrDesactivadas[j];
			if(idPreg != idPregDes){
				arrSelecAux[cont]=reg;
				cont++;
			}	
		}
			
	}
	arrSeleccionados=null;
	arrSeleccionados=arrSelecAux;
	
	for (i=0; i < document.form1.length; i++){
		for(var j=0; j<arrDesactivadas.length; j++){
			var idPregDes = arrDesactivadas[j];
			if (document.form1.elements[i].name=="radio_" + idPregDes || document.form1.elements[i].name=="check_" + idPregDes){
				if (document.form1.elements[i].checked){
					document.form1.elements[i].checked=false;
				}
				document.form1.elements[i].disabled=true;
			}
		}
		
	}
}

function obtenerRespuestas() {
	var indIni=0;
	var indFin=0;
	var cont = 0;
	var arrRespAcu = new Array();
	
	for(var i=0; i<arrPreguntas.length;i++){
		var regAux = arrPreguntas[i];
		
		indIni=regAux.indexOf(":")+1;
		indFin = regAux.length;
		var reg1 = regAux.substring (indIni, indFin);
		var arrRespAux = reg1.split(":");
		for(var j=0; j<arrRespAux.length;j++){
			arrRespAcu[cont]=arrRespAux[j];
			cont++;
		}
	}
	arrRespuestas = arrRespAcu;
}

function obtenerFamiliasVisualizar() {
	var indIni=0;
	var indFin=0;
	var conjBase= new Array();
	
	for(var i=0; i<arrSeleccionados.length; i++){
		var reg = arrSeleccionados[i];
		indIni=reg.indexOf(":")+1;
		indFin=reg.length;
		var reg2 =  reg.substring (indIni, indFin);
		
		
		if(reg.indexOf(";") == -1){
			obtenerStringFamilia(reg2);
			
			if(i==0){
				conjBase = arrFamiliasAct;
			}
			
			mergeFamilias(conjBase,arrFamiliasAct);
			conjBase=arrFamiVisibles;
		}else{
			var arrRespBox = reg2.split(";");
			var arrAuxFamilias = new Array();
			var contAux=0;	
			
			for(var j=0; j<arrRespBox.length; j++){
				obtenerStringFamilia(arrRespBox[j]);
				
				for(var t=0; t<arrFamiliasAct.length; t++){
					arrAuxFamilias[contAux] = arrFamiliasAct[t];
					contAux++;
				}
			}
			
			mergeFamilias(conjBase,arrAuxFamilias);
			conjBase=arrFamiVisibles;
		}
		
	}
	arrFamiVisibles = conjBase;
	visualizarImagenes();
}

function obtenerStringFamilia(idResp)
{
	var indIni=0;
	var indFin=0;

	strFamiliasAct ="";
	
	for(var j=0; j<arrRespuestas.length; j++){
		var reg1 = arrRespuestas[j];
		indFin=reg1.indexOf("&");
		var idRespAct = reg1.substring (indIni, indFin);
		if(idRespAct == idResp){
			indIni=indFin+1;
			indFin = reg1.length;
			strFamiliasAct = reg1.substring (indIni, indFin);
			arrFamiliasAct = strFamiliasAct.split(";");
			
			return true;
		}
	}
}

function borrarImagenes(){
	for (i=0;i<document.images.length;i++){
		var ruta = document.images[i].src;
		if(ruta.indexOf("img/productosSI/")!= -1){
      			document.images[i].style.MozOpacity = 0.2;
      			if(document.all)document.images[i].className = "alfa";
      		}
  	}
}

function visualizarImagenes(){
	borrarImagenes();
	
	for (i=0;i<document.images.length;i++){
      		for(var j=0; j<arrFamiVisibles.length; j++){
			if(document.images[i].name == arrFamiVisibles[j]){
				document.images[i].style.MozOpacity = 1;
				if(document.all)document.images[i].className = "noAlfa";
			}
		}
  	}
}
function mergeFamilias(familia1, familia2) {
	var arrFamiRela3 = null;
	var arrFamiRela4 =null;
	var familiasVisiAux="";
	familiasVisible = "";
	
	if(familia1 == familia2){
		arrFamiVisibles = familia2;
	}else{
		if(familia1.length > familia2.length){
			arrFamiRela3 = familia1;
			arrFamiRela4 = familia2;
		}else{
			arrFamiRela3 = familia2;
			arrFamiRela4 = familia1;
		}					
			
		for(var j=0; j<arrFamiRela3.length; j++){
			for(var k=0; k<arrFamiRela4.length; k++){
				if(arrFamiRela3[j]==arrFamiRela4[k]){
					if(j>0)
						familiasVisiAux+=";";
					familiasVisiAux+=arrFamiRela3[j];
				}
			}
		}
		
		familiasVisible = "";
		familiasVisibles = familiasVisiAux;
		arrFamiVisibles = familiasVisibles.split(";");
	}
}

function verSolucion(){
	var encontrado=0;
	var idFamilia="";
	
	document.getElementById("textoSI1").style.display = 'none';
	document.getElementById("textoSI2").style.display = 'block';
	
	document.getElementById("familiasContainer").style.display = 'none';
	document.getElementById("familiasFiltro").style.display = 'block';
	document.getElementById("familiasFiltro_" + filtroAct).style.display = 'block';
	document.getElementById("iniSolucion").style.display = 'none';
	
	for(var j=0; j<arrFamiVisibles.length; j++){
		if (document.getElementById("familia_" + arrFamiVisibles[j]) != null){
			(document.getElementById("familia_" + arrFamiVisibles[j])).style.display = 'block';
		}
	}

	for(var i=0; i<arrPreguntas.length; i++){
			var reg = arrPreguntas[i];
			
			indIni=0;
			indFin=reg.indexOf(":");
	 		var anular = reg.substring (indIni, indFin);
	 		
			
			for (j=0; j < document.form1.length; j++){
				if (document.form1.elements[j].name=="radio_" + anular || document.form1.elements[j].name=="check_" + anular){
					document.form1.elements[j].disabled=true;
				}
			}
			
			
		}
	document.getElementById("contVerMiSol").style.display = 'none';
	document.getElementById("contVolverSol").style.display = 'block';
	document.getElementById("linkSolPresupuesto").style.display = 'block';

}
function volverSolucion(){

		document.getElementById("textoSI1").style.display = 'block';
		document.getElementById("textoSI2").style.display = 'none';
		document.getElementById("contVerMiSol").style.display = 'block';
		document.getElementById("contVolverSol").style.display = 'none';
		document.getElementById("linkSolPresupuesto").style.display = 'none';
		document.getElementById("iniSolucion").style.display = 'block';
		document.getElementById("familiasContainer").style.display = 'block';
		document.getElementById("familiasFiltro").style.display = 'none';
		document.getElementById("familiasFiltro_" + filtroAct).style.display = 'none';
		for(var i=0; i<arrPreguntas.length; i++){
				var reg = arrPreguntas[i];
				indIni=0;
				indFin=reg.indexOf(":");
		 		var anular = reg.substring (indIni, indFin);
				for (j=0; j < document.form1.length; j++){
					if (document.form1.elements[j].name=="radio_" + anular || document.form1.elements[j].name=="check_" + anular){
						document.form1.elements[j].disabled=false;
					}
				}
		}

		
}
