//LIBRERIA DE FUNCIONES JS

function ValidarFecha(){
//***********************************************************************
//* DESCRIPCION: Valida que el campo campoFecha contenga una fecha al menos 30 dias
//* despues de la actual
//* CONDICIONES: la url de destino
//* RETORNA: abre una ventana con el calendario
//* CAMBIOS: ninguno.
//***********************************************************************

	var FechaVencimiento = form1.fecha_vencimiento.value;
	var FechaIngreso = form1.fecha_movimiento.value;
	var Error = '';

	//DETERMINA SI LAS DOS FECHAS YA EXISTEN
	if ((FechaVencimiento == '') || (FechaIngreso == '')) {
		//NO SE PEUDE VALIDAR AUN
		return;
	}

	//AÑO
	var intAno = FechaVencimiento.substr(0, 4);
	//MES
	var intMes = FechaVencimiento.substr(5, 2);
	//DIA
	var intDia = FechaVencimiento.substr(8, 2);

	//ARMA LA FECHA FORMATO YYYY-MM-DD
	FechaVencimiento = intAno + '' + intMes + '' + intDia;

	//SUMA 30 DIAS A LA FECHA DE INGRESO
	//FechaFinal = dateAdd(FechaIngreso, 30);
	FechaFinal = dateAdd(FechaIngreso, 1);

	if (FechaVencimiento < FechaFinal)
		Error = "\n · La fecha de vencimiento debe ser al menos 1 día posterior a la fecha de ingreso";

	return Error;


}


function Abrir_Calendario(url){
//***********************************************************************
//* DESCRIPCION: funcion similar a la funcion que Fijar_Fecha, con la
//* diferencia que no se valida si el campo donde ira el valor
//* CONDICIONES: la url de destino
//* RETORNA: abre una ventana con el calendario
//* CAMBIOS: ninguno.
//***********************************************************************

	window.open(url, 'cal', 'status=1,width=225,height=165,left=270,top=180');
}


function cadena_valida(s){
//***********************************************************************
//* DESCRIPCION: Determina si una cadena dada esta compuesta unicamente de caracteres
//*				 alfabeticos.
//* CONDICIONES: Cadena analizar
//* RETORNA: bool
//* CAMBIOS: Docstring
//***********************************************************************

	var i;
	sw = 0;
    for (i = 0; i < s.length; i++){
        // Revisa que alguno de los caracteres al menos no sea un espacio
        var c = s.charAt(i);
        if (c != " ")
        	sw = 1
    }
    if (sw==0)
    	return false;
    else
    	return true;
}

function isInteger(s){
//***********************************************************************
//* DESCRIPCION: Determina si una cadena dada esta compuesta unicamente de caracteres
//*				 mumericos.
//* CONDICIONES: S cadena a analizar
//* RETORNA: bool
//* CAMBIOS: ??
//***********************************************************************

	var i;
    for (i = 0; i < s.length; i++){
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9")))
		return false;
    }
    // All characters are numbers.
    return true;
}


function valida_Mail(mail){
//***********************************************************************
//* DESCRIPCION: Determina si una cadena dada es una direccion de correo
//* es valida
//* CONDICIONES: mail cadena a analizar
//* RETORNA: int
//* CAMBIOS: ??
//***********************************************************************

	arroba=mail.indexOf("@",0);
	noarrfin=mail.lastIndexOf("@");
	longmail=mail.length;
	dominio=mail.substring(arroba,longmail);
	if ((arroba != -1) && (noarrfin < longmail)){
		if ((dominio.indexOf('.')!=-1) && (dominio.lastIndexOf('.') < dominio.length)){
			return 1;
		}
		else{
			return 0;
		}
	}
	else{
		return 0;
	}
}

