function cuenta_caracter(cadena,caracter){
  numcaracter = 0;
  poscaracter = cadena.indexOf(caracter);
  while ( poscaracter > 0 ) {
    cadena = cadena.substring(poscaracter+1,cadena.length);
    numcaracter++;
    poscaracter = cadena.indexOf(caracter);
  }
  return numcaracter;
}

function comprobar_email(mail){ 
  mail_correcto = 0; 
  //compruebo unas cosas primeras 
  num_arroba = cuenta_caracter(mail,"@");
  if ((mail.length >= 6) && (mail.indexOf("@") > 1) && (num_arroba==1) && (mail.substring(mail.length-1,1) != "@")){ 
    if ((mail.indexOf(";")<0) && (mail.indexOf(" ")<0) && (mail.indexOf("/")<0) && (mail.indexOf(";")<0) && (mail.indexOf("<")<0) && (mail.indexOf(">")<0) && (mail.indexOf("*")<0) && (mail.indexOf("|")<0) && (mail.indexOf("'")<0) && (mail.indexOf("`")<0) && (mail.indexOf("´")<0) && (mail.indexOf("&")<0) && (mail.indexOf("\$")<0) && (mail.indexOf("¡")<0) && (mail.indexOf("!")<0) && (mail.indexOf("\"")<0) && (mail.indexOf(":")<0) && (mail.indexOf("\\")<0)) { 
      //miro si tiene caracter . 
      if (mail.indexOf(".")>= 1){ 
        //obtengo la terminacion del dominio 
        term_dom = mail.substring(mail.lastIndexOf(".")+1); 
        //compruebo que la terminación del dominio sea correcta 
        if (term_dom.length>1 && term_dom.length<5 && (term_dom.indexOf("@")<0) ){ 
          //compruebo que lo de antes del dominio sea correcto 
          antes_dom = mail.substring(0,mail.length - term_dom.length - 1); 
          caracter_ult = antes_dom.substring(antes_dom.length-1,1); 
          if (caracter_ult != "@" && caracter_ult != "."){ 
            mail_correcto = 1; 
          } 
        } 
      } 
    } 
  } 
  return mail_correcto; 
}

//---------------------------------------------------------------------//
//  Dada una cadena comprobamos si es o no una fecha valida
function fechacorrecta( vardate ) {
  var dayNr, monthNr, yearNr;
  var bDateOk;
  var bEncDate, bEncMonth,bEncYear;
  var indice, iStartDate,iEndDate,iStartMonth,iEndMonth,iStartYear,iEndYear;
     
  //Inicialización d las var locales
  bDateOk = false;
  bEncDate = false;
  bEncMonth = false;
  bEncYear = false;
  iIStartDate = 0;
  indice = 0;
  //Fin inicializacion var locales
     
  //Encontramos el dia, mes y año en la cadena d texto
  while (((! bEncDate) || (! bEncMonth)|| (! bEncYear)) && (vardate.length >= indice))
  {
	if (vardate.substring(indice,indice+1)=="/"){
		if (! bEncDate)
		   {
			   bEncDate = true;
			   iEndDate = indice;
			   iStartMonth = iEndDate+1;
			   dayNr = vardate.substring(iStartDate,iEndDate);
		   }
		else{
			   bEncMonth = true;
			   iEndMonth = indice;
			   iStartYear = iEndMonth+1;
			   monthNr = vardate.substring(iStartMonth,iEndMonth);
			}
		 }
   		 
		if ((vardate.substring(indice,indice+1)==" "  || indice == vardate.length) && (bEncDate) && (bEncMonth))
			{
				bEncYear = true;
			   iEndYear = indice;
			   yearNr = vardate.substring(iStartYear,iEndYear);
			 }
   	
	indice = indice + 1;
  }
  //Fin while: dia, mes y año obtenidos
     
  //Verificamos q dia, mes y año son validos  
  if (yearNr>=0) {
    if ( (monthNr>=1) && (monthNr<=12)) {    
      if (monthNr==2) {
      // Febrero
        if ( ( (yearNr % 4 == 0) && (yearNr % 100 != 0) ) || (yearNr % 400 == 0) ) { 
        // Es bisiesto
          if ( dayNr<=29 ) { bDateOk=true }
        } else {
          if ( dayNr<=28 ) { bDateOk=true }          
        }
      } else {
        if ( (monthNr==1) || (monthNr==3) || (monthNr==5) || (monthNr==7) || (monthNr==8) || (monthNr==10) || (monthNr==12) ) {
        // Meses de 31 días
          if ((dayNr>=1) && (dayNr<=31) ) { bDateOk=true }
        } else {
        // Meses de 30 días
          if ((dayNr>=1) && (dayNr<=30) ) { bDateOk=true }
        }
      }
    }
  } 
  //Fin verificacion

  return bDateOk;
}

