function checkValues(formObj, stringArray)
{
/*
 сюда можно передавать либо строку в формате description+fieldName*checkType| 
 "|" разделитель...
 либо массив в формате
  fields[индекс]['title'] = description;
  fields[индекс]['field'] = fieldName;
  fields[индекс]['checkType'] = checkType;
*/
  var dft       = new Array(); // dft это потому шо descriptionFieldType
  var fields    = new Array();
  var errorMsg  = new String;
  var kallError = false;
  var specialCh = new Array("'", '"', '/', '<'); // спец символы вхождение которых проверяецца при checkType == NS

  if(typeof(stringArray) == 'string')
  {
    dft = stringArray.split('|');
    for(i = 0; i < dft.length; i++)
    {
      fields[i]              = new Array();
      fields[i]['title']     = dft[i].substring(0, dft[i].indexOf('+'));
      fields[i]['field']     = dft[i].substring(dft[i].indexOf('+') + 1, dft[i].indexOf('*'));
      fields[i]['checkType'] = dft[i].substring(dft[i].indexOf('*') + 1, dft[i].length);
    }
  }
  else
    fields = stringArray;
  
  for(i = 0; i < fields.length; i++)
  {
    if(formObj[fields[i]['field']])
    {
      thisValue = formObj[fields[i]['field']].value;
      thisTitle = fields[i]['title'];
  		switch(fields[i]['checkType'])
  		{
  			case "NE":
  				if(!thisValue)
          {
  					errorMsg += 'Поле "' + thisTitle + '" незаполнено и осталось пустым\n\n';
            kallError = true;
          }
  			break;

        case "INT":
          if(thisValue * 1 != thisValue)
          {
  					errorMsg += 'Поле "' + thisTitle + '" заполнено неверно!\n\n';
            kallError = true;
          }          
  			break;
        
        case "EMAIL":
          first = thisValue.indexOf('@');
          last  = thisValue.lastIndexOf('@');
          if(first == -1)
          {
  					errorMsg += 'Поле "' + thisTitle + '" в нем должен содержаться символ "@"\n\n';
            kallError = true;
          }
          else
          {
            if(last != first)
            {
    					errorMsg += 'Поле "' + thisTitle + '" заполнено неверно! в нем не может быть больше 1го "@"\n\n';
              kallError = true;
            }
            else
            {
              emailPostDog = thisValue.substring(thisValue.indexOf('@') + 1, thisValue.length);
              if(emailPostDog.indexOf('.') == -1)  
              {
      					errorMsg += 'Неверно указан домен в поле "' + thisTitle + '"\n\n';
                kallError = true;
              }
            }
          }
  			break;
        
        case "NS":
          for(j = 0; j < specialCh.length; j++)
          {
            if(thisValue.indexOf(specialCh[j]) != -1)
            {
    					errorMsg += 'Недопустимый символ "' + specialCh[j] + '" в поле "' + thisTitle + '"\n\n';
              kallError = true;
            }
          }
        break;
        
  			case 'DATE':
          dateArr = new Array();
          dateArr = thisValue.split('-');
          if(dateArr.length < 3)
          {
  			    errorMsg += 'Неверно указана дата в поле "' + thisTitle + '" (требуемый формат гггг-мм-дд)\n\n';
              kallError = true;
          }
        break;          
        
  			case "USDATE":
          dateArr = new Array();
          dateArr = thisValue.split('.');
          if(dateArr.length < 3)
          {
  			    errorMsg += 'Неверно указана дата в поле "' + thisTitle + '" (требуемый формат гггг.мм.дд)\n\n';
            kallError = true;
          }
        break;
                  
  			case "RUDATE":
          dateArr = new Array();
          dateArr = thisValue.split('.');
          if(dateArr.length < 3)
          {
  			    errorMsg += 'Неверно указана дата в поле "' + thisTitle + '" (требуемый формат дд.мм.гггг)\n\n';
            kallError = true;
          }
        break;
      }
		}
  }
  
  if(kallError)
  {
    alert(errorMsg);
    return false;
  }
  else
    return true;

}

function checkUncheck(formName, checkIt) 
{
//чекает или наоборот ВСЕ чекбоксы формы
  for(i = 0; i < document.forms[formName].length; i++)
    if(document.forms[formName][i].type == 'checkbox')
      document.forms[formName][i].checked = checkIt;
}

function clickOnCheckbox(formName)
{
  var so = '';
  var theS  = '';
  var megaCbName = '';
  var allCheck = 1;
  for(i = 0; i < document.forms[formName].length; i++)
  {
    if(document.forms[formName][i].type == 'checkbox')
    {
      so = document.forms[formName][i].onclick + '';
      theS = so.substring(so.indexOf('{') + 2, so.lastIndexOf('(')) + '';
      if(theS == 'checkUncheck')
        megaCbName = document.forms[formName][i].name;
      else
        if(document.forms[formName][i].checked == false)
          allCheck = 0;
    }
  }
  
  if(megaCbName)
    if(allCheck)
      document.forms[formName][megaCbName].checked = true;
    else
      document.forms[formName][megaCbName].checked = false;
}
