var prohibitedChars="'\""; // characters prohibited to ensure security
var prohibitedCharstoInform="',\""; // characters not allowed to print out them to inform the user
var a, mes, dia, anyo, febrero;

function  charsOK(t) {		

var valWrong=prohibitedChars;		
var thisChar;
var counter=0;
for (var i=0; i<t.length; i++){
	thisChar=t.substring(i, i+1);
	if (valWrong.indexOf(thisChar)!=-1) counter++;
	}
	if (counter>0) return false;	else	return true;	
}

function validarBusqueda()

{
if (document.forms[0].municipio.selectedIndex==0) {
           alert("Por favor seleccione un municipio en el que buscar");
           document.forms[0].municipio.focus();
	   return false;
	}

if (document.forms[0].inmueble.selectedIndex==0) {
           alert("Por favor seleccione el tipo de inmueble de entre los posibles para realizar la búsqueda");
           document.forms[0].inmueble.focus();
	   return false;
	}
	
if ((document.forms[0].habitaciones.selectedIndex==0) && (document.formBusqueda.inmueble[document.formBusqueda.inmueble.selectedIndex].text=="Piso")) {
           alert("Por favor seleccione el número de habitaciones que desea que tenga el Piso");
           document.forms[0].habitaciones.focus();
	   return false;
	}
		
return true;

}

function entrarFila(src,color_entrada) {
src.bgColor=color_entrada;
src.style.cursor="hand";
}

function salirFila(src,color_default) {
src.bgColor=color_default;
src.style.cursor="default";
}

function comprobarConsulta() {

// Para el formulario de solicitud de información

if (isEmpty(document.solicitarInformacion.nombre.value)) {
           alert("El campo de Nombre no puede estar vacío");
           document.solicitarInformacion.nombre.focus();
           document.solicitarInformacion.nombre.select();
	   return false;
	}

if (isEmpty(document.solicitarInformacion.email.value)==false) {
	if (emailOK(document.solicitarInformacion.email.value)==false){
           alert("La dirección de E-Mail introducida no es correcta");
           document.solicitarInformacion.email.focus();
           document.solicitarInformacion.email.select();
	   return false;
	 }
}

if (isEmpty(document.solicitarInformacion.telefono.value)==false) {
	if (telNumOK(document.solicitarInformacion.telefono.value)==false){
           alert("El número de teléfono introducido no es correcto. Sólo puede contener números y '+'");
           document.solicitarInformacion.telefono.focus();
           document.solicitarInformacion.telefono.select();
	   return false;
	 }
}

if (isEmpty(document.solicitarInformacion.email.value)==true && isEmpty(document.solicitarInformacion.telefono.value)==true ){
	alert ("Para que el Promotor se pueda poner en contacto con Usted, es necesario que introduzca una dirección de E-Mail, un teléfono de contacto o ambos")
	document.solicitarInformacion.telefono.focus();
	document.solicitarInformacion.telefono.select();
   	return false;
	}

var hayAlguna;
var els=document.solicitarInformacion.elements;

hayAlguna=false;

for (var i=0;i<document.solicitarInformacion.length;i++) {
	if ((els[i].type=="checkbox")&&(els[i].checked==true)) { hayAlguna=true; break; }
	}

if (hayAlguna==false) {
		alert ("No se ha marcado ninguna de las casillas de 'Solicitar más información'");
		return false;s
		}
	
return true;
} 

function isEmpty (dt) {
for (var i=0; i<dt.length; i++){
	if (dt.substring(i, i+1)!=" ")	return false;
	}
return true;
}
 
function emailOK(src) {

   var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
   return regex.test(src);
}	

function  telNumOK(t) {		

	var valsOK="+0123456789";		
	var thisChar;
	var counter=0;
	for (var i=0; i<t.length; i++){
		thisChar=t.substring(i, i+1);
		if (valsOK.indexOf(thisChar)!=-1) counter++;
		}
		if (counter==t.length) return true;	else	return false;	
}

