function IsDate( sDate ) {

		// Check string's length
		if ( sDate.length < 6 || sDate.length > 10 ) { 
			return "";
		}
	
		// Get / position
		var lPos1 = sDate.indexOf( "/", 0 )
		if ( lPos1 < 1 || lPos1 > 2 ) {
			return "";
		}
	
		// Get Day
		var sDay = sDate.substring(0, lPos1)
	
		// Get / Position
		var lPos2 = sDate.indexOf( "/", lPos1+1 )
		if ( lPos2 < lPos1+2 || lPos2 > lPos1+3 ) {
			return "";
		}
	
		// Get Month
		var sMonth = sDate.substring(lPos1+1, lPos2)
	
		// Get Year
		var sYear = sDate.substring(lPos2+1, sDate.length)

		// Format Year
		if ( sYear.length == 1 || sYear.length == 3 ) {
			return "";
		}
		if ( sYear.length == 2 ) {
			if ( parseInt( sYear ) > 29 ) {
				sYear = "19" + sYear
			} else {
				sYear = "20" + sYear
			}
		}

		// Check Month 
		if ( sMonth < 1 || sMonth >12 ) {
			return "";
		}
	
		// Check Day
		if ( sDay < 1 || sDay >31) {
			return "";
		}
	
		// Check Day and Month
		if ( (sMonth==4 || sMonth==6 || sMonth==9 || sMonth==11) && (sDay == 31 ) ) {
			return "";
		}
	
		// Check February	
		if ( sMonth==2 ){
			if ( sDay > 29 ) {
				return "";
			}
			if ( ( sYear / 4 == parseInt( sYear / 4 ) )  
			     && ! ( ( sYear / 100 == parseInt( sYear / 100 ) ) 
		                     && ( sYear / 400 != parseInt( sYear / 400 ) ) ) ) {
				var bLeapYear = true;
			} else {
				var bLeapYear = false;
			}
			if ( ! bLeapYear && sDay==29 ) {
				return "";
			}
		}
	
		// Day format
		if ( sDay.length == 1 ) { sDay = "0" + sDay; }
	
		// Month format
		if ( sMonth.length == 1 ) { sMonth = "0" + sMonth; }
	
		// Date format
		return ( sDay + "/" + sMonth + "/" + sYear );
	
}

function IsNumeric( sNumber ) {

	// Check String contains just numeric values
	for ( lPos = 0; lPos < sNumber.length; lPos++ ) {
		var sChar = sNumber.charAt( lPos );
		if ( isNaN( parseInt( sChar ) ) 
		     && sChar != "-"
		     && sChar != "+"
		     && sChar != "."
		     && sChar != "," ) {
			return "";
		}
	}
	return sNumber;
}

function IsMailAddress( sMail ) {
	var Pos    = sMail.indexOf('@')
	var Period   = sMail.lastIndexOf('.')
	var Space    = sMail.indexOf(' ')
	var Length   = sMail.length - 1   // Array is from 0 to length-1
	var invalid = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // invalid characters
	var valid = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid characters
	var end = /\.[a-zA-Z]{2,3}$/; // end of email
	
	if ((Pos < 3) ||				// Must be atleast 3 characters before @ sign
		(Period <= Pos+1) ||        // Must be atleast one valid char btwn '@' and '.'
		(Period == Length ) ||      // Must be atleast one valid char after '.'
		(Space  != -1) ||           // No empty spaces permitted
		(invalid.test(sMail)) ||	// Mustn't contain invalid characters
		(!valid.test(sMail)) ||		// Must contain valid characters
		(sMail.search(end) == -1))  // Check email's end
	{  
      return false;
	}
  
	return true;

}

function ValidaNIF(theField,sTexto,sTexto1,sTexto2){
	var bOk = true;
	
	if (bOk){
		var cadena = 'TRWAGMYFPDXBNJZSQVHLCKET';
		var i;
		var campo = theField.value;
		var iNumero = '';
		var longitud = campo.length;
		for(i=0; i<longitud-1; i++){
			iNumero+=campo.charAt(i);
		}
		if(!isNaN(iNumero)){
			var sLetraField = campo.charAt(longitud-1).toUpperCase();
			if(!isNaN(sLetraField)){
				alert(sTexto1+sTexto+" "+sTexto2);
				theField.focus();
				return false;			
			}else{
				var posicion = iNumero % 23;
				sLetra=cadena.charAt(posicion);
				if (sLetra == sLetraField){
					return true;	
				}else{
					alert(sTexto1+sTexto+" "+sTexto2);
					theField.focus();
					return false;
				}
			}
		}else{
			alert(sTexto1+sTexto+" "+sTexto2);
			theField.focus();
			return false;
		}
	}else{
		theField.focus();
		return false;
	}
}

