function openwin(url, width, height)
{
var name = "popup"; // popup name
var width = width; // popup width
var height = height; // popup height
var left = (screen.width - width) / 2 ;
var top = (screen.height - height) / 2;
var windowproperties = "width="+ width +",height="+ height +",left="+ left +",top="+ top +",scrollbars=0";
return window.open(url, name, windowproperties);
}
function es_bisiesto (anno)
{
	var resultado;

	resultado=false;
	// Para que sea bisiesto debe ser divisible entre cuatro
	if ((anno % 4)==0)
		{
		 resultado=true;
		 // ¿ Es un fin de siglo ?
		 if ((anno % 100)==0)
			{
				// Si es un fin de siglo es bisiesto tan solo si es múltiplo
				// de 400
				if ((anno % 400)==0)
					resultado=true;
				else
					resultado=false;
			}
		}
	return (resultado);
}

function valida_fecha (cad_fecha)
{
	///alert (cad_fecha);
	var matriz;
	var resultado;		// valor de retorno
	var i_numero_dias;	// Array con el número de días.
	var i_annos;
	var i_meses;
	var i_dias;

	i_numero_dias=new Array ();
	matriz		 =new Array ();

	// Asignación de los número de días que tienen los meses.
	i_numero_dias[0]=31;
	i_numero_dias[1]=28;
	i_numero_dias[2]=31;
	i_numero_dias[3]=30;
	i_numero_dias[4]=31;
	i_numero_dias[5]=30;
	i_numero_dias[6]=31;
	i_numero_dias[7]=31;
	i_numero_dias[8]=30;
	i_numero_dias[9]=31;
	i_numero_dias[10]=30;
	i_numero_dias[11]=31;

	// Se divide la cadena en sus componentes
	matriz=cad_fecha.split ("/");
	/*
	// ¿ División con exito ?
	if (matriz.length<=1)
	{
		// Se intenta la división usando como caracter separador el
		// guion.
		matriz =cad_fecha.split ("/");
	}
	*/
	resultado=true;

	// ¿ Alguna de las dos separaciones ha tenido éxito ?
	if (matriz.length==3)
		{
		eval ("i_annos="+matriz [2]+";");
		eval ("i_meses="+matriz [1]+";");
		eval ("i_dias="+matriz [0]+";");

		// Años...
		if ((i_annos>2100) || (i_annos<1900))
				resultado=false;
		else
			{
			// Si el año está correcto ajustamos el número de días
			// de febrero si el año es bisiesto
			if (es_bisiesto (i_annos))
				i_numero_dias [1]=29;

			// Meses
			if ((i_meses<1) || (i_meses>12))
				resultado=false;

			// Dias, validación del número de días.
			if (resultado)
				if ((i_dias<1) || (i_dias>i_numero_dias [i_meses-1]))
					resultado=false;
			}
		}
	else
		// La división en cadenas ha dado como resultado
		resultado=false;


	return (resultado);
}

function isMail(Cadena) {
 
 Punto = Cadena.substring(Cadena.lastIndexOf('.') + 1, Cadena.length)   // Cadena del .com
 Dominio = Cadena.substring(Cadena.lastIndexOf('@') + 1, Cadena.lastIndexOf('.'))  // Dominio @lala.com
 Usuario = Cadena.substring(0, Cadena.lastIndexOf('@'))     // Cadena lalala@
 Reserv = "@/º\"\'+*{}\\<>?¿[]áéíóú#·¡!^*;,:"      // Letras Reservadas
 
 // Añadida por El Codigo para poder emitir un alert en funcion de si email valido o no
 valido = true
 
 // verifica qie el Usuario no tenga un caracter especial
 for (var Cont=0; Cont<Usuario.length; Cont++) {
  X = Usuario.substring(Cont,Cont+1)
  if (Reserv.indexOf(X)!=-1)
                 valido = false
 }
 
 // verifica qie el Punto no tenga un caracter especial
 for (var Cont=0; Cont<Punto.length; Cont++) {
  X=Punto.substring(Cont,Cont+1)
  if (Reserv.indexOf(X)!=-1)
   valido = false
 }
                        
 // verifica qie el Dominio no tenga un caracter especial
 for (var Cont=0; Cont<Dominio.length; Cont++) {
  X=Dominio.substring(Cont,Cont+1)
  if (Reserv.indexOf(X)!=-1)
   valido = false
  }
 
 // Verifica la sintaxis básica.....
 if (Punto.length<2 || Dominio <1 || Cadena.lastIndexOf('.')<0 || Cadena.lastIndexOf('@')<0 || Usuario<1) {
  valido = false
 }
 
 // Añadido por El Código para que emita un alert de aviso indicando si email válido o no
 if (valido) {
  return true //cambiar por return true para hacer el submit del formulario en caso de validacion correcta
 } else {
	alert("El email es incorrecto, ej. nombre@dominio.es");
  return false
 }
}
function quita_espacios(cadena) // como el trim en Visual Basic
{
	var compruebaizquierda=/^ .+$/
	var compruebaderecha=/^.+ $/
	var correcto
	correcto=false
	while (correcto==false)
	{
		if (compruebaizquierda.test(cadena))
		{
			cadena = cadena.substr(1);
		}
		else
		{
			if (compruebaderecha.test(cadena))
			{
				cadena = cadena.substr(0,cadena.length-1)
			}
			else
			{
				correcto=true
			}
		}
	}
	return (cadena)
}

