/**
Functión que obtiene la lista de subfamilias a partir 
de la familia seleccionada.
**/
function getSubfamilias(){
	var valor;
	valor = document.getElementById("primerCombo").value; 
	ajax = nuevoAjax();
	ajax.open("GET", "../../asp/busquedas.asp?tipo=1&valor=" + valor, true);
	ajax.onreadystatechange = function(){
		if (ajax.readyState==4){
			llenarCombo("segundoCombo", ajax.responseText);		
			vaciarCombo("tercerCombo");		
		}
	}
	ajax.send(null);
}

/**
Functión que obtiene la lista de subfamilias para el listado a partir 
de la familia seleccionada.
Parametros:
	valor: id de la familia
**/
function getSubfamiliasListado(valor){
	ajax = nuevoAjax();
	ajax.open("GET", "../../asp/busquedas.asp?tipo=1&valor=" + valor, true);
	ajax.onreadystatechange = function(){
		if (ajax.readyState==4){
			alert(ajax.responseText);		
		}
	}
	ajax.send(null);
}


/**
Functión que obtiene la lista de productos a partir 
de la subfamilia seleccionada.
**/
function getProductos(){
	var valor;
	valor = document.getElementById("segundoCombo").value; 
	ajax = nuevoAjax();
	ajax.open("GET", "../../asp/busquedas.asp?tipo=2&valor=" + valor, true);
	ajax.setRequestHeader('Content-Type','text/html; charset=iso-8859-1');
	ajax.onreadystatechange = function(){
		if (ajax.readyState==4){
			llenarCombo("tercerCombo", ajax.responseText);		
		}
	}
	ajax.send(null);
}

/**
Functión que obtiene la lista de productos para el listado a partir 
de la subfamilia seleccionada.
Parametros:
	elemento: elemento que está seleccionado ahora
	valor: id de la subfamilia
**/
function getProductosListado(elemento, valor){
	ajax = nuevoAjax();
	ajax.open("GET", "../../asp/busquedas.asp?tipo=2b&valor=" + valor, true);
	ajax.onreadystatechange = function(){
		if (ajax.readyState==4){
			mostrarProductos(ajax.responseText);
		}
	}
	ajax.send(null);
	destacarSubfamilia(elemento);
}

/**
Functión que obtiene la lista de descargas para el listado a partir 
de la subfamilia seleccionada.
Parametros:
	elemento: elemento que está seleccionado ahora
	valor: id de la subfamilia
**/
function getDescargasListado(elemento, valor, area){
	ajax = nuevoAjax();
	ajax.open("GET", "../../asp/busquedas.asp?tipo=2c&valor=" + valor, true);
	ajax.onreadystatechange = function(){
		if (ajax.readyState==4){
			mostrarDescargas(ajax.responseText, area);
		}
	}
	ajax.send(null);
	destacarSubfamilia(elemento);
}


/**
Función que muestra la lista de productos de una subfamilia
**/
function mostrarProductos(datos){
	myString = new String(datos);
	bloques = myString.split("|");
	//Se extaraen los datos del primer bloque - Nombre de la familia y de la subfamilia
	strCabecera =  new String(bloques[0]);
	cabecera = strCabecera.split("@");
  document.getElementById("nombreSubfamilia").innerHTML = cabecera[1];
  //Se extrae el resto de los datos - Id de producto y Nombre de producto
	strCodigo = '';
	for (var j=1; j<bloques.length-1; j++){
		mySubstring = new String(bloques[j]);
		campos = mySubstring.split("@");
		strCodigo += '<li><a href="#" onClick="verProducto(' + campos[0] + ')" class="producto">' + campos[1] + '</a></li>';
	}
	document.getElementById("linksProductos").innerHTML = strCodigo; 
	document.getElementById('listadoProductos').style.display  = 'block';
	document.getElementById('portada').style.display  = 'none';
}

