
//funcion que valida fechas
function validarfecha (fecha) {

	//comprobamos que la longitud de la fecha sea correcta
	if(fecha.length!=10) return 0
	
	//comprobamos que los separadores sean correctos
	if ((fecha.substring(2,3)!="/" && fecha.substring(2,3)!="-") || (fecha.substring(5,6)!="/" && fecha.substring(5,6)!="-")) return 0
		
	//extraemos los valores del dia mes y año
	var dia = Number(fecha.substring(0,2))
	var mes = Number(fecha.substring(3,5))
	var anio = Number(fecha.substring(6,10))
	
	//comprobamos que los valores sean numericos
	if(isNaN(dia) || isNaN(mes) || isNaN(anio)) return 0
	
	//comprobamos si el año es bisiesto para fijar a 29 el numero maximo de dias
	var maxFebrero = 28
	if(((anio % 4 == 0) && (anio % 100 != 0)) || (anio % 400 == 0)) maxFebrero=29
	
	//comprobamos que el numero de mes este dentro del rango correcto	
	if(mes<1 || mes>12) return 0
	
	//comprobamos que el dia este dentro del rango de dias del mes al que corresponde
	if(mes==2) {
		if(dia<1 || dia>maxFebrero) return 0
	}
	if(mes==4 || mes==6 || mes==9 || mes==11) {
		if(dia<1 || dia>30) return 0
	}
	if(mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) {
		if(dia<1 || dia>31) return 0
	}
	
	return 1

}


//function para validar nif. Permite cadenas de 9 digitos donde los 8 primeros digitos son numeros y el ultimo digito una letra.
function validarnif (cadenanif) {
	var stringnif = new String(cadenanif);
	var letrasnif = new String("ABCDEFGHIJKLMNÑOPQRSTUVWXYZ");
	var partenumerica = new String(stringnif.substring(0,8));
	var letra = new String(stringnif.substring(8,9));
	
	if (stringnif.length!=9 || isNaN(partenumerica) || letrasnif.indexOf(letra.toUpperCase())==-1) { 
		return false;
	} else return true;
	
}

//function para validar cif. Permite cadenas donde el primer digito es una letra, los 7 restantes numeros y el ultimo digito puede ser un numero o una letra
function validarcif (cadenacif) {
	var stringcif = new String(cadenacif);
	var letrascif = new String("ABCDEFGHKLMNPQS");
	var primerDigito = new String(stringcif.substring(0,1));
	var partenumerica = new String(stringcif.substring(1,8));
	var ultimoDigito = new String(stringcif.substring(8,9));
	
	if (stringcif.length!=9 || isNaN(partenumerica) || letrascif.indexOf(primerDigito.toUpperCase())==-1 || (isNaN(ultimoDigito) && letrascif.indexOf(ultimoDigito.toUpperCase())==-1)) { 
		return false;
	} else return true;
	
}


//function para validar nie. Permite cadenas donde el primer digito es una X, los 7 digitos siguientes son numeros y el ultimo una letra
function validarnie (cadenanie) {
	var stringnie = new String(cadenanie);
	var primeraletra = new String(stringnie.substring(0,1));
	var letrasnie = new String("ABCDEFGHIJKLMNÑOPQRSTUVWXYZ");
	var partenumerica = new String(stringnie.substring(1,8));
	var letra = new String(stringnie.substring(8,9));
	
	if (stringnie.length!=9 || primeraletra.toUpperCase()!="X" || isNaN(partenumerica) || letrasnie.indexOf(letra.toUpperCase())==-1) { 
		return false;
	} else return true;
	
}


//funcion que abre un popup
function nuevaVentana (pagina, nombre, especificaciones) { 
	window.open(pagina,nombre, especificaciones)
} 



//funcion money to javascript
//cambia el formato de "cantidad" a formato compatible para operar con javascript 
function moneyTojs (cantmtjs) {
	var dinmtjs = new String
	dinmtjs = cantmtjs.toString()
	do dinmtjs = dinmtjs.replace(".","")
	while(dinmtjs.indexOf(".")>0)
	dinmtjs = dinmtjs.replace(",",".")
	if(!isNaN(dinmtjs)) return dinmtjs
	else return 0
}
//funcion javascript to money
//cambia el formato de un numero flotante javascript a formato numero de salida para españa
function jsTomoney (cantjstm) {
	if(isNaN(cantjstm)) return 0;
	var dinjstm = new String
	dinjstm = cantjstm.toString()
	dinjstm = dinjstm.replace(".",",")
	return dinjstm
}





