horus.script.load('popover', 'status', 'dom');


horus.login=
  function ( control ) {
    var form=control.form;
    var username=form.username.value.trim();
    var password=form.password.value.trim();
    var status=[];

    if (username=='') status.push('Please type in your username or email address');
    if (password=='') status.push('Please type in your password');

    if (status.length)
      horus.status(status.join('\n'));
    else {
      var argv={ username: username, password: password };
      if (form._rememberme!=null) argv.rememberme=horus.getvar(form._rememberme);

      if (horus.ajax(horus.ajax.action.login, 'login', argv)) {
	var page=horus.urlparam('accessdenied', horus.loginpage);

	if (page)
	  document.location.href=page;
	else
	  document.location.reload(true);

      }
    }

    return false;
  };


horus.logout=
  function ( control ) {
    var form=control.form;
    var argv={};
    if (form._forgetme!=null) argv.forgetme=horus.getvar(form._forgetme);

    if (horus.ajax(horus.ajax.action.login, 'logout', argv))
      document.location.reload(true);

    return false;
  };


horus.passwordreminder=
  function ( control ) {
    horus.popover.create
      ('passwordreminder',
       { title: 'Request Lost Password',
	 popoverclass: 'passwordreminder',
	 content:
	   [ [ 'label', null, 'type in your e-mail address',
	       [ 'br' ], [ 'input', { name: 'email' } ] ],
	     [ 'div', 'passwordreminderstatus' ] ],
	 yeslabel: 'send request', yesclass: '',
	 nolabel: 'cancel',        noclass: '' },
       { reference: control,
	 moveable: true,
	 action: horus.ajax.action.login,
	 method: 'passwordreminder',
	 formparams: true,
	 callback: horus.passwordcallback });

    return false;
  };


horus.passwordcallback=
  function ( response, event ) {
    switch (event) {

    case 'callback':
      var status=response.status();
      var contact=response.getAttribute(null, 'contact');

      switch (status.text) {

      case 'empty':
	horus.replaceContent('passwordreminderstatus', [ 'p', '.error', 'Please type in your registered e-mail address' ]);
	 
	break;

      default:
	horus.replaceContent('passwordreminderstatus', [ 'p', '.error', status.text ]);

      }

      break;

    case 'nogo':
      this.hide();
      break;

    }
  };

