document.addEvent('domready', function(){
  if (!on_homepage){
    (function(){
      new OverText('user_login', {});
      new OverText('user_password', {});
      new OverText('user_password_confirmation', {});
      new OverText('user_email', {});
    }).delay(1000);
  }
  
  var available_check = new Request({method: 'get', url: '/call/username', onSuccess: function(flag){
    if (flag == "1"){
      $('user_login').addClass('invalid');
      $('user_login').removeClass('valid');
      $('username_taken').style.display = "inline";
      $('username_available').style.display = "none";
    }else{
      $('user_login').addClass('valid');
      $('user_login').removeClass('invalid');
      $('username_taken').style.display = "none";
      $('username_available').style.display = "inline";
    }
  }});
  
  $('user_login').addEvent('blur', function(e){
    errors = 0
    
    username_regex = /^[a-z0-9][\w\. ]+[a-z0-9]$/i
    
    if (this.value.length < 3 || this.value.length > 15){
      errors += 1
      $('username_length').addClass('red');
    }else{
      if (!this.value.match(username_regex)){
        errors += 1
        $('username_format').addClass('red');
      }
    }
    
    if (errors == 0){
      $$('.username_tip').each(function(el){
        el.removeClass('red');
      })
      
      available_check.send('id=' + this.value);
    }else{
      $('user_login').addClass('invalid');
      $('user_login').removeClass('valid');
      $('username_taken').style.display = "none";
      $('username_available').style.display = "none";
    }
  })
  
  $('user_email').addEvent('blur', function(e){
    $('email_required').removeClass('red');
    this.removeClass('invalid');
    
    email_regex = /^[\w\.%\+\-]+@(?:[A-Z0-9\-]+\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|jobs|museum)$/i
    
    if (!this.value.match(email_regex)){
      $('email_required').addClass('red');
      this.addClass('invalid');
    }
  })
  
  $('user_password_confirmation').addEvent('blur', function(e){
    $('password_match').removeClass('red');
    $('user_password').removeClass('invalid');
    this.removeClass('invalid');
    
    if (this.value != $('user_password').value || this.value.length < 6){
      $('password_match').addClass('red');
      $('user_password').addClass('invalid');
      this.addClass('invalid');
    }
  })
  
  if (signup_form_submitted){
    $('errorExplanation').style.display = "none";
    $('user_login').fireEvent('blur');
    $('user_password_confirmation').fireEvent('blur');
    $('user_email').fireEvent('blur');
  }
});