  var noajax = false;

  var checkRegisterForm = function(event)
  {
    // disable submit button
    $('btnRegisterSubmit').disabled = true;
    
    if (!noajax)
    {
	    // get form parameters
	    var parameters = $('frmRegister').serialize(true);
	    // add 'ajax' action parameter (to return JSON)
	    parameters['mode'] = 'ajax';
	 
	    // do ajax request
	    new Ajax.Request($('frmRegister').action, 
	      { method: 'POST',
	    	  parameters: parameters,
	    	  onSuccess: registerSuccessHandler,
	    	  onFailure: registerFailureHandler
	    	}
	    );
    
      return false;
    } else 
    	return true;
  }
  
  // handles result of Ajax request when success
  var registerSuccessHandler = function(request,json) 
  {
  	// handle error messages
    if (json.status=='error')
      ErrorDialog(json.errors);
    
    // okay, go to confirmation page
    if (json.status=='success')
      document.location = json.redirect;

    // if we come here we should re-enable the submit button again
  	$('btnRegisterSubmit').disabled = false;

    // focus field
  	document.frmRegister.elements[json.focusfield].focus();
  }
  
  // handles result of Ajax request when failed
  var registerFailureHandler = function(request,json) 
  {
	   	// submit via normal POST-request without ajax
  	noajax = true;
  	$('frmRegister').submit();
  }
  
  
  // things that should happen when everything is loaded
  Event.observe(window, 'load', function (e)
  {
  	try
  	{
      // add event handlers
      Event.observe($('frmRegister'), 'submit', function(e) { ;if (!checkRegisterForm()) Event.stop(e) } , false);
    } catch(e) {}
  });