function Abrir_Ventana(url, ancho, alto){
//***********************************************************************
//* DESCRIPCION: funcion que abre una ventana nueva
//* CONDICIONES: la url de destino, el ancho w y el alto h
//* RETORNA: abre una ventana nueva
//* CAMBIOS: ninguno.
//***********************************************************************

	var numero = Math.round((Math.random()*100));

	posL = (screen.width) ? (screen.width - ancho) / 2 : 0;
	posT = (screen.height) ? (screen.height - alto) / 2 : 0;

	//alert("numero: "+ numero);
	//alert("posL: "+ posL +"\nposT:"+ posT)
	a = window.open(url,numero,"height=" + alto + ",width="+ ancho + ",top=" + posT + ",left=" + posL + ",status=yes,toolbar=no,resizable=yes,menubar=no,scrollbars=1,location=no;");
}

function validar_longitud(cadena, numero) {
//***********************************************************************
//* DESCRIPCION: Valida la longitud de una cadena
//* CONDICIONES: Cadena a analizar y la longitud
//* RETORNA: bool
//* CAMBIOS: ??
//***********************************************************************

	if (cadena.length > numero)
		return false;
	else
		return true;
}


function Validar_Objeto(objObjeto){
//***********************************************************************
//* DESCRIPCION: verifica la existencia de un objeto
//* CONDICIONES:
//* RETORNA:
//* CAMBIOS:
//***********************************************************************
	if (typeof(objObjeto) == "undefined"){
		return false;
	}
	return true;
}




function FechaMayor(strDtInicio,strDtFin){
/*************************************************************************
//* DESCRIPCION: retorna la mayor de dos fechas dadas en forma de cadena
//* CONDICIONES: las fechas deben estar en formato yyyy-mm-dd
//* RETORNA: cadena con fecha mayor
//* CAMBIOS: ninguno
**************************************************************************/
	var blnOk = true;
	var arrFechaInicio	= strDtInicio.split('-');
	var arrFechaFin = strDtFin.split('-');
	// DESCRIPCION DEL ARRGLO DE FECHA
	// FECHA[0] = AÑO
	// FECHA[1] = MES
	// FECHA[2] = DIA
	if(parseInt(arrFechaFin[0]) < parseInt(arrFechaInicio[0])){
		// Años invertidos retorna strDtIncio
		return strDtInicio;
	}else if((parseInt(arrFechaFin[0]) >= parseInt(arrFechaInicio[0])) && (parseInt(arrFechaFin[1]) < parseInt(arrFechaInicio[1]))){
		// El año de la fecha final es mayor o igual al de la fecha incio, pero el mes de la fecha inicio es mayor al de la fecha final
		return strDtInicio;
	}else if((parseInt(arrFechaFin[0]) >= parseInt(arrFechaInicio[0])) && (parseInt(arrFechaFin[1]) >= parseInt(arrFechaInicio[1])) && (parseInt(arrFechaFin[2]) < parseInt(arrFechaInicio[2]))){
		// Dias invertidos
		return strDtInicio;
	}else{
		// Fecha OK
		return strDtFin;
	}
}




function dateAdd(fecha, dias){
//***********************************************************************
//* DESCRIPCION: funcion similar a la DateAdd de VBScript
//* CONDICIONES:
//* RETORNA:
//* CAMBIOS: ninguno.
//***********************************************************************
	var intAno, intMes, intDia

	fecha_base = fecha.split("-");
	//QUITA UNO AL MES PORQUE EN JS LOS MESES VAN DE 0 A 11
	fecha_base[1] = Number(fecha_base[1]) - 1;
	fecha = new Date(fecha_base[0], fecha_base[1], fecha_base[2]);

	//SUMA LOS DIAS CORRESPONDIENTES
	fecha = new Date(fecha.valueOf() + dias * 86400000);

	//AÑO
	var intAno = fecha.getYear();

	//SUMA UNO AL MES PORQUE EL CONSTRUCTOR DE DATE RECIBE MESES DE 0 A 11 (NO 1 A 12)
	var intMes = fecha.getMonth() + 1;
	//MES
	if(intMes < 10)
		intMes = '0' + intMes;

	else
		intMes = intMes;

	//DIA
	if(fecha.getDate() < 10)
		var intDia = '0' + fecha.getDate();
	else
		var intDia = fecha.getDate();

	//RETORNA EL VALOR
	return intAno + '' + intMes + '' + intDia;
}

function es_numero() {
	if (event.keyCode < 48 || event.keyCode > 57)
		event.returnValue = false;
}