//funcion para formateo de cantidades monetarias
function money_format (numero,decimales) {
	
	numero=numero.toString();
	
	//definimos las variables que vamos a utilizar
	var parteEntera="0";
	var parteDecimal="0";
	var NEF="";
	var NDF="";
	var NF="";
	var signo = "";
	
	//comprobamos que numero tenga algun valor
	if(numero=="") return 0;
	
	//comprobamos el numero de decimales
	if(isNaN(decimales) || decimales=="") decimales=2;

	//quitamos los signos de puntuacion a numero
	do {
		numero=numero.replace(".","");
	} while (numero.indexOf(".")>0);
	
	//partimos la cadena numero en su parte entera y su parte decimal
	if(numero.indexOf(",")>0) {
		parteEntera = numero.substring(0, numero.indexOf(","));
		parteDecimal = "0." + numero.substring(numero.indexOf(",")+1, numero.length+1) + "00000"; 
	} else {
		parteEntera = numero;
	}

	//comprobamos que ambas partes son numericas
	if(isNaN(parteEntera)) return 0;
	if(isNaN(parteDecimal)) return 0;

	//formatea la parte entera
	if(parteEntera<0) {
		signo = "-";
		parteEntera = Math.abs(parteEntera);
		parteEntera = parteEntera.toString();
	}
    for (var j, i = parteEntera.length - 1, j = 0; i >= 0; i--, j++) 
    NEF = parteEntera.charAt(i) + ((j > 0) && (j % 3 == 0)? ".": "") + NEF; 
	
	//tratamiento de los decimales
	var factor = 0;
	var lenPartDec = parteDecimal.length;
	var i = 0;
	var ceros = "";
	factor = Math.pow(10, decimales); 
    NDF = Math.round(parteDecimal*factor)/factor;
	NDF = NDF.toString();
	NDF = NDF.substring(2,lenPartDec);
	
		for(i=NDF.length; i<decimales; i++) {
			ceros+="0";
		}
	
	NDF+=ceros;
	
	
	//por ultimo retornamos el valor formateado
	NF = signo + NEF + "," + NDF;
	return NF;

}




//funcion que formatea numero con separadores de miles
function number_format (numero) {
	
	var numf = "";
	
	//comprobamos que numero es un valor numerico
	if(isNaN(numero) || numero=="") {
		return 0;
	}
	
	//formateamos
	numero = numero.replace(".","");
    for (var j, i = numero.length - 1, j = 0; i >= 0; i--, j++) 
    numf = numero.charAt(i) + ((j > 0) && (j % 3 == 0)? ".": "") + numf; 
	
	//devolvemos el valor formateado
	return numf;
}




function iluminar(src,color_entrada) { 
    src.style.backgroundColor=color_entrada;
	src.style.cursor="hand";
} 
function desiluminar(src,color_default) { 
    src.style.backgroundColor=color_default;
	src.style.cursor="default"; 
}


/*
function subVentana (idLayer, width , top, visible) {
	var anchoVentana;
	var x;
	anchoVentana=document.body.clientWidth;
	x=(anchoVentana/2)-(width/2);
	document.getElementById(idLayer).style.left=x+'px';
	document.getElementById(idLayer).style.top=top+'px';
	document.getElementById(idLayer).style.visibility=visible;
}
*/




function validarhora (hora) {
	
	
	//comprobamos que la longitud de la hora sea correcta
	if(hora.length!=5) return 0
	
	//desglosamos la hora en hora, dos puntos y minutos
	var h = Number(hora.substring(0,2))
	var separador = hora.substring(2,3)
	var m = Number(hora.substring(3,5))
	
	//comprobamos que la hora sea numerica y este entre 0 y 24
	if (isNaN(h) || h<0 || h>23) return 0
	
	//comprobamos que el separador de la hora sea correcto
	if (separador!=":") return 0
	
	//comprobamos que los minutos sean numericos y esten entre 0 y 60
	if (isNaN(m) || m<0 || m>59) return 0
	
	
	return 1
	
}





//FUNCIONES AJAX
//-------------------------------------------------------------------------------------------------
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
/*
function nuevoAjax()
{
	
	var xmlhttp = false; 
	try 
	{ 
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e)
	{ 
		try
		{ 
			// Creacion del objet AJAX para IE 
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined')
	{
		xmlhttp = new XMLHttpRequest();
	} 

	return xmlhttp; 
}
*/


//funcion que recarga una lista
function cargarSelect(selectID, celdaID, url) {
	if(selectID=='' || celdaID=='' || url=='') {
		return false;
	}

	ajax=nuevoAjax();
	ajax.open("GET", url+"&selectid="+selectID, true);
	ajax.onreadystatechange=function() { 
		if (ajax.readyState==4) { 
			document.getElementById(celdaID).innerHTML=ajax.responseText;
		} 
	}
	ajax.send(null);
}



//funcion que recarga datos en un id determinado
function cargarDatos (objetID, url) {
	if(objetID=='' || url=='') {
		return false;
	}
	ajax=nuevoAjax();
	ajax.open("GET", url, true);
	ajax.onreadystatechange=function() { 
		if (ajax.readyState==1) {
			objeto=document.getElementById(objetID);
			objeto.innerHTML="Cargando...";
			objeto.disabled=true;	
		}
		if (ajax.readyState==4) { 
			objeto.disabled=false;
			document.getElementById(objetID).innerHTML=ajax.responseText;
		} 
	}
	ajax.send(null);
}



//funcion que recarga datos en un id determinado enviando los datos mediante POST
function cargarDatosPOST (objetID, url, datos) {
	if(objetID=='' || url=='' || datos=='') {
		return false;
	}
	ajax=nuevoAjax();
	ajax.open("POST", url, true);
	ajax.onreadystatechange=function() { 
		if (ajax.readyState==1) {
			objeto=document.getElementById(objetID);
			objeto.innerHTML="Cargando...";
			objeto.disabled=true;	
		}
		if (ajax.readyState==4) { 
			objeto.disabled=false;
			document.getElementById(objetID).innerHTML=ajax.responseText;
		} 
	}
	ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	ajax.send(datos);
}