function trimString (str) {
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

function IsTime(timeStr)
{
	var timePat = /^(\d{1,2})(\:)(\d{2})$/;
	var matchArray = timeStr.match(timePat)
	if (matchArray == null)
	   return false
	hora = matchArray[1]
	minuto = matchArray[3]
	if (hora > 23 || hora < 0) return false
	if (minuto > 59 || minuto < 0) return false
	return true
}

function IsDate(dateStr)
{
    // Checks for the following valid date formats:
    // MM/DD/YYYY   MM-DD-YYYY
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
   var matchArray = dateStr.match(datePat)
   if (matchArray == null)
       return false
   day = matchArray[1]
   month = matchArray[3]
   year = matchArray[4]
   if (month < 1 || month > 12)
       return false
   if (day < 1 || day > 31)
       return false
   if ((month==4 || month==6 || month==9 || month==11) && day==31)
       return false
   if (month == 2)
   {
       var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
       if (day>29 || (day==29 && !isleap))
           return false;
   }
   return true;
}
function IsEmpty(oCampo)
{
   if (oCampo.value=="")
   {
       alert ('Debe informar un valor')
       oCampo.focus()
       return true
   }
   return false
}
function IsEmptyEx(oCampo,pMsg)
{
   if (oCampo.value=="")
   {
       alert (pMsg)
       oCampo.focus()
       return true
   }
   return false
}

function IsNumeric(oCampo)
{
   if (isNaN(oCampo.value.replace(",",".")))
   {
       alert ('El valor debe ser numérico')
       oCampo.focus()
       return false
   }
   return true
}

function IsCombo(oCampo)
{
   if (oCampo.options[oCampo.selectedIndex].value == 0)
   {
       alert ('Debe elegir un valor de la lista')
       oCampo.focus()
       return false
   }
   return true
}
function IsComboEx(oCampo,pMsg)
{
   if (oCampo.options[oCampo.selectedIndex].value == 0)
   {
       alert (pMsg)
       oCampo.focus()
       return false
   }
   return true
}

function IsEmail(oCampo)
{
if (oCampo.value=="") return true;
var emailaddr=oCampo.value
var i = ">" + emailaddr + ">";
var r = />[\w\.\-]+@[\w\.\-]+\.[\w\.]+>/;
if (!r.test(i))
{
    alert ('Formato de E-Mail incorrecto')
    oCampo.focus()
    return false
}
return true
}

function IsEmailEx(oCampo,pMsg)
{
if (oCampo.value=="") return true;
var emailaddr=oCampo.value
var i = ">" + emailaddr + ">";
var r = />[\w\.\-]+@[\w\.\-]+\.[\w\.]+>/;
if (!r.test(i))
{
    alert (pMsg)
    oCampo.focus()
    return false
}
return true
}

function IsDateField(oCampo_dia, oCampo_mes, oCampo_ano, required)
{
	var strFecha = trimString(oCampo_dia.value) + "/" + trimString(oCampo_mes.value) + "/" + trimString(oCampo_ano.value)
	if (!required && strFecha=="//") return true
	if (required)
	{
		if (strFecha=="//")
		{
			alert ('Debe informar un valor')
			oCampo_dia.focus()
			return false
		}
	}
    if (!IsDate(strFecha))
    {
		alert ('Formato de fecha incorrecto')
		oCampo_dia.focus()
		return false
    }
return true
}

function IsTimeField(oCampo_hora, oCampo_minuto, required)
{
	var strHora = trimString(oCampo_hora.value) + ":" + trimString(oCampo_minuto.value)
	if (!required && strHora==":") return true
	if (required)
	{
		if (strHora==":")
		{
			alert ('Debe informar un valor')
			oCampo_hora.focus()
			return false
		}
	}
    if (!IsTime(strHora))
    {
		alert ('Formato de hora incorrecto')
		oCampo_hora.focus()
		return false
    }
return true
}


// ----------------------------------------------------------------------------------------------------
// Validación NIF
// ----------------------------------------------------------------------------------------------------

letras = new Array();
  letras[0]  = "T";
  letras[1]  = "R";
  letras[2]  = "W";
  letras[3]  = "A";
  letras[4]  = "G";
  letras[5]  = "M";
  letras[6]  = "Y";
  letras[7]  = "F";
  letras[8]  = "P";
  letras[9]  = "D";
  letras[10] = "X";
  letras[11] = "B";
  letras[12] = "N";
  letras[13] = "J";
  letras[14] = "Z";
  letras[15] = "S";
  letras[16] = "Q";
  letras[17] = "V";
  letras[18] = "H";
  letras[19] = "L";
  letras[20] = "C";
  letras[21] = "K";
  letras[22] = "E";
  
  
function nif(dni){
  dni = parseInt(dni);
  if (dni > 99999999){
    alert("Error. El DNI sólo tiene 8 dígitos")
  }else{
    letraDNI = letras[dni % 23];
    dni = dni.toString();
    nif = dni + letraDNI;
    return nif
  }
}
 
function esNIFCorrecto(nif){  
  ok = true;
  dni=nif.substring(0,nif.length-1);  
  dni=parseInt(dni);
  letra=nif.charAt(nif.length-1);
  letra=letra.toUpperCase( );
  letraCorrecta = letras[ dni % 23];  
  if (dni.toString().length<7) {
    ok = false;
  }else  if (dni > 99999999){     
    ok = false;       
  }else if (nif.length!=9){
	ok = false;
  }
//   else if(letra!=letraCorrecta) {	
//    ok = false;
//  }

  if (ok) {
    return true;
  }else{
    alert("Debe de introducir un NIF valido, y su formato debe de ser 8 digitos y una letra. Ej: 46754017P");
    return false;
  }
}