/**
Función que muestra la lista de descargas de una subfamilia
**/
function mostrarDescargas(datos, area){
	myString = new String(datos);
	bloques = myString.split("|");
	//Se extaraen los datos del primer bloque - Nombre de la familia y de la subfamilia
	strCabecera =  new String(bloques[0]);
	cabecera = strCabecera.split("@");
	document.getElementById("nombreSubfamilia").innerHTML = "Documentación técnica de \"" +  cabecera[1] + "\"";	
	//Se extrae el resto de los datos - Id de producto y Nombre de producto
	strCodigo = '';
	for (var j=1; j<bloques.length-1; j++){
		mySubstring = new String(bloques[j]);
		campos = mySubstring.split("@");
		strCodigo += '<li class="link"><a target="_blank" href="../../archivos/' + area + '/' + campos[2] + '/descargas/' + campos[1] + '"  class="producto">' + campos[4] + ' - '  + campos[0] + '</a></li>';
	}
	if (j==1){
		strCodigo += "<li>No hay descargas disponibles para esta familia.</li>";
	}
	document.getElementById("linksProductos").innerHTML = strCodigo; 
	document.getElementById('nombreSubfamilia').style.display  = 'block';
}

/**
Función que va a la ficha del producto desde el listado.
**/
function verProducto(num){
	combo = document.getElementById("tercerCombo");
	combo.options[1] = new Option(num, num);
	combo.options[1].selected = true;
	document.getElementById("form").submit();
}

/**
Función que valida los combos para que todos tengan contenido.
**/
function validarDatos(){
	var correcto = true;
	document.getElementById('buscarCodigo').value = 0;
	correcto = marcarError("primerCombo") & marcarError("segundoCombo") & marcarError("tercerCombo");
	if (correcto){
		document.getElementById('form').submit();
	}
}

/**
Función que valida los combos para que todos tengan contenido.
**/
function validarCodigo(){
	var correcto = true;
	correcto = marcarError("codigoProducto");
	if (correcto){
		document.getElementById('buscarCodigo').value = 1;
		document.getElementById('form').submit();
	}
}

/**
Funcion que llama a validar código con un código preestablecido.
**/
function accesoCodigo(num){
		document.getElementById('codigoProducto').value = num;
		validarCodigo();
}

/**
Función que controla la pulsación de enter al meter un código.
**/
function pulsaValidar(){
	//Control de la pulsación de enter
	if (window.event.keyCode == 13)
		validarCodigo();
}

/**
Función que valida el formulario de cliente.
**/
function validarCliente(){
	if (document.getElementById('name').value && document.getElementById('pass').value){
		document.getElementById('form2').submit();
	}else{
		alert("Debe rellenar los dos campos");
	}
}

/** 
Función que marca la casilla erronea a rojo y devuelve un error.
Parametros:
	-nombre: nombre del combo a chequear
**/
function marcarError(nombre){
	var valor = document.getElementById(nombre).value;
	if (valor<0 || valor==""){
		//Se pone a rojo el campo para avisar del error
		document.getElementById(nombre).style.backgroundColor = "red";
		document.getElementById(nombre).style.color = "#fff";
		return false;
	}else{
		return true;
	}
}

