$(document).ready( function() {
  $('form').submit( function() {
    $.get(
      $(this).attr( 'action' ),
      $(this).serialize(),
      function( data ) {
        if ( data['success'] ) {
          if ( data['URL'] ) {
            window.location = data['URL'];
          } else {
            $('form').each( function() {
              this.reset();
              $(this).removeClass( 'error' );
            });
          }
        } else {
          $('#errorMessages').text( data['errors'] );
          $('form *').removeClass( 'error' );
          $.each( data['fields'], function( index, field ) {
            $('*[for='+field+']').add('#'+field).addClass( 'error' );
          });
        }
      },
      'json'
    );
    return false;
  });
});
