/*

  validate-input-data.js
  Copyright (c) 2007 - Formauri, S.L. - Todos los derechos reservados/All rights reserved
  <http://www.formauri.es/>

*/
/* Functions that haven't been created by Formauri will be clearly detailed */




/* NEEDS: prototype.js (v 1.4.0) */
/*        popups.js              */



function ValidInteger(txtInteger)
{
  return ( txtInteger == parseInt(txtInteger) );
}


expRegLogin = /^[a-zA-Z0-9]+$/;
expRegPassw = /^[a-zA-Z0-9]+$/;
expRegURL = /^(https?:)(\/\/([^\/?#]+))([^?#]*)(\?([^#]*))?(#(.*))?$/;
expRegEmail = /^([\w\d\-\.]+)@{1}(([\w\d\-]{1,67})|([\w\d\-]+\.[\w\d\-]{1,67}))\.(([a-zA-Z\d]{2,4})(\.[a-zA-Z\d]{2})?)$/;


function ValidLogin(txtLogin)
{
  return txtLogin.match(expRegLogin);
}

function ValidPassw(txtPassw)
{
  return txtPassw.match(expRegPassw);
}

function ValidEmail(txtEmail)
{
  return txtEmail.match(expRegEmail);
}

function ValidURL(txtURL)
{
  return txtURL.match(expRegURL);
}

function Show_Ok_NoOk_Layers(isLayerOk, layerOk, layerNoOk)
{
  if ( isLayerOk )
  {
    $(layerOk).style.display = "inline";
    $(layerNoOk).style.display = "none";
  }
  else
  {
    $(layerOk).style.display = "none";
    $(layerNoOk).style.display = "inline";
  }
}

function Hide_Ok_NoOk_Layers(layerOk, layerNoOk)
{
  $(layerOk).style.display = "none";
  $(layerNoOk).style.display = "none";
}


function ValidateEmail(txtEmail, layerOk, layerNoOk)
{
  if(txtEmail != "")
    Show_Ok_NoOk_Layers(ValidEmail(txtEmail), layerOk, layerNoOk);
  else
    Hide_Ok_NoOk_Layers(layerOk, layerNoOk);
}


function ValidateURL(txtURL, layerOk, layerNoOk)
{
  if(txtURL != "")
    Show_Ok_NoOk_Layers(ValidURL(txtURL), layerOk, layerNoOk);
  else
    Hide_Ok_NoOk_Layers(layerOk, layerNoOk);
}

function TryURL(txtURL)
{
  if(ValidURL(txtURL))
  {
    OpenPopUpWindowCSB(txtURL, 450, 300);
  }
  else
  {
    alert('La dirección que ha escrito es incorrecta, corríjala y vuélvalo a intentar.');
  }
}





/* Dates and hours */

function ValidDate(year, month, day)
{
  year = parseInt(year, 10);
  month = parseInt(month, 10);
  day = parseInt(day, 10);

  leapYear = ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)));

  return(   // Checking ranges
    year > 0
    && (month >= 1 && month <= 12)
    && (day >= 1 && day <= 31)
    // And now checking if the day is OK in the given month
    &&  (
          ( (month == 4 || month == 6 || month == 9 || month == 11) && day <= 30 )
          || ( (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) && day <= 31 )
          || ( month == 2 &&  ( ( leapYear && day <=29 ) || ( !leapYear && day <=28 ) ) )
        )
    );
}

function ValidTimeHMS(hour, min, sec)
{
  hour = parseInt(hour);
  min = parseInt(min);
  sec = parseInt(sec);

  return(   // Checking ranges
    (hour >= 0 && hour <= 23)
    && (min >= 0 && min <= 59)
    && (sec >= 0 && sec <= 59)
    );
}

function ValidTimeHM(hour, min)
{
  hour = parseInt(hour);
  min = parseInt(min);

  return(   // Checking ranges
    (hour >= 0 && hour <= 23)
    && (min >= 0 && min <= 59)
    );
}