/**
Functión que prepara el objeto ajax
**/
function nuevoAjax(){
	var xmlhttp = false;
	try{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
		try{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(E){
			xmlhttp = false;
		}
	}
	if (!xmlhttp && typeof XMLHttpRequest!= 'undefined'){
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

/**
Functión que vacía el objeto combo box que se pasa como parámetro.
Parámetros:
	- nombre: nombre del combo box
**/
function vaciarCombo(nombre){
	combo = document.getElementById(nombre);
	for (var j=combo.length; j>0; j--){
		combo.options[j] = null;
	}
	combo.options[0].selected = true;
}

/**
Functión que llena el objeto combo box que se pasa como parámetro con
los datos que también pasados.
Parámetros:
	- nombre: nombre del combo box
	- datos: string con los datos separando por | cada registro y por @ cada campo
**/
function llenarCombo(nombre, datos){
	vaciarCombo(nombre);
	combo = document.getElementById(nombre);
	//Se crea un array por cada registro
	myString = new String(datos);
	elementos = myString.split("|"); 
//	combo.options[0] = new Option("Seleccione ahora un campo", -1);;
	for (var j=0; j<elementos.length-1; j++){
		mySubstring = new String(elementos[j]);
		campos = mySubstring.split("@");
		combo.options[j+1] = new Option(campos[1], campos[0]);
	}
}

/**
Functión que quita los estilos a todos los combos.
**/
function resetCombos(){
	document.getElementById("primerCombo").style.backgroundColor = "#fff";
	document.getElementById("primerCombo").style.color = "#000";
	document.getElementById("segundoCombo").style.backgroundColor = "#fff";
	document.getElementById("segundoCombo").style.color = "#000";
	document.getElementById("tercerCombo").style.backgroundColor = "#fff";
	document.getElementById("tercerCombo").style.color = "#000";
}

function ampliar(direccion){
	window.open('../../asp/ventanaFotos.asp?direccion='+direccion,'','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=100,height=100,screenX=1,screenY=1,top=10,left=10');
}

/**
Función que abre una lista de elementos y cierra el resto
**/
function abreCierra(este, nivel, familia, area, catalogo){
//cierraTodos(este);
var nav, color, ruta;
nav = document.getElementById('familias').getElementsByTagName('ul')[nivel];
nav.style.display = (nav.style.display=='none') ? 'block' : 'none';	
este.className = (este.className == 'familiaOn') ? 'familia':'familiaOn';
//En caso de hacer la llamada desde descargas se rellena el dato del catálogo
if (document.getElementById('bloqueCatalogo')!=null){
	document.getElementById('bloqueCatalogo').style.display = 'block';
	document.getElementById('bloqueCatalogo').innerHTML = '<a target="_blank" href="../../archivos/' + area + '/' + familia + '/descargas/' + catalogo +' " id="catalogo">CATALOGO DE ' + familia + '</a>';
	document.getElementById('linksProductos').style.display = 'block';
}
}

/** 
Función que cierra todas las familias, menos la actual, antes de expandir una familia
**/
function cierraTodos(este){
	nivel = 0;
	nav = document.getElementById('familias').getElementsByTagName('ul')[nivel];
	while (nav){		
		nav.style.display = 'none'; 	
		nivel++;		
		nav = document.getElementById('familias').getElementsByTagName('ul')[nivel];		
	}
	//Pongo todas las familias a off
	nivel = 0;
	elem = document.getElementById('familias').getElementsByTagName('li')[nivel]
	while (elem){		
		elink = elem.getElementsByTagName('a')[0] 
		if (elink.className == "familiaOn"){
				elink.className = "familia";
				if (elink != este){
					elemAct = elem.getElementsByTagName('ul')[0];
					elemAct.style.display = 'none';
				}					
		}
		nivel++;		
		elem = document.getElementById('familias').getElementsByTagName('li')[nivel]
	}
}

/** 
Función que inicialmente muestra un texto en el listado de productos y comprime todas las familias
**/
function inicioListado(id_familia, id_subfamilia){
	if (id_subfamilia){
		document.getElementById('portada').style.display  = 'none';
		getProductosListado(this, id_subfamilia);
	}
	document.getElementById('listadoProductos').style.display  = 'none';
	cierraTodos();
	if (id_familia){
		nav = document.getElementById('f' + id_familia);
		nav.style.display ='block';
		nav2 = document.getElementById('l' + id_familia);
		nav2.className = "familiaOn";
	}
}

/** 
Función que inicialmente muestra un texto en el listado de productos y comprime todas las familias
**/
function inicioListado2(id_familia, id_subfamilia){
	cierraTodos();
	if (id_familia){
		nav = document.getElementById('f' + id_familia);
		nav.style.display ='block';
		nav2 = document.getElementById('l' + id_familia);
		nav2.className = "familiaOn";
	}
}


/** 
Función que destaca un elemento del menú
**/
function destacarSubfamilia(elemento){
	limpiarSubfamilias(elemento);
	elemento.className = 'subfamiliaOn';
}

function limpiarSubfamilias(elemento){
	//Pongo todas las subfamilias a off
	elem = document.getElementById('familias').getElementsByTagName('li');
	for (i=0; i<elem.length; i++){
		//elem2 = elem[i].getElementsByTagName('ul');		
		elem2 = elem[i].getElementsByTagName('a');
		if (elem2[0].className=="subfamiliaOn"){
			elem2[0].className ="subfamilia";
		}
	}
}


function abrirPagina(nombre){
	document.location.href=nombre;
}

/** 
Función que valida los datos del formulario de solar
**/
function validarForm(){
	//Validación de los campos obligatorios
	if(!document.getElementById("nombre").value | !document.getElementById('apellidos').value | !document.getElementById('provincia').value | !document.getElementById('email').value)
		alert("Datos incompletos");
	else{
		telefono = document.getElementById('telefono').value;
		email = document.getElementById('email').value;
		if(!telefono & !email)
			alert("Datos incompletos");
		else
			if (email && !isValidEmail(email))
				alert("Email erroneo");
			else 
				document.getElementById('formulario').submit();
	}
	
}

/** 
Función que valida los datos del formulario de solar
**/
function isValidEmail(str) {
   return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
}