function comprobarSolicitudCxn() {

// Para el formulario de solicitud de información

if (isEmpty(document.forms[0].nombre.value)) {
           alert("Por favor introduzca su nombre");
           document.forms[0].nombre.focus();
           document.forms[0].nombre.select();
	   return false;
	}

if (isEmpty(document.forms[0].email.value)==false) {
	if (emailOK(document.forms[0].email.value)==false){
           alert("La dirección de E-Mail introducida no es correcta");
           document.forms[0].email.focus();
           document.forms[0].email.select();
	   return false;
	 }
}

if (isEmpty(document.forms[0].telefono.value)==false) {
	if (telNumOK(document.forms[0].telefono.value)==false){
           alert("El número de teléfono introducido no es correcto. Sólo puede contener números y '+'");
           document.forms[0].telefono.focus();
           document.forms[0].telefono.select();
	   return false;
	 }
}

if (isEmpty(document.forms[0].email.value)==true && isEmpty(document.forms[0].telefono.value)==true ){
	alert ("Para que desde CaixaNova se puedan poner en contacto con Usted, es necesario que introduzca una dirección de E-Mail, un teléfono de contacto o ambos")
	document.forms[0].telefono.focus();
	document.forms[0].telefono.select();
   	return false;
	}

if (isEmpty(document.forms[0].consulta.value)) {
           alert("No se ha introducido ninguna consulta");
           document.forms[0].consulta.focus();
           document.forms[0].consulta.select();
	   return false;
	}

return true;
} 

function procesarMensaje (cadena)
{
	
var kdnaLink=" class=enlaceForo target=_blank ";
var kdnaEstilo="span ";
var kdnaFinEstilo="span><br";
var nuevaCadena="";

if ( (cadena.substring(0, ((cadena.length)-1))=='<p>&nbsp;</p>')|| (cadena.substring(0, ((cadena.length)-1))=='<p></p>') ||
	 (cadena.substring(0, ((cadena.length)-1))=='<P>&nbsp;</P>')|| (cadena.substring(0, ((cadena.length)-1))=='<P></P>') ) {nuevaCadena="";}
else {	
	for (var i=0; i<cadena.length; i++){
		if (cadena.substring(i, i+1)=='"') {nuevaCadena+="\"";}
			else if (cadena.substring(i, i+1)=="'") {nuevaCadena+="\"";}
			//cambiacomillas...
			else {		
			if (i>0) {
				switch ( cadena.substring (i-1, i) + cadena.substring(i, i+1) )
					{
					case '<A' || '<a': nuevaCadena+=cadena.substring(i, i+1); if (cadena.substring(i+1, i+kdnaLink.length+1) != kdnaLink) {nuevaCadena=nuevaCadena+kdnaLink;}
									break;
					default : nuevaCadena+=cadena.substring(i, i+1);
				}
			 } else {nuevaCadena+=cadena.substring(i, i+1);}
		}
	}/* for */
}

return nuevaCadena;
}

function validarTema()

