  var markError = function( obj ) {
    // add the class 'x-error' to the obj
    YAHOO.util.Dom.addClass( obj, 'x-error' );
  };

  var clearError = function( obj ) {
    // remove the class 'x-error' to the obj
    YAHOO.util.Dom.removeClass( obj, 'x-error' );
  };


// Checking for mandatory fields
YAHOO.util.Event.onDOMReady( function(){
  var trimRegex = /^\s\+|\s+$/g;
//  var markError = function( obj ) {
//    // add the class 'x-error' to the obj
//    YAHOO.util.Dom.addClass( obj, 'x-error' );
//  };

//  var clearError = function( obj ) {
//    // remove the class 'x-error' to the obj
//    YAHOO.util.Dom.removeClass( obj, 'x-error' );
//  };

  var controls = YAHOO.util.Dom.getElementsByClassName( 'x-required', 'input' );
  controls = controls.concat(YAHOO.util.Dom.getElementsByClassName( 'x-required', 'textarea' ));
  for ( var i = 0; i < controls.length; i++ ) {
    // gets the parent form element
    var parentForm = YAHOO.util.Dom.getAncestorByTagName( controls[i], 'form' );
    YAHOO.util.Event.addListener(
      parentForm,
      'submit',
      function( t, o ) {
        if ( t.explicitOriginalTarget.name == 'PublishButton' &&
             ! o.value.replace( trimRegex ) ) {
          YAHOO.util.Event.preventDefault( t );
          markError( o );
        }
      },
      controls[i]
      );

    YAHOO.util.Event.addListener(
      controls[i],
      'blur',
      // here's the function that we'll call on blur
      function( t, o ) {
        if ( ! o.value.replace( trimRegex ) ) {
          markError( o );
        } else {
          clearError( o );
        }
      },
      controls[i]
    );
  }
});

// Checking eZUser variables
YAHOO.util.Event.onDOMReady( function(){

  var inputs = YAHOO.util.Dom.getElementsBy( function( el ){ return( /_account_/.test(el.getAttribute( 'id' ) ) ); }, 
                                             'input', 'register' );

  // Save the elements in variables
  var login = false;
  var password = false;
  var password_confirm = false;
  var email = false;
  var email_confirm = false;
  var EMAILREGEXP = '([0-9a-zA-Z]([-+.\w]*[0-9a-zA-Z_])*@(((([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})|(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))';

  var inputs = YAHOO.util.Dom.getElementsBy( function( el ){ return( /_account_/.test(el.getAttribute( 'id' ) ) ); }, 
    'input', 'register' );
  for ( i = 0; i < inputs.length; i++)
  {
    if ( /_login$/.test( inputs[i].getAttribute( 'id' ) ) )
      var login = inputs[i];
    if ( /_email$/.test( inputs[i].getAttribute( 'id' ) ) )
      var email = inputs[i];
    if ( /_email_confirm$/.test( inputs[i].getAttribute( 'id' ) ) )
      var email_confirm = inputs[i];
    if ( /_password$/.test( inputs[i].getAttribute( 'id' ) ) )
      var password = inputs[i];
    if ( /_password_confirm$/.test( inputs[i].getAttribute( 'id' ) ) )
      var password_confirm = inputs[i];
  }

  function validateEmail( t, o )
  {
    var email_regex = new RegExp(EMAILREGEXP);
    if ( !o.value.match( email_regex ) )
    {
      markError( o );
    } else {
      clearError( o );
    }
  }

  YAHOO.util.Event.addListener( email, 'blur', validateEmail, email);
  YAHOO.util.Event.addListener( email_confirm, 'blur', validateEmail, email_confirm);

  var parentForm = YAHOO.util.Dom.get( 'register' );
  YAHOO.util.Event.addListener( parentForm, 'submit',
    function( t, o ) {
      EMAILREGEXP = '([0-9a-zA-Z]([-+.\w]*[0-9a-zA-Z_])*@(((([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})|(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))';
      var email_regex = new RegExp(EMAILREGEXP);

      var errors = new Array();
      var inputs = YAHOO.util.Dom.getElementsBy( function( el ){ return( /_account_/.test(el.getAttribute( 'id' ) ) ); }, 
                                             'input', 'register' );
      for ( i = 0; i < inputs.length; i++)
      {
        if ( /_login$/.test( inputs[i].getAttribute( 'id' ) ) )
          var login = inputs[i];
        if ( /_email$/.test( inputs[i].getAttribute( 'id' ) ) )
          var email = inputs[i];
        if ( /_email_confirm$/.test( inputs[i].getAttribute( 'id' ) ) )
          var email_confirm = inputs[i];
        if ( /_password$/.test( inputs[i].getAttribute( 'id' ) ) )
          var password = inputs[i];
        if ( /_password_confirm$/.test( inputs[i].getAttribute( 'id' ) ) )
          var password_confirm = inputs[i];
      }

      // Password must be at least 3 characters
      if ( password.value != '' && password.value.length < 3 )
      {
        errors.push('Password must be at least 3 characters in length');
        markError( password );
        markError( password_confirm );
      }

      // Password must not be "password"
      if ( password.value == 'password' )
      {
        errors.push( 'Password must not be "password"' );
        markError( password );
        markError( password_confirm );
      }

      // Passwords must match
      if ( password.value != password_confirm.value )
      {
        errors.push( 'Passwords must match' );
        markError( password );
        markError( password_confirm );
      }

      // Email must be valid
      if ( !email.value.match( email_regex ) )
      {
        errors.push( 'Email must be valid' );
        markError( email );
        markError( email_confirm );
      }

      // Emails must match
      if ( email.value != email_confirm.value )
      {
        errors.push( 'Emails must match' );
        markError( email );
        markError( email_confirm );
      }

      if ( t.explicitOriginalTarget.name == 'PublishButton' &&
           errors.length != 0 ) 
      {
        YAHOO.util.Event.preventDefault( t );
        alert( errors.join( "\n" ) );
      }
    }
  );
});

