//función que crea un objeto XMLHttpRequest
function creaXHR()
{
  var ref = false;

  try {
   ref = new ActiveXObject('Msxml2.XMLHTTP');
  } 
  catch (e1) {
		try {
     		ref = 
        	new ActiveXObject('Microsoft.XMLHTTP');
     	}  
		catch (e2) {
     		objXML = false;
   		}
  }

  if (!ref && (typeof XMLHttpRequest != 'undefined' || window.XMLHttpRequest)) 
   		ref = new XMLHttpRequest();  
   
  return ref;
}

//función que devuelve el valor de un radiobutton
function getRadioButton(btn){
	//el parametro btn es un array de los radio
	//document.forms[0].name
    var cnt = -1;
	for (var i=btn.length-1; i > -1; i--) {
		if (btn[i].checked) {
			cnt = i; 
			i = -1;
		}
	}
	if (cnt > -1) return btn[cnt].value;
	else return null;
}

//función que comprueba si un campo está vacío
function esVacio(campo){
	var vacio = false;
	var valor = campo.value;
	
	if(valor == ""){
		vacio = true;
	}
	
	return vacio;
}

//función que comprueba que no haya '&', '<' o '>' en una cadena
function comprobarCadena(cad) {
	var valido = true;
	
	for(var i=0; i<cad.length; i++) {
		if(cad.charAt(i) == '&' || cad.charAt(i) == '<' || cad.charAt(i) == '>')
			valido = false;
	}	
	
	return valido;
} 

//función que comprueba que una cadena sólo contenga texto
function soloTexto(cad){
	var valido=true;
	
	var patron = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ" + "abcdefghijklmnñopqrstuvwxyzáéíóú ";
	for(var i = 0; i<cad.length; i++){
		if(patron.indexOf(cad.charAt(i)) == -1){
			valido = false;
		}
	}
	return valido;
}

//función que comprueba que una cadena sólo contenga números y, si es necesario, que tiene una longitud mínima
function soloNumeros(cad, longmin){
	var valido=true;
	
	var patron = "0123456789";
	for(var i = 0; i<cad.length; i++){
		if(patron.indexOf(cad.charAt(i)) == -1){
			valido = false;
		}
	}
	
	if(longmin && cad.length < longmin){
		valido = false;
	}
	return valido;
}

//función que comprueba que un precio está en formato correcto
//nos devuelve si es válido y el precio sustituyendo las comas por puntos
function compruebaPrecio(cad){
	var valido = true;
	var respuesta = {};
	var precio = "";
	var comas = 0;
	
	var patron = "0123456789.,";
	for(var i = 0; i<cad.length; i++){
		if(patron.indexOf(cad.charAt(i)) == -1){
			valido = false;
		}
		else if(cad.charAt(i) == ',' || cad.charAt(i) == '.'){
			if(comas == 1){
				//hay más de una coma, el precio está mal
				valido = false;
				break;
			}
			precio += '.';
			comas ++;
		}
		else{
			precio += cad.charAt(i);
		}
	}
	
	respuesta.valido = valido;
	respuesta.precio = precio;
	return respuesta;
}

//función que nos formatea el dni como nosotros queremos
function formateaDNI(cad){
	var patron = '0123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ';
	var dni = "";
	
	for(var i=0; i<cad.length; i++){
		var caracter = cad.charAt(i);
		if(patron.indexOf(caracter) != -1){
			dni += caracter;
		}
	}
	
	dni = dni.toUpperCase();
	return dni;
}

//función que comprueba que el DNI introducido es válido
function compruebaDNI(txt){
	var valido = true;
	//lo formateamos
	var cad = formateaDNI(txt);

	if(cad.length != 9){
		valido = false;
	}
	else{
		if(!soloNumeros(cad.substring(0, 8)) || !soloTexto(cad.substring(8, 9))){
			valido = false;
		}
	}
	return valido;
}

//función que comprueba que el email es válido
function compruebaEmail(email) {
	var valido = false;
	
	var filter=/[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{1,4}/;
	
	
	if (email.length == 0 || !filter.test(email)) {
		valido = false;
	}
	
	else if (filter.test(email)) {
		valido = true;
	}
	
	return valido;
}

//función que crea una capa oscura sobre la pantalla
function creaCapaOscura(){
	capa = document.createElement('div');
	capa.id = 'capaOscura';
	document.body.appendChild(capa);
	document.body.style.overflow = 'hidden';
}

//función que comprueba las fechas
function comprobarFechas(div, id1, id2){
	//el parámetro div es el div donde vamos a imprimir los errores
	//los id de las fechas son 'entrada' y 'salida', a no ser que indiquemos lo contrario
	var id_entrada = id1 || 'entrada';
	var id_salida = id2 || 'salida';
	
	var validas = true;
	
	var fecha_actual = new Date();
	fecha_actual.setHours(0, 0, 0, 0);
	
	//recogemos la fecha de entrada
	if(esVacio($(id_entrada))){
		validas = false;
		div.innerHTML = 'Rellena el campo de fecha entrada';
		div.style.display = 'block';
		return false;
	}
	var input_entrada = $(id_entrada).value;
	
	var dia_mes_ano = input_entrada.split('/');
	
	var dia = dia_mes_ano[0];
	var mes = dia_mes_ano[1]-1;
	var ano = dia_mes_ano[2]
	
	var fecha_entrada = new Date(ano, mes, dia);
	
	//recogemos la fecha de salida
	if(esVacio($(id_salida))){
		validas = false;
		div.innerHTML = 'Rellena el campo de fecha salida';
		div.style.display = 'block';
		return false;
	}
	var input_salida = $(id_salida).value;
	
	var dia_mes_ano = input_salida.split('/');
	
	var dia = dia_mes_ano[0];
	var mes = dia_mes_ano[1]-1;
	var ano = dia_mes_ano[2]
	
	var fecha_salida = new Date(ano, mes, dia);
	
	if(fecha_entrada <= fecha_actual){
		validas = false;
		div.innerHTML = 'Introduce una fecha de entrada posterior al día de hoy';
		div.style.display = 'block';
		return false;
	}
	
	if(fecha_salida <= fecha_entrada){
		validas = false;
		div.innerHTML = 'Introduce una fecha de salida posterior a la fecha de entrada';
		div.style.display = 'block';
		return false;
	}
	
	return validas;
}

//nos devuelve el parámetro del get, si hay más de uno devuelve el último
function cogerGET(){
	var url = window.location.href;
	var trozos = url.split('=');
	return trozos[trozos.length-1];
}

//función que nos muestra el calendario de disponibilidad
function muestraCalendario(ano, mes){
	var datos = 'anho='+ano+'&mes='+mes;
	
	//hacemos una update del contenido
	var actualizar = new Ajax.Updater($('calendario'), 'calendario.php?'+datos, {
		asynchronous: false,
	});
}