var error;

$(document).ready(init_val);

function init_val()
{
$('#order').children().keyup(validate).click(validate);
$('input.vis_toggle').click(vis_toggle);
}

function validate()
{
error=0;
validate_password();
validate_required();
validate_numeric();
validate_email();
validate_phone();

if(error)
  {
    $('.submit').attr('disabled',true);
    $('#order').submit(function(){return false;});
  }
else
  {
    $('.submit').attr('disabled',false);
    $('#order').unbind('submit');
  }
}

function validate_required()
{
  $('.required').each(function()
   { 
     $(this).next('.vreqtxt').remove();
     if($(this).val()=='')
       {
        $(this).css('border','solid 2px red').after('<span style="font-size: 0.8em;color:red" class="vreqtxt"> Обязательное поле</span>');
        error++;
       } 
     else
       {
         if($(this).attr('alt') && $(this).val().length < $(this).attr('alt')*1)
           {
              $(this).css('border','solid 2px red').after('<span style="font-size: 0.8em;color:red" class="vreqtxt"> Минимальная длина поля ' + $(this).attr('alt') + ' симв.</span>');
              error++;
           }
         else
           $(this).css('border','');
       }
   });
}
                      
function validate_numeric()
{
  $('.numeric').each(function()
    {
     $(this).next('.vreqtxt').remove();
     if($(this).val().match(/^[\d+]{1,}$/)==null)
       {
        $(this).css('border','solid 2px red').after('<span style="font-size: 0.8em;color:red" class="vreqtxt"> Числовое поле</span>');
        error++;
       } 
     else
       $(this).css('border','');
    });
}

function validate_email()
{
  $('.email').each(function()
   {
    $(this).next('.vreqtxt').remove();
    if($(this).val().match(/[_a-zA-Z\d\-\.]+@([_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]{2,})+)/)==null)
      {
       $(this).css('border','solid 2px red').after('<span style="font-size: 0.8em;color:red" class="vreqtxt"> Не похоже на email</span>');
       error++;
      } 
    else
      $(this).css('border','');
   });
}

function validate_phone()
{
  $('.phone').each(function()
   {
    $(this).next('.vreqtxt').remove();
    if($(this).val().match(/^[\d\-\s\(\)\+]{6,15}$/)==null)
      {
       $(this).css('border','solid 2px red').after('<span style="font-size: 0.8em;color:red" class="vreqtxt"> Не похоже на телефон</span>');
       error++;
      } 
    else
      $(this).css('border','');
   });
}

function validate_password()
{
  $('.password').next('.vreqtxt').remove();
  if($('input.vis_toggle').attr('checked')==true)
    {
     if($('#pass1').val()!=$('#pass2').val() || $('#pass1').val()=='')
       {
        $('.password').css('border','solid 2px red').after('<span style="font-size: 0.8em;color:red" class="vreqtxt"> Данные в полях пароля не совпадают</span>');
        error++;
       } 
     else
       {
         if($('#pass1').val()=='')
           $('.password').css('border','solid 2px red').after('<span style="font-size: 0.8em;color:red" class="vreqtxt"> Обязательные для заполнения поля</span>');
         else
           $('.password').css('border','');

       }
    }
}

function vis_toggle()
{
  if($(this).attr('checked')==true)
    {
      $('div.vis_toggle').show();
    }
  else
    {
      $('div.vis_toggle').hide();
    }
  validate();
}
