// модул за валидизация на форми


// -------------------------------------------------------------------------------
// Попълнени ли са въобще някакви данни в това поле - помощна функция...

function validRequired ( formField, fieldLabel )
{
  var result = true;
	
  if ( formField.value == "" )
    {
      alert ( 'ГРЕШКА!!!\nМоля въведете данни в полето "' + fieldLabel +'".' );
      formField.focus();
      result = false;
    }

  return result;
}


//-------------------------------------------------------------------------------
// данни само на кирилица...
// required - дали полето е задължително

function is_cyrillic ( formField, fieldLabel, required )
  {
    var s = formField.value;

    if ( s.length==0 )
      {
        if ( required )
          {
            alert ( "ГРЕШКА!!!\nПропускате задължителното поле\n" + fieldLabel );
            formField.focus();
            return false;
          }
        else
          return true;
      }

    var test = "" + s;
    test = test.toUpperCase();

    for ( var k = 0; k < test.length; k++ )
      {
        var c = test.substring ( k, k+1 );
        if ( ( c>="A" )&&( c<="Z" ) )
          {
            alert ( "ГРЕШКА!!!\nОчакван текст на кирилица в полето\n" + fieldLabel );
            formField.focus();
            return false;           
          }
      }
    return true;
  }


//-------------------------------------------------------------------------------
// Валиден e-mail адрес - помощна функция...

function isEmailAddr ( email )
{
  var result = false;
  var theStr = new String ( email ) ;
  var index = theStr.indexOf ( "@" );
  if ( index > 0 )
    {
      var pindex = theStr.indexOf ( ".", index );
      if ( (pindex > index + 1 ) && ( theStr.length > pindex + 2 ) )
        result = true;
    }
  return result;
}


// -------------------------------------------------------------------------------
// Валиден e-mail...
// required - дали полето е задължително

function validEmail ( formField, fieldLabel, required )
{
  var result = true;

  if ( required && !validRequired ( formField, fieldLabel ) )
    return false;

  if ( !required && ( formField.value=="" ) )
    return true;

  if ( result && ( ( formField.value.length < 3 ) || !isEmailAddr ( formField.value ) ) )
    {
      alert ( "ГРЕШКА!!!\nМоля въведете валиден e-mail адрес \n(от типа: yourname@yourdomain.com)" );
      formField.focus();
      result = false;
    }

  // допълнителна проверка за коректни знаци
  var s = formField.value;
  var may_be = "0123456789-_@.abcdefghijklmnopqrstuvwxyz";

  for ( var k = 0; k < s.length; k++ )
    {
      var c = s.substring ( k, k+1 );
      if ( may_be.indexOf ( c ) < 0 )
        {
          alert ( "ГРЕШКА!!!\nВъвели сте недопустими знаци в e-mail адрес \n(от типа: yourname@yourdomain.com)" );
          formField.focus();
          return false;
        }
    }

  return result;
}


//--------------------------------------------------------------------------------
// Дали това е валидно цяло число...
// reguired - дали е задължително поле или не...
// numbers - точен брой знаци; ако са 0, значи не са фиксирани...

function is_integer ( formField, fieldLabel, required, numbers )
{
  if ( required && !validRequired ( formField, fieldLabel ) )
    return false;

  if ( !required && ( formField.value=="" ) )
    return true;

  var s = formField.value;
  var digits = "0123456789";

  for ( var k = 0; k < s.length; k++ )
    {
      var c = s.substring ( k, k+1 );
      if ( digits.indexOf ( c ) < 0 )
        {
          if ( numbers > 0 )
            alert ( 'ГРЕШКА!!!\nМоля въведете правилно число за полето \n' + fieldLabel + ' \nот ' + numbers + ' цифри.');
          else
            alert ( 'ГРЕШКА!!!\nМоля въведете правилно число за полето \n' + fieldLabel );
          formField.focus();		
          return false;
        }
    }

  // тук вече знаем, че всичко е цифри
  if ( ( numbers != 0 ) && ( s.length != numbers ) ) 
    {
      alert ( 'ГРЕШКА!!!\nНекоректен брой на цифрите в полето \n' + fieldLabel );
      formField.focus();
      return false;
    }
  
  return true;
}


//--------------------------------------------------------------------------------
// Дали това е валиден телефонен номер...
// reguired - дали е задължително поле или не...

function is_tel_number ( formField, fieldLabel, required )
{
  if ( required && !validRequired ( formField, fieldLabel ) )
    return false;

  var s = formField.value;
  var may_be = "0123456789()- \/";

  for ( var k = 0; k < s.length; k++ )
    {
      var c = s.substring ( k, k+1 );
      if ( may_be.indexOf ( c ) < 0 )
        {
          alert ( 'ГРЕШКА!!!\nНеправилни данни за телефон в полето \n' + fieldLabel );
          formField.focus();		
          return false;
        }
    }
  
  return true;
}


// -------------------------------------------------------------------------------
// Валидна дата...
// required - дали е задължително поле...

function validDate ( formField, fieldLabel, required )
{
  var result = true;

  if ( required && !validRequired ( formField, fieldLabel ) )
    result = false;
  
  if ( result )
    {
      var elems = formField.value.split ( "/" );
 		
      result = ( elems.length == 3 ); // три компонента
 		
      if ( result )
        {
          var day   = parseInt ( elems[0] );
          var month = parseInt ( elems[1] );
          var year  = parseInt(elems[2]);
          result    = !isNaN ( month ) && ( month > 0 ) && ( month < 13 ) &&
                      !isNaN ( day ) && ( day > 0 ) && ( day < 32 ) &&
                      !isNaN ( year ) && ( elems[2].length == 4 );
         }
 		
      if ( !result )
        {
          alert ( 'ГРЕШКА!!!\nМоля въведете дата във формат: ДД/ММ/ГГГГ за полето "' + fieldLabel +'".' );
          formField.focus();
        }
    } 
	
  return result;
}

// -------------------------------------------------------------------------------
// Пропуснато поле за избор...
function madeOption ( formField, fieldLabel )
{
  if ( formField[0].selected )
    {
      alert ( 'ГРЕШКА!!!\nНе сте направили необходимия избор в полето "' + fieldLabel +'".' );
      formField.focus();
      return false;
    }
  return true;
}