function validar() {
//***********************************************************************
//* DESCRIPCION: Valida los campos obligatorios en el formulario
//* CONDICIONES:
//* RETORNA: true or false
//* CAMBIOS: ninguno.
//***********************************************************************
	var str_error = "";
	if (!cadena_valida(form1.nombre.value))
		str_error += "\n · Por favor coloque su nombre."
	if (!cadena_valida(form1.apellido.value))
		str_error += "\n · Por favor coloque su apellido."
	if (!cadena_valida(form1.email.value))
		str_error += "\n ·  Por favor coloque su Email"
	if (isEmail(form1.email.value) == false)
		str_error +=  "\n · Por favor ingresar una dirección de correo electrónico valida."
	if (form1.temainteres.value == -1)
		str_error +=  "\n · Por favor seleccione un tema de interés."
	if (str_error != "")
		confirm('Se encontraron los siguientes errores en el formulario\n'+str_error)
	else
		form1.submit()
}

function validar_registrese() {
//***********************************************************************
//* DESCRIPCION: Valida los campos obligatorios en el formulario
//* CONDICIONES:
//* RETORNA: true or false
//* CAMBIOS: ninguno.
//***********************************************************************
	var str_error = "";
	if (!cadena_valida(form1.nombre.value))
		str_error += "\n · Por favor coloque su nombre."
	if (!cadena_valida(form1.apellido.value))
		str_error += "\n · Por favor coloque su apellido."
	if (!cadena_valida(form1.email.value))
		str_error += "\n ·  Por favor coloque su Email"
	if (isEmail(form1.email.value) == false)
		str_error +=  "\n · Por favor ingresar una dirección de correo electrónico valida."
	if (str_error != "")
		confirm('Se encontraron los siguientes errores en el formulario\n'+str_error)
	else
		form1.submit()
}

function cadena_valida(s){
	var i;
	sw = 0;
    for (i = 0; i < s.length; i++){
        // Revisa que alguno de los caracteres al menos no sea un espacio
        var c = s.charAt(i);
        if (c != " ")
        	sw = 1
    }
    if (sw==0)
    	return false;
    else
    	return true;
}

function isEmail(email) {
//***********************************************************************
//* DESCRIPCION: Valida que 'email' sea una dirección de correo valida
//* CONDICIONES:
//* RETORNA: true or false
//* CAMBIOS: ninguno.
//***********************************************************************

		// valid format "a@b.cd"
		invalidChars = " /;,:";
		if (email == "")
			return false;

		for (i=0; i< invalidChars.length; i++)
		{
			badChar = invalidChars.charAt(i)
			if (email.indexOf(badChar,0) > -1)
			{
				return false;
			}
		}

		atPos = email.indexOf("@",1)
		// there must be one "@" symbol
		if (atPos == -1)
			return false;

		// and only one "@" symbol
		if (email.indexOf("@", atPos+1) != -1)
			return false;

		// and at least one "." after the "@"
		periodPos = email.indexOf(".",atPos)
		if(periodPos == -1)
			return false;

		// and at least one character between "@" and "."
		if ( atPos +2 > periodPos)
			return false;

		if ( periodPos +3 > email.length)
			return false;

		return true;
}

function ActivarCiudad() {
/*********************************************************************************
//* DESCRIPCION: Cuando el pais seleccionado es colombia activa las ciudades
//* CONDICIONES:
//* RETORNA:
//* CAMBIOS: ninguno.
**********************************************************************************/
	if (form1.pais.value=='Colombia')
		form1.ciudad.disabled=0;
	else {
		form1.ciudad.value='Ninguna';
		form1.ciudad.disabled=1;
	}

}

function Fijar_Fecha(url, campo){
//***********************************************************************
//* DESCRIPCION: funcion que valida si el campo esta habilitado para
//* mostrar el calendario
//* CONDICIONES: la url de destino y el campo a validar
//* RETORNA: abre una ventana con el calendario
//* CAMBIOS: ninguno.
//***********************************************************************
	if(campo.disabled)
		alert('Este campo no se puede modificar');
	else
		Abrir_Calendario(url);
}
