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("E-Mail 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 NIF 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("Los datos del nif no son correctos")
		return false
	}
	return true
}

function val_cif(cif)
{
	var cadenacif = new Array("A","B","C","D","E","F","G","H","I","J")
	var arrcif = new Array(9)
	var aux1
	var aux2
	var i
	var digito
	
	for (i=0;i<=8;i++)
	{ 
		arrcif[i] = (cif.substr(i,1) - 1) + 1;
	}
	
	aux1 = arrcif[2] + arrcif[4] + arrcif[6]
	aux2 = suma_impares(arrcif[1]) + suma_impares(arrcif[3]) + suma_impares(arrcif[5]) + suma_impares(arrcif[7])
	aux1 = aux1 + aux2
	digito = 10 - (aux1%10)
	if (cadenacif[digito-1] == cif.substr(8,1))
	{
		return (true)
	}
	else
	{
		if (!isNaN(cif.substr(8,1)))
		{
			if (digito == 10) digito=0;
			return (digito==arrcif[8])
		}
		else
		{
			return (false)
		}
	}
}

function suma_impares(ndigito)
{
   var nsuma
   nsuma = ndigito * 2
   if (nsuma >= 10) nsuma = (nsuma%10) + 1;
   return nsuma
}

/*
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;
}

function escribirFecha(evento)
{
	if (document.all) //explorer
	{
		if ((window.event.keyCode < "0".charCodeAt(0) || window.event.keyCode > "9".charCodeAt(0)) && window.event.keyCode != "/".charCodeAt(0))
		{   
			window.event.keyCode = 0;
		} else {
			switch (document.activeElement.value.length)
			{
				case 0: if (window.event.keyCode == "/".charCodeAt(0))
						{
							window.event.keyCode = 0;
						} else if (window.event.keyCode > "3".charCodeAt(0) && window.event.keyCode <= "9".charCodeAt(0))
								{
									document.activeElement.value = "0" + document.activeElement.value + String.fromCharCode(window.event.keyCode) + "/";
									window.event.keyCode = 0;
								}
						break;

				case 1: if (document.activeElement.value == 3 && window.event.keyCode > "1".charCodeAt(0) || document.activeElement.value == 0 && window.event.keyCode == "0".charCodeAt(0))
						{
							window.event.keyCode = 0;
						} else if (window.event.keyCode != "/".charCodeAt(0))
								{
									document.activeElement.value = document.activeElement.value + String.fromCharCode(window.event.keyCode) + "/";
									window.event.keyCode = 0;
								} else {
									if (document.activeElement.value >= 1 && document.activeElement.value <= 3)
									{
										document.activeElement.value = "0" + document.activeElement.value + String.fromCharCode(window.event.keyCode);
	                                    window.event.keyCode = 0;
									}
                                }
						break;

				case 2: if (window.event.keyCode != "/".charCodeAt(0))
						{
							window.event.keyCode = 0;
						}
						break;

				case 3: if (window.event.keyCode == "/".charCodeAt(0))
						{
							window.event.keyCode = 0;
						} else if (window.event.keyCode > "1".charCodeAt(0) && window.event.keyCode <= "9".charCodeAt(0))
								{
									document.activeElement.value = document.activeElement.value + "0" + String.fromCharCode(window.event.keyCode) + "/";
									window.event.keyCode = 0;
								}
						break;

				case 4: if (document.activeElement.value.substr(3) == 1 && window.event.keyCode > "2".charCodeAt(0) || document.activeElement.value.substr(3) == 0 && window.event.keyCode == "0".charCodeAt(0))
						{
							window.event.keyCode = 0;
						} else if (window.event.keyCode != "/".charCodeAt(0))
								{
									document.activeElement.value = document.activeElement.value + String.fromCharCode(window.event.keyCode) + "/";
									window.event.keyCode = 0;
								} else {
									if (document.activeElement.value.substr(3) == 1)
									{
										document.activeElement.value = document.activeElement.value.substr(0,3)  + "01" + String.fromCharCode(window.event.keyCode);
										window.event.keyCode = 0;
									}
								}
						break;

				case 5: if (window.event.keyCode != "/".charCodeAt(0))
						{
							window.event.keyCode = 0;
						}
						break;

				default: if (window.event.keyCode == "/".charCodeAt(0))
						{
							window.event.keyCode = 0;
						}

			}
		}
	} else { //mozilla
		if ((evento.charCode < "0".charCodeAt(0) || evento.charCode > "9".charCodeAt(0)) && evento.charCode!=0 && evento.charCode != "/".charCodeAt(0))
		{   
			return false;
		} else {
			switch (document.activeElement.value.length)
			{
				case 0: if (evento.charCode == "/".charCodeAt(0))
						{   
							return false; 
						} else if (evento.charCode > "3".charCodeAt(0) && evento.charCode <= "9".charCodeAt(0))
								{
									document.activeElement.value = "0" + document.activeElement.value + String.fromCharCode(evento.charCode) + "/";
									return false; 
								}
						break;

				case 1: if (document.activeElement.value == 3 && evento.charCode > "1".charCodeAt(0) || document.activeElement.value == 0 && evento.charCode == "0".charCodeAt(0))
						{
							return false;
						} else if (evento.charCode != "/".charCodeAt(0))
								{
									document.activeElement.value = document.activeElement.value + String.fromCharCode(evento.charCode) + "/";
									return false;
								} else {
									if (document.activeElement.value >= 1 && document.activeElement.value <= 3)
									{
										document.activeElement.value = "0" + document.activeElement.value + String.fromCharCode(evento.charCode);
										return false; 
									}
								}
						break;

				case 2: if (evento.charCode != "/".charCodeAt(0))
						{
							return false;
						}
						break;

				case 3: if (evento.charCode == "/".charCodeAt(0))
						{
							return false;
						} else if (evento.charCode > "1".charCodeAt(0) && evento.charCode <= "9".charCodeAt(0))
								{
									document.activeElement.value = document.activeElement.value + "0" + String.fromCharCode(evento.charCode) + "/";
									return false; 
								}
						break;

				case 4: if (document.activeElement.value.substr(3) == 1 && evento.charCode > "2".charCodeAt(0) || document.activeElement.value.substr(3) == 0 && evento.charCode == "0".charCodeAt(0))
						{
							return false; 
						} else if (evento.charCode != "/".charCodeAt(0))
								{
									document.activeElement.value = document.activeElement.value + String.fromCharCode(evento.charCode) + "/";
									return false;
								} else {
									if (document.activeElement.value.substr(3) == 1)
									{
										document.activeElement.value = document.activeElement.value.substr(0,3)  + "01" + String.fromCharCode(evento.charCode);
										return false; 
									}
								}
						break;

				case 5: if (evento.charCode != "/".charCodeAt(0))
						{
							return false; 
						}
						break;

				default: if (evento.charCode == "/".charCodeAt(0))
						{
							return false;
						}
			}
		}
	}
}

/*-----------------------------------------------------------------------------------------------------
	'Descripción : Valida que el formato de la dirección de correo.
	'Entradas : sCadena
	'Salidas: True/False
	'Observaciones: 
	'------------------------------------------------------------------------------------------------------*/
	function ValidarEMail(sCadena)
	{		
		var iLongitud; 
		var iContador;

		//Si la variable sCadena no está vacía
		if (sCadena != "")
		{
			iLongitud = sCadena.length;
			//Recorremos la cadena carácter a carácter
			for (iContador=0;iContador < iLongitud;iContador++)
			{
				//Si no encontramos el carácter "@"
				if ((sCadena.charAt(iContador)!= "@"))
				{	
					//Si hemos llegado al final de la cadena
					if (iContador == iLongitud-1)
					{
						//Advertimos al usuario que el E-Mail debe contener el carácter "@"
						alert ("Introduzca una dirección de e-mail correcta");
						return (false);
					}
				}
				else
				{
					return(true);
				}						
			}
		}		
		return(true)
	}

function Num_Fechas(evt) {
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : 
        ((evt.which) ? evt.which : 0));
    if (charCode > 31 && (charCode < 47 || charCode > 57)) {
        return false;
    }
    return true;
}

function soloNumeros(evt) {
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : 
        ((evt.which) ? evt.which : 0));
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
}