{
if (charsOK(document.forms[0].titulo.value)==false) {
           alert("El campo de título del tema contiene caracteres no permitidos: "+prohibitedCharstoInform);
           document.forms[0].titulo.focus();
           document.forms[0].titulo.select();
	   return false;
	}

if (isEmpty(document.forms[0].titulo.value)) {
           alert("No se ha introducido ningún título para el tema");
           document.forms[0].titulo.focus();
           document.forms[0].titulo.select();
	   return false;
	}

if (charsOK(document.forms[0].descripcion.value)==false) {
           alert("El campo de descripción del título contiene caracteres no permitidos: "+prohibitedCharstoInform);
           document.forms[0].descripcion.focus();
           document.forms[0].descripcion.select();
	   return false;
	}	

if (isEmpty(document.forms[0].textoMensaje.value)) {
           alert("No se ha introducido ningún mensaje para el tema");
	   return false;
	}

if (isEmpty(document.forms[0].nombre.value)) {
           alert("Introduzca su nombre para que quede constancia del creador del mensaje");
           document.forms[0].nombre.focus();
           document.forms[0].nombre.select();
	   return false;
	}

if (charsOK(document.forms[0].nombre.value)==false) {
           alert("El campo para su nombre contiene caracteres no permitidos: "+prohibitedCharstoInform);
           document.forms[0].nombre.focus();
           document.forms[0].nombre.select();
	   return false;
	}	
	
if (isEmpty(document.forms[0].email.value)) {
           alert("Introduzca su email para que quede constancia del creador del mensaje.\nEsta información no se hará pública en ningún caso, almacenándose automáticamente en el sistema y no siendo utilizada en ningún caso para enviar mensajes o facilitarla a terceras partes");
           document.forms[0].email.focus();
           document.forms[0].email.select();
	   return false;
	}
	
if (emailOK(document.forms[0].email.value)==false){
           alert("La dirección de E-Mail introducida no es correcta");
           document.forms[0].email.focus();
           document.forms[0].email.select();
	   return false;
	 }	

if (document.forms[0].acuerdoCondiciones.checked==false){
	       alert("Para poder continuar es necesario que marque la casilla conforme está de acuerdo con las reglas del foro de Aproin");
           document.forms[0].acuerdoCondiciones.focus();
          return false;
}
return true;	
}

function validarMensaje()

{
if (isEmpty(document.forms[0].textoMensaje.value)) {
           alert("No se ha introducido ningún mensaje para el tema");
	   return false;
	}

if (isEmpty(document.forms[0].nombre.value)) {
           alert("Introduzca su nombre para que quede constancia del creador del mensaje");
           document.forms[0].nombre.focus();
           document.forms[0].nombre.select();
	   return false;
	}

if (charsOK(document.forms[0].nombre.value)==false) {
           alert("El campo para su nombre contiene caracteres no permitidos: "+prohibitedCharstoInform);
           document.forms[0].nombre.focus();
           document.forms[0].nombre.select();
	   return false;
	}	
	
if (isEmpty(document.forms[0].email.value)) {
           alert("Introduzca su email para que quede constancia del creador del mensaje.\nEsta información no se hará pública en ningún caso, almacenándose automáticamente en el sistema y no siendo utilizada en ningún caso para enviar mensajes o facilitarla a terceras partes");
           document.forms[0].email.focus();
           document.forms[0].email.select();
	   return false;
	}
	
if (emailOK(document.forms[0].email.value)==false){
           alert("La dirección de E-Mail introducida no es correcta");
           document.forms[0].email.focus();
           document.forms[0].email.select();
	   return false;
	 }	

if (document.forms[0].acuerdoCondiciones.checked==false){
	       alert("Para poder continuar es necesario que marque la casilla conforme está de acuerdo con las reglas del foro de Aproin");
           document.forms[0].acuerdoCondiciones.focus();
          return false;
}
return true;	
}

    
function anyoBisiesto(anyo)
{
        if (anyo < 100)
            var fin = anyo + 1900;
        else
            var fin = anyo ;

        /*
        * primera condicion: si el resto de dividir el año entre 4 no es cero > el año no es bisiesto
        * es decir, obtenemos año modulo 4, teniendo que cumplirse anyo mod(4)=0 para bisiesto
        */
        if (fin % 4 != 0)
            return false;
        else
        {
            if (fin % 100 == 0)
            {
                /**
                * si el año es divisible por 4 y por 100 y divisible por 400 > es bisiesto
                */
                if (fin % 400 == 0)
                {
                    return true;
                }
                /**
                * si es divisible por 4 y por 100 pero no lo es por 400 > no es bisiesto
                */
                else
                {
                    return false;
                }
            }
            /**
            * si es divisible por 4 y no es divisible por 100 > el año es bisiesto
            */
            else
            {
                return true;
            }
        }
    }

