$(document).ready(function() 
  {
   // enhance style of form elements
   $('fieldset').each(function(index) 
     {
      var heading = $('legend', this).remove().text();
      $('<h3></h3>')
        .text(heading)
        .prependTo(this);
     });
   var requiredFlag = '';
   var requiredKey = $('input.required:first').next('span').text();
   requiredKey = requiredFlag + requiredKey.replace(/^\((.+)\)$/,"$1");
   $('form :input').filter('.required')
     .next('span').text(requiredFlag).end()
     .prev('label').addClass('req-label');
   $('<p></p>')
     .addClass('field-keys')
     .append(requiredKey + '<br />')
     .insertBefore('#contact');
   //validate fields on blur
   $('form :input').blur(function() 
     {
      $(this).parents('td:first').removeClass('warning')
        .find('span.error-message').remove();
      if ($(this).is('.required')) 
        {
         var $listItem = $(this).parents('td:first');
         var result=this.value;
         var trimmed = result.replace(/^\s+|\s+$/g, '') ;
         if (trimmed == '') 
           {
            var errorMessage = '<font size="+1" color="red">*</font>';
            $('<span></span>')
              .addClass('error-message')
              .html(errorMessage)
              .appendTo($listItem);
            $listItem.addClass('warning');
           };
        };
      if ($(this).is('#general_info_orgform'))
        {
         var $listItem = $(this).parents('td:first');
         if (this.value == 'undef')
           {
            var errorMessage = '<font size="+1" color="red">*</font>';
              $('<span></span>')
                .addClass('error-message')
                .html(errorMessage)
                .appendTo($listItem);
              $listItem.addClass('warning');
           };
        };
      if ($(this).is('#contact_person_email')) 
        {
         var $listItem = $(this).parents('td:first');
         if (this.value != '' && !/^(?:(?:(?!@).)+)@([a-zA-Z0-9]|\-|\.)+\.[a-zA-Z]{2,4}$/
           .test(this.value)) 
             {
              //var errorMessage = 'Используйте верный формат электронного адреса' + ' (например: joe@example.com)';
              var errorMessage = '<font size="+1" color="red">*</font>';
              $('<span></span>')
                .addClass('error-message')
                .html(errorMessage)
                .appendTo($listItem);
              $listItem.addClass('warning');
             };
        };
     });
   //validate form on submit
   $('form').submit(function() 
     {
      $('#submit-message').remove();
      $(':input.required').trigger('blur');
      var numWarnings = $('.warning', this).length;
      if (numWarnings) 
        {
         var fieldList = [];
         $('.warning label').each(function() 
           {
            fieldList.push($(this).text());
           });
         $('<div></div>')
           .attr({
                  'id': 'submit-message',
                  'class': 'warning'
                 })
           .append('Пожалуйста исправьте ошибки в  ' +
                                   numWarnings + ' поле(полях) отмеченных <font size="+1" color="red">*</font><br />')
           //.append('&bull; ' + fieldList.join('<br />&bull; '))
           .insertBefore('#send');
         return false;
        };
     });
  });