Auth.LoginForm = iClass.create({
  show: function() {
    $modalWin.markup();
    
    var self = this;  
    var requestOptions = {
      method: 'GET',
      onComplete: function() {
        try {
          self.prepare();
          $modalWin.show();
        } catch( error ) {
          jsLog( error );
        } // trye
      } //
    }
    
    new Ajax.Updater( $modalWin.content, '/auth/login/form', requestOptions );
    
  }, // show
  
  prepare: function() {
    $( '_loginFormRedirectInput' ).value = location.href;
    
    this.validationMarkuper = new DM.Validation.Markuper({
      formTable      : $( '_authLoginFormTable' ),
      validationRows : [ 'login', 'password' ],
      validationMsgs : [ "введіть ім'я користувача", 'введіть пароль' ]
    });
  }, // prepare
  
  submit: function( submitBtn ) {
    var loginInput  = $( '_loginFormLoginInput' );
    var passwdInput = $( '_loginFormPasswdInput' );
    
    var isValid = this.validationMarkuper.update({
      'login'            : ( loginInput.value == '' ),
      'password'         : ( passwdInput.value == '' )
    });
    
    if ( isValid ) smartSubmit( submitBtn );
    
  } // submit
}); // Auth.LoginForm


Auth.RegisterForm = iClass.create({
  initialize: function() {
  }, // initialize
  
  show: function() {
    $modalWin.markup();
    
    var self = this;  
    var requestOptions = {
      method: 'GET',
      onComplete: function() {
        try {
          self.prepare();
          $modalWin.show();
        } catch( error ) {
          jsLog( error );
        } // trye
      } //
    }
    
    new Ajax.Updater( $modalWin.content, '/auth/register/form', requestOptions );
  }, // show

  prepare: function() {
    this.validationMarkuper = new DM.Validation.Markuper({
      formTable      : $( '_authRegisterFormTable' ),
      validationRows : [ 'login', 'password', 'password_confirm', 'fullname', 'email', 'email_confirm' ],
      validationMsgs : [
        "введіть ім'я користувача",
        [ 'введіть пароль', 'введені паролі не співпадають' ],
        '',
        'введіть ПІБ',
        [ 'введіть E-mail', 'введені E-mail-адреси не співпадають' ],
        ''
      ]
    });
  }, // prepare
  
  submit: function( submitBtn ) {
    var loginInput         = $( '_registerFormLoginInput' );
    var passwdInput        = $( '_registerFormPasswdInput' );
    var passwdConfirmInput = $( '_registerFormPasswdConfirmInput' );
    var fullnameInput      = $( '_registerFormFullnameInput' );
    var emailInput         = $( '_registerFormEmailInput' );
    var emailConfirmInput  = $( '_registerFormEmailConfirmInput' );
    
    var passwdIsEmpty     = passwdInput.value == '';
    var passwdIsConfirmed = !passwdIsEmpty && ( passwdInput.value != passwdConfirmInput.value );
    
    var emailIsEmpty     = emailInput.value == '';
    var emailIsConfirmed = !emailIsEmpty && ( emailInput.value != emailConfirmInput.value );
    
    var isValid = this.validationMarkuper.update({
      'login'    : ( loginInput.value == '' ),
      'password' : [ passwdIsEmpty, passwdIsConfirmed ],
      'fullname' : ( fullnameInput.value == '' ),
      'email'    : [ emailIsEmpty, emailIsConfirmed ]
    });
    
    if ( isValid ) smartSubmit( submitBtn );
  }, // submit
  
  success: function() {
    var self = this;  
    var requestOptions = {
      method: 'GET'
    }
    
    new Ajax.Updater( $modalWin.content, '/auth/register/success', requestOptions );
  } // success
}); // Auth.RegisterForm


Auth.User = iClass.create({ 
  showMessages: function() {
    location.href = '/online_reception/messages/';
  }, // showMessages
  
  showAllMessages: function() {
    location.href = '/online_reception/allMessages/';
  }, // showAllMessages
  
  logout: function() {
    var requestParams = {
      method: 'GET',
      parameters: { noredirect : true },
      onComplete: function() {
        //location.reload();
        window.location.href = 'http://zvi.cv.ua/online_reception/';
      } // onComplete
    }; // var requestParams
    
    new Ajax.Request( '/auth/logout', requestParams );
  } // logout
}); // Auth.User