/*****
 *
 * returns if the passed string is a valid number
 *
 * @param t: string to be checked
 * @return: true or false depending on the result
 *
 *****/

function  numOK(t) {		

var valsOK="0123456789";		
var thisChar;
var counter=0;
for (var i=0; i<t.length; i++) 
	{
	thisChar=t.substring(i, i+1);
	if (valsOK.indexOf(thisChar)!=-1) counter++;
	}
	if (counter==t.length) return true;	else	return false;	
}
    
    /**
    * funcion principal de validacion de la fecha
    * argumento fecha > cadena de texto de la fecha introducida por el usuario
    */
    function fechaCorrecta(campo)
    {
       /**
       * obtenemos la fecha introducida y la separamos en dia, mes y año
       */
       a=campo.value;
       dia=a.split("/")[0];
       mes=a.split("/")[1];
       anyo=a.split("/")[2];
    
       if ((dia==null)||(mes==null)||(anyo==null)||(!numOK(dia))||(!numOK(mes))||(!numOK(anyo))){
       	alert ("La fecha introducida es incorrecta. Por favor introduzca una en formato dd/mm/aaaa");
        campo.focus();
        campo.select();       	
        return false;
        }

       if(anyoBisiesto(anyo))
           febrero=29;
       else
           febrero=28;
       /**
       * si el mes introducido es negativo, 0 o mayor que 12 > alertamos y detenemos ejecucion
       */
       if ((mes<1) || (mes>12))
       {
           alert("El mes introducido no es válido. Por favor, introduzca un mes correcto formato dd/mm/aaaa");
           campo.focus();
           campo.select();
           return false;
       }
       /**
       * si el mes introducido es febrero y el dia es mayor que el correspondiente 
       * al año introducido > alertamos y detenemos ejecucion
       */
       if ((mes==2) && ((dia<1) || (dia>febrero)))
       {
           alert("El día introducido no es valido. Por favor, introduzca un día correcto formato dd/mm/aaaa");
           campo.focus();
           campo.select();
           return false;
       }
       /**
       * si el mes introducido es de 31 dias y el dia introducido es mayor de 31 > alertamos y detenemos ejecucion
       */
       if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31)))
       {
           alert("El día introducido no es válido. Por favor, introduzca un día correcto formato dd/mm/aaaa");
           campo.focus();
           campo.select();
           return false;
       }
       /**
       * si el mes introducido es de 30 dias y el dia introducido es mayor de 301 > alertamos y detenemos ejecucion
       */
       if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30)))
       {
           alert("El día introducido no es válido. Por favor, introduzca un dia correcto formato dd/mm/aaaa");
           campo.focus();
           campo.select();
           return false;
       }
       /**
       * si el mes año introducido es menor que 1990 o mayor que 2010 > alertamos y detenemos ejecucion
       * NOTA: estos valores son a eleccion vuestra, y no constituyen por si solos fecha erronea
       */
       if ((anyo<1990) || (anyo>2100))
       {
           alert("El año introducido no es valido. Por favor, introduzca un año entre 1990 y 2100");
           campo.focus();
           campo.select();
	   return false;
       } 
      else
	  return true;
    }    

function validarBusquedaHemeroteca() {

if (!isEmpty(document.forms[0].desde.value ) && fechaCorrecta(document.forms[0].desde)==false) {return false;}
if (!isEmpty(document.forms[0].hasta.value ) && fechaCorrecta(document.forms[0].hasta)==false) {return false;}

if (isEmpty(document.forms[0].keys.value) && isEmpty(document.forms[0].desde.value ) && isEmpty(document.forms[0].hasta.value)) {
           alert("Por favor introduzca algún criterio de búsqueda, bien intervalo de fechas, bien palabras clave o combinaciones de ambas.");
           document.forms[0].keys.focus();
//           document.forms[0].keys.select();
	   return false;
	}

return true;
} 