function ValidaCIF(theField,sTexto,sTexto1,sTexto2){
	
	
		var bOk = true;
		
		if (bOk)
		{
		   var Retorno = true;
		   var Entidad;
		   var StEntidad;
		   var Provincia;
		   var NumeroSec;
		   var CaracterControl, CaracterControlEntrada;
		   var TablaControl = 'JABCDEFGHI';
		   var otras = 'ABCDEFGHSPQX';
		   var numero = '0123456789';
		   var Suma = 0;
		   var Suma1 = 0;
		   var Suma2 = 0;
		   var nAux = 0;
		   var tmp = '';
		   tmp = "" + theField.value;
		   Entidad = tmp.charAt(0);
		   Entidad = Entidad.toUpperCase();
		   if( otras.indexOf( Entidad) == -1) {
		   	  alert(sTexto1+sTexto+" "+sTexto2);
 			  theField.focus();	
		      return false;
		   }
		   Provincia = tmp.substring(1,3);
		   NumeroSec = tmp.substring(3,8);
		   NumeroSec2 = tmp.substring(1,8);
		   CaracterControlEntrada = tmp.substring( 8);
		   CaracterControlEntrada = CaracterControlEntrada.toUpperCase();
		   if( (Entidad >= "A") && (Entidad <= "H") ) {
		         StEntidad = "JURIDICA";
		   }
		   else if( (Entidad == "S") || (Entidad == "Q") ) {
		      StEntidad="ORGANISMO";
		   }
		   else if( Entidad == "X") //  Extranjero residente
		   {
		      return isNIFLetter( tmp);
		   }
		   if( Retorno != false) {           // Entidad correcta
		      for (var i = 0; i < NumeroSec2.length; i++) {
		         if( numero.indexOf( NumeroSec2.charAt( i)) == -1) {
		            alert(sTexto1+sTexto+" "+sTexto2);
		 			theField.focus();	
				    return false;
		         }
		      }
		      if( parseInt( NumeroSec, 10) == 0)
		      {
		         Retorno = false;
		      }
		      else if( (StEntidad == "JURIDICA") || (StEntidad == "ORGANISMO"))
		      {
		         Suma2 = 0;
		         Suma1 = parseInt( NumeroSec2.charAt( 1), 10) + parseInt( NumeroSec2.charAt( 3), 10) + parseInt( NumeroSec2.charAt( 5), 10 );
		         for( var i = 0; i < 7; i += 2) {
		            nAux = parseInt( NumeroSec2.charAt( i), 10) * 2;
		            if (nAux > 9) {
		               Suma2 = Suma2 + parseInt( nAux / 10, 10) + nAux % 10;
		            } else {
		               Suma2 = Suma2 + nAux;
		            }
		         }
		         Suma = Suma1 + Suma2;
		         i = 10 - Suma % 10;
		         if( i > 9) { 
		            i = 0;
		         };
		         if( StEntidad == "JURIDICA") {
		            CaracterControl = i;
		         } else {
		            CaracterControl = TablaControl.charAt( i);
		         }
		         if (CaracterControl != CaracterControlEntrada) {
		            	CaracterControl = TablaControl.charAt( i);
		         	if (CaracterControl != CaracterControlEntrada) 
		  	     	 	  Retorno = false;                         
		         }; // fin if
		      } // fin else if
		   }// fin if retorno
		   
		   if (Retorno==false)
		   {
		   		alert(sTexto1+sTexto+" "+sTexto2);
 			  	theField.focus();	
		      	return false;
		   }
		   else
		   {
		   	   return Retorno;
		   }   
		}   
	
	
}


function ValidaCIFNIF(theField, sTexto,sTexto1,sTexto2){
       
		var campo = theField.value;
		var longitud = campo.length;

		var sLetraFieldUltima = campo.charAt(longitud-1).toUpperCase();
		var sLetraFieldPrimera = campo.charAt(0).toUpperCase();
		
		if (isNaN(sLetraFieldUltima)){
			 if (!ValidaNIF(theField, sTexto,sTexto1,sTexto2)){
			 	return false;
			 }
		}else if (isNaN(sLetraFieldPrimera)){
		
			 if (!ValidaCIF(theField,sTexto,sTexto1,sTexto2)){
			  
			 	return false;
			 }
		}
		return true;
}
