/* ------------------- */
/* Funciones generales */
/* ------------------- */
 
function Trim(cad)
{
  var aux="";
  var i,lg = cad.length;
  for (;lg>0 && cad.charAt(lg-1)<=' ';lg--);
  for (i=0;i<lg && cad.charAt(i)<=' ';i++);
  for (;i<lg;i++) aux = aux + cad.charAt(i);
  return aux;
}


function IsAlpha(car)
{
  car = car.toUpperCase();
  esp = " -áéíóúäëïöüÄËÏÖÜÁÉÍÓÚñÑ";
  return  (car>='A' && car<='Z') || esp.indexOf(car)!=-1;
}


// ARGUMENTOS FUNCION Abrir_Ventana
// theURL: Dirección
// winName: Nombre que queremos darle a la ventana
// Features:
	// scrollbars: Si tiene barras de desplazamiento
	// resizable: Si puede cambiarse tamaño
	// width y height: Dan tamaño a la ventana
	// top y left: Posiciona la ventana

function Abrir_Ventana(theURL, winName, features)
{
  window.open(theURL, winName, features);
}


/* --------------------------------- */
/* Funciones de validacion de fechas */
/* --------------------------------- */

// Función que comprueba que el formato de fecha es correcto

function comprobarFecha(dia, mes, anio)
{
  var caracter;
  var cadena = dia + "/" + mes + "/20" + anio;
  var caracteresValidos = "/0123456789";

  if(cadena.length!=10 || cadena.charAt(2)!="/" || cadena.charAt(5)!="/")
  {
    return false;
  }
  for(var i=0;i<cadena.length;i++)
  {
    caracter = cadena.charAt(i);
    if(caracteresValidos.indexOf(caracter)<0)
    {
      return false;
    }
  }
  dia = parseInt(cadena.substr(0,2),10);
  mes = parseInt(cadena.substr(3,2),10);
  anio = parseInt(cadena.substr(6,4),10);
  if(anio<=0)
  {
    return false;
  }
  switch(mes)
  {
    case 1:case 3:case 5:case 7:case 8:case 10:case 12:
    {
      if(dia<=0 || dia>31) return false;
      break;
    }
    case 4:case 6:case 9:case 11:
    {
      if(dia<=0 || dia>30) return false;
      break;
    }
    case 2:
    {
      if(anio%4)
      {
        if(dia<=0 || dia>28) return false;
      }
      else if(dia<=0 || dia>29) return false;
      break;
    }	
    default:
    {
      return false;
    }
  }
  return true;
}


// Función que comprueba que la fecha de regreso sea mayor o igual que la de salida

function CompruebaRangos(di, mi, ai, df, mf, af)
{  
  if (ai<100)
  {
    ai = "20" + ai;
  }
  if (af<100)
  {
    af = "20" + af;
  }
  di = parseInt(di,10);
  mi = parseInt(mi,10);
  ai = parseInt(ai,10);
  df = parseInt(df,10); 
  mf = parseInt(mf,10);
  af = parseInt(af,10);
  if (af<ai)
  {       
    return false;
  }
  if (af>ai) return true;
  if (mf<mi) return false;
  if (mf>mi) return true;
  if (df<di) return false;
   
  return true;
}
 

// Función que comprueba que una fecha sea posterior a la fecha actual
 
function CompruebaRango(df, mf, af, navegador)
{  
  if (af<100)
  {
    af="20" + af;
  }
  
  df = parseInt(df,10);
  mf = parseInt(mf,10);
  af = parseInt(af,10); 

  fa = new Date();
  da = fa.getDate();    
  ma = fa.getMonth()+1;

  if (navegador=="ie")
  {
    aa = fa.getYear(); 
  }
  else
  {
    aa = 1900+fa.getYear();
  }

  if (af<aa) return false;
  if (af>aa) return true;
  if (mf<ma) return false;
  if (mf>ma) return true;
  if (df<da) return false;
  return true;
}


// Función que comprueba que la hora de regreso sea posterior a la hora de salida

function CompruebaHoras(di, mi, ai, df, mf, af, hs, hr)   
{
  if((af==ai) && (mf==mi) && (df==di))
  {
    if (hr<=hs) 
    {  
      return false; 
    }
  }
  return true;
} 


// Función que comprueba que una hora sea posterior a la hora actual

function CompruebaHora(di, mi, ai, hs, navegador)   
{   
  mi = parseInt(mi,10);
  di = parseInt(di,10);
  hs = parseInt(hs,10);
  if (ai<100)
  {
    ai = "20" + ai;
  }
  ai = parseInt(ai,10);
  fa = new Date();

  if (navegador=="ie")
  {
    aa = fa.getYear(); 
  }
  else
  {
    aa = 1900+fa.getYear();
  }

  ma = fa.getMonth()+1;
  da = fa.getDate();
  ha = fa.getHours();
   
  if((aa==ai) && (ma==mi) && (da==di))
  {
    if (hs<=ha) 
    {
      return false; 
    }     
  }
  return true;
} 


/* --------------- */
/* Otras funciones */
/* --------------- */

// Función que comprueba que el número de vuelo sea correcto

function CompruebaNumeroVuelo(numero)
{
  var caracteresValidos = "0123456789";

  if (numero.length<4)
  {
    return false;
  }
  for(var i=0;i<numero.length;i++)
  {
    caracter = numero.charAt(i);
    if(caracteresValidos.indexOf(caracter)<0)
    {
      return false;
    }
  }
  return true;
} 


// Función que comprueba que el origen y el destino sean distintos

function CompruebaViaje(ori, des)
{
   if (ori==des) return false;
   return true;
}


// Función que comprueba que el codigo de Aeropuerto sea correcto
function CompruebaAeropuerto(ap)
{
	if (ap.length != 3)
   		return false;
	else
		return true;
}


// Función que comprueba que el numero de plazas sea correcto

function Compruebaplazas(adult, child)
{ 
  var pasajeros = parseInt(adult, 10) + parseInt(child, 10);

  if (pasajeros<=0 || pasajeros>4) return false;
  return true;
}

function Compruebaplazas2(adult, child, maxpax)
{ 
  var pasajeros = parseInt(adult, 10) + parseInt(child, 10);

  if (pasajeros<=0 || pasajeros>maxpax) return false;
  return true;
}


// Función que comprueba que el numero de bebes sea correcto

function Compruebabebes(adult, baby)
{ 
  if (parseInt(baby, 10)>parseInt(adult, 10)) return false;
  return true;
}


// Función que comprueba que el mail sea correcto
 
function EMailOk(cad)
{
  cad = Trim(cad);
  var car;
  var arroba = 0;
  var punto = 0;
  longitud = cad.length;
  for (var i=0;i<longitud;i++)
  {
    car = cad.charAt(i);
    if (car==' ') return false;
    if (!(IsAlpha(car) || car=='@' || car=='.' || car=='_' || car=='-' || (car>='0' && car<='9'))) return false;
    if (car=='@')
      if (arroba>0)
        return false;
      else
	if (i==0)
	  return false;
	else
	  arroba=i;
    else
      if (car=='.')
        if (i==0)
	  return false;
	else
	  punto=i;
  }
  return (arroba>0 && punto>0 && arroba<punto && punto>arroba+1 && car!='.');
}
