// Функции проверок данных

//-------------------------------------------------------------------------
// Пустая строка
var IS_EMPTY = 1;

// Целое число
var IS_NUMBER = 2;

// Дробное число
var IS_FLOAT = 4;

// E-mail
var IS_MAIL = 8;

// Только буквы
var IS_ONLYSTRING = 16;

// Больше нуля
var IS_OVER_ZERO = 32;

// Не меньше нуля
var IS_NOT_SUBZERO = 64;

// Только английские буквы
var IS_ONLYLATIN = 128;

// Телефон
var IS_PHONE = 256;

//проверка на равенство форм
var IS_EQUAL = 1024;

//-------------------------------------------------------------------------
// Проверка вводимых данных на пустоту
//-------------------------------------------------------------------------

function fEmpty(nControl)
{
for (var i = 0; i < nControl.value.length; i++)
    {
    var Ch = nControl.value.charAt(i);
    if ((Ch != ' ') && (Ch != '\n') && (Ch != '\t')) return (false);        
    }

return (true);
}   

//-------------------------------------------------------------------------
// Проверка вводимых данных на равенство
//-------------------------------------------------------------------------

function fEqual(nControl1, nControl2)
{

if(nControl1.value === nControl2.value)
    {return (true);}
else
    {return (false);}
}   


//-------------------------------------------------------------------------
// Введен ли e-mail
//-------------------------------------------------------------------------

function fEmail(nControl) 
{
var emailPat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;

var matchArray = nControl.value.match(emailPat)
        
if (matchArray == null) return (false);
return(true);
}


//-------------------------------------------------------------------------
// Проверка вводимых данных на целое число
//-------------------------------------------------------------------------

function fInteger(nControl)
{

var digits="0123456789";

if ((nControl.value.charAt(0) == '-') && (nControl.value.length == 1)) return (false);

for(i = 0; i < nControl.value.length; i++)
    {
    if (nControl.value.charAt(0) == '-')
        {
        if (digits.indexOf(nControl.value.charAt(i + 1)) < 0)
        return (false);
        }
    else
        {
        if (digits.indexOf(nControl.value.charAt(i)) < 0)
        return (false);
        }
    }

return (true);  
}   


//-------------------------------------------------------------------------
// Проверка на положительность числа
//-------------------------------------------------------------------------

function fOverZero(nControl)
{
if (nControl.value < 0)  return (false);
else return (true); 
}   


//-------------------------------------------------------------------------
// Проверка на неотрицательность
//-------------------------------------------------------------------------

function fNotSubZero(nControl)
{
if (nControl.value >= 0)  return (true);
else return (false);    
}   

//-------------------------------------------------------------------------
// Проверка вводимых данных на дробное число
//-------------------------------------------------------------------------

function fFloat(nControl)
{
  if(isNaN(nControl.value))
  {
  return (false); 
  }
  else
  {
  return (true);
  }
}   

//-------------------------------------------------------------------------
// Проверка на отсутствие цифр
//-------------------------------------------------------------------------

function fOnlyString(nControl)
{
var userEntry = nControl.value;
var oneChar;
for (var i = 0; i < userEntry.length; i++) 
    {
    oneChar = userEntry.charAt(i)
    if (oneChar >= "0" || oneChar <= "9") 
        {
        return false;
        }
    }
return true;
}   


//-------------------------------------------------------------------------
// Проверка на английские буквы
//-------------------------------------------------------------------------

function fOnlyLatin(nControl)
{
var cyrillics = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ?!@&()[]{}|,\"\'\\/~`+=^<>%$#;: ";

nC = nControl.value.toUpperCase();

for(i = 0; i < nC.length; i++)
    {
    if (cyrillics.indexOf(nC.charAt(i)) >= 0) return (false);
    }

return (true);  
}   

//-------------------------------------------------------------------------
// Проверка на соответствие телефону
//-------------------------------------------------------------------------

function fPhone(nControl)
{
var phone = "1234567890-() +";

nC = nControl.value.toUpperCase();
for(i = 0; i < nC.length; i++)
    {
    if (!(phone.indexOf(nC.charAt(i)) >= 0)) return (false);
    }
return (true);  
}   


//-------------------------------------------------------------------------
// Проверка контрола
//-------------------------------------------------------------------------

function fCheckControl(nControl, tControl, dControl, nControl1)
{
var ms = ""; 

// Проверка на пустоту
if (tControl & IS_EMPTY)
    {
    if (fEmpty(nControl)) 
        {
        ms = "Поле \"" + dControl + "\" обязательно для заполнения!"; 
        nControl.focus();
        return (ms);
        }
        
    }

    // Проверка на пустоту
if (tControl & IS_EQUAL)
    {
    if (!fEqual(nControl, nControl1)) 
        {
        ms = "Поле \"" + dControl + "\" Не равны!"; 
        nControl.focus();
        return (ms);
        }
    }

 
// Проверка на целое число
if (tControl & IS_NUMBER)
    {
    if (!fInteger(nControl)) 
        {
        ms = "Поле \"" + dControl + "\" не является целым числом!"; 
        nControl.focus();
        return (ms);
        }
    }

// Проверка на дробное число
if (tControl & IS_FLOAT)
    {
    if (!fFloat(nControl)) 
        {
        ms = "Поле \"" + dControl + "\" не является дробным числом!"; 
        nControl.focus();
        return (ms);
        }
    }
    
// Проверка на электронный адрес
if (tControl & IS_MAIL)
    {
    if (!fEmail(nControl))
        {
        ms = "Поле \"" + dControl + "\" не является электронным адресом!"; 
        nControl.focus();
        return (ms);
        }
    }

// Проверка на строку
if (tControl & IS_ONLYSTRING)
    {
    }

// Проверка на положительное 
if (tControl & IS_OVER_ZERO)
    {
    if (!fOverZero(nControl))
        {
        ms = "Поле \"" + dControl + "\" должно быть положительным числом!"; 
        nControl.focus();
        return (ms);
        }
    
    }
    
// Проверка на неотрицательное число
if (tControl & IS_NOT_SUBZERO)
    {
    if (!fNotSubZero(nControl))
        {
        ms = "Поле \"" + dControl + "\" должно быть неотрицательным числом!"; 
        nControl.focus();
        return (ms);
        }
    }

// Проверка на латинские буквы
if (tControl & IS_ONLYLATIN)
    {
    //ms = fOnlyLatin(nControl);
    if (!fOnlyLatin(nControl))
        {
        ms = "Поле \"" + dControl + "\" может содержать только символы латинского алфавита и знаки \".\", \"-\", \"_\" !"; 
        nControl.focus();
        return (ms);
        }
    }

// Проверка на отсутствие цифр
if (tControl & IS_ONLYSTRING)
    {
    //ms = fOnlyLatin(nControl);
    if (!fOnlyString(nControl))
        {
        ms = "Поле \"" + dControl + "\" не должно содержать цыфры!"; 
        nControl.focus();
        return (ms);
        }
    }

if (tControl & IS_PHONE)
    {
    //ms = fPhone(nControl);
    if (!fPhone(nControl))
        {
        ms = "Поле \"" + dControl + "\" может содержать только цифры и знаки \"+\", \"-\", \"(\"  \")\" и пробел!"; 
        nControl.focus();
        return (ms);
        }
    }

// Если всё хорошо возвращаем Ок
return (ms);
}   


//-------------------------------------------------------------------------
// Функция проверки формы
//-------------------------------------------------------------------------


//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------