Auth.ForgetPasswordForm = iClass.create({
  show: function() {
    $modalWin.markup();
    
    var self = this;  
    var requestOptions = {
      method: 'GET',
      onComplete: function() {
        try {
          self.prepare();
          $modalWin.show();
        } catch( error ) {
          jsLog( error );
        } // trye
      } //
    }
    
    new Ajax.Updater( $modalWin.content, '/auth/password/forgetPasswordForm', requestOptions );
    
  }, // show
  
  prepare: function() {
    $( '_forgetPasswordFormRedirectInput' ).value = location.href;
    
    this.validationMarkuper = new DM.Validation.Markuper({
      formTable      : $( '_authForgetPasswordFormTable' ),
      validationRows : [ 'login' ],
      validationMsgs : [ "введіть логін" ]
    });
  }, // prepare
  
  submit: function( submitBtn ) {
    var loginInput  = $( '_forgetPasswordFormLoginInput' );
    
    var isValid = this.validationMarkuper.update({
      'login'            : ( loginInput.value == '' )
    });
    
    if ( isValid ) smartSubmit( submitBtn );
    
  }, // submit
  
  success: function() {
    var self = this;  
    var requestOptions = {
      method: 'GET'
    }
    
    new Ajax.Updater( $modalWin.content, '/auth/password/success', requestOptions );
  }, // success
  
  error: function() {
    var self = this;  
    var requestOptions = {
      method: 'GET'
    }
    
    new Ajax.Updater( $modalWin.content, '/auth/password/error', requestOptions );
  }, // error
  
  unknownError: function() {
    var self = this;  
    var requestOptions = {
      method: 'GET'
    }
    
    new Ajax.Updater( $modalWin.content, '/auth/password/unknownError', requestOptions );
  } // unknownError
}); // Auth.ForgetPasswordForm

Auth.ChangePasswordForm = iClass.create({
  show: function( userID ) {
    $modalWin.markup();
    this.userID = userID;
    
    var self = this;  
    var requestOptions = {
      method: 'GET',
      onComplete: function() {
        try {
          self.prepare();      
          $modalWin.show();
        } catch( error ) {
          jsLog( error );
        } // trye
      } //
    }
    
    new Ajax.Updater( $modalWin.content, '/auth/password/changePasswordForm?userID=' + this.userID, requestOptions );
    
  }, // show

  prepare: function() {
    this.validationMarkuper = new DM.Validation.Markuper({
      formTable      : $( '_authChangePasswordFormTable' ),
      validationRows : [ 'password', 'password_confirm' ],
      validationMsgs : [
        [ 'введіть пароль', 'введені паролі не співпадають' ]
      ]
    });
  }, // prepare
  
  submit: function( submitBtn ) {
    var passwordInput        = $( '_changePasswordFormPasswordInput' );
    var passwordConfirmedInput = $( '_changePasswordFormPasswordConfirmedInput' );
    
    var passwordIsEmpty  = passwordInput.value == '';
    var passwordIsConfirmed = !passwordIsEmpty && ( passwordInput.value != passwordConfirmedInput.value );
    
    var isValid = this.validationMarkuper.update({
      'password' : [ passwordIsEmpty, passwordIsConfirmed ]
    });
    
    if ( isValid ) smartSubmit( submitBtn );
    
  }, // submit
  
  success: function() {
    var self = this;  
    var requestOptions = {
      method: 'GET'
    }
    
    isChangePassword = true;
    
    new Ajax.Updater( $modalWin.content, '/auth/password/successComplete', requestOptions );
  }, // success
  
  unknownError: function() {
    var self = this;  
    var requestOptions = {
      method: 'GET'
    }
    
    isChangePassword = true;
    
    new Ajax.Updater( $modalWin.content, '/auth/password/unknownError', requestOptions );
  } // unknownError
}); // Auth.ChangePasswordForm


$user               = new Auth.User();
$loginForm          = new Auth.LoginForm();
$registerForm       = new Auth.RegisterForm();
$forgetPasswordForm = new Auth.ForgetPasswordForm();
$changePasswordForm = new Auth.ChangePasswordForm();