function vale_nif(cifnif)
{
    var vnif,vdni
	var letranif,numero,letra
	cifnif = quita_espacios(cifnif)
	cifnif = cifnif.toUpperCase()
	letranif = cifnif.substr(0,1)
	if (isNaN(letranif))
	{
		if (letranif != "X" && letranif != "Z")
		{
/*			if (!val_cif(cifnif))
			{
				alert("El CIF no es correcto")
				return false
			}
			else
			{
				return true
			}*/
		}
		else
		{
			cifnif = cifnif.substr(1);
		}
	}
	vdni=cifnif.substr(0,cifnif.length-1) //Numeros del DNI
	if (vdni.length > 8)
	{
		alert("El DNI no puede tener mas de 8 números")
		return false
	}
	vnif=cifnif.substr(cifnif.length-1,1) //Letra del DNI
	numero=vdni - Math.round(vdni / 23) * 23 //Calculo de la letra
	if (numero < 0) // esto es por que al redondear suma uno y hay que corregirlo
		numero += 23; // sumamos 23 porque se multiplico el 1 que sumamos por 23
		
	switch (numero)
	{
		case 0:
		{	letra="T";
			break;
		}
		case 1:
		{	letra="R";
			break;
		}
		case 2:
		{	letra="W";
			break;
		}
		case 3:
		{	letra="A";
			break;
		}
		case 4:
		{	letra="G";
			break;
		}
		case 5:
		{	letra="M";
			break;
		}
		case 6:
		{	letra="Y";
			break;
		}
		case 7:
		{	letra="F";
			break;
		}
		case 8:
		{	letra="P";
			break;
		}
		case 9:
		{	letra="D";
			break;
		}
		case 10:
		{	letra="X";
			break;
		}
		case 11:
		{	letra="B";
			break;
		}
		case 12:
		{	letra="N";
			break;
		}
		case 13:
		{	letra="J";
			break;
		}
		case 14:
		{	letra="Z";
			break;
		}
		case 15:
		{	letra="S";
			break;
		}
		case 16:
		{	letra="Q";
			break;
		}
		case 17:
		{	letra="V";
			break;
		}
		case 18:
		{	letra="H";
			break;
		}
		case 19:
		{	letra="L";
			break;
		}
		case 20:
		{	letra="C";
			break;
		}
		case 21:
		{	letra="K";
			break;
		}
		case 22:
		{	letra="E";
			break;
		}
	}
	if (letra != vnif)
	{
		alert("El dato DNI no es correcto")
		return false
	}
	return true
}

function rellenaceros_nif(nif)
{
    var longitud;
	var x;
	var valor;

	nif = quita_espacios(nif);
	nif = nif.toUpperCase();
	valor = nif;

	longitud = nif.length;
	
	for (var x=longitud; x<9; x++) 
	{
		valor = "0" + valor;
	}
 	
	return valor;
}

function num_onkeypress(evento)
{
	if (document.all)
	{
		if ((event.keyCode < 47) || (event.keyCode > 57)) 
		       {event.returnValue = false;};
	}
	else
	{
		if (evento.charCode > 31 && (evento.charCode < 48 || evento.charCode > 57)) 
		       {return false; evento.returnValue = false};
	};
}
function validar_fecha(evento)
{
	if (document.all)
	{
		if (((event.keyCode < 47) || (event.keyCode > 57))  && (event.KeyCode != 47)){event.returnValue = false;};
	}
	else
	{
		if (evento.charCode > 31 && (evento.charCode < 47 || evento.charCode > 57)) {return false; evento.returnValue = false;};
	}
}

function comparar_fechas(fecha_ini, fecha_fin) 
{
Data1_arr = fecha_ini.split('/')
Data2_arr = fecha_fin.split('/')

if (Data1_arr[1].length==1)
{
	Data1_arr[1]="0"+Data1_arr[1];
}
if (Data1_arr[0].length==1)
{
	Data1_arr[0]="0"+Data1_arr[0];
}
if (Data2_arr[1].length==1)
{
	Data2_arr[1]="0"+Data2_arr[1];
}
if (Data2_arr[0].length==1)
{
	Data2_arr[0]="0"+Data2_arr[0];
}

//año mes dia
fecha_ini = Data1_arr[2] + Data1_arr[1] + Data1_arr[0]
fecha_fin = Data2_arr[2] + Data2_arr[1] + Data2_arr[0]
fecha_ini = parseInt(fecha_ini);
fecha_fin = parseInt(fecha_fin);

if (fecha_ini > fecha_fin) {
return false;
}
return true;

}
function num_hora(evento)
{
	if (document.all)
	{
		var caracter;
		caracter = String.fromCharCode(window.event.keyCode);
		if (caracter < "0" || caracter > "9")
		{
			if (caracter != ":")
				window.event.returnValue = false;
		}
	}
	else
	{
		var caracter;
		caracter = String.fromCharCode(evento.charCode);
		if (caracter < "0" || caracter > "9")
		{
			if (caracter != ":")
				{return false; evento.returnValue = false;}
		}		
	}
}

function validar_hora(hora)
{
	if(hora.length<5)
		return false;
		
	vector = new Array();
	vector = hora.split(":");
	
	if(vector[0].length!=2 || vector[0]<00 || vector[0]>23)
		return false;
		
	if(vector[1].length!=2 || vector[1]<00 || vector[1]>59)
		return false;
		
	return true;
}