////////////////////////////////////////////////////////////////////////
//
// Filename:    formlogout.js
// Purpose:     Create a form to logout current user
// Method:      JavaScript class
//
// Author:      J.van.der.Steen@gobase.org
// Date:        2010-03-20
//
// Note:        Requires prototype.js
//
////////////////////////////////////////////////////////////////////////

var FormLogout = Class.create( FormBase,
{

    initialize: function($super, values)
    {
        this.valAssign(values, "type", "logout");

        $super(values);

        /*
         * Editable properties
         */
        this.propAdd( values
                    , "group"
                    , { type     : 'select'
                      , key      : 'rol'
                      , val      : config.user.group
                      , valid    : 1
                      , validator: null
                      , options  : [ { key: 'editor', val: 'editor' }
                                   , { key: 'admin' , val: 'admin'  }
                                   ]
                      }
                    ) ;
        this.propAdd( values
                    , "username"
                    , { type     : 'text'
                      , size     : 32
                      , key      : 'gebruikersnaam'
                      , val      : config.user.username
                      , valid    : 1
                      , validator: 'validateNonempty'
                      }
                    ) ;
        this.propAdd( values
                    , "password"
                    , { type     : 'password'
                      , size     : 32
                      , key      : 'paswoord'
                      , val      : config.user.password
                      , valid    : 1
                      , validator: 'validateNonempty'
                      }
                    ) ;

        /*
         * System properties
         */
        this.propAdd( values
                    , "op"
                    , { type     : 'hidden'
                      , size     : 64
                      , key      : 'op'
                      , val      : 'logout'
                      , valid    : 1
                      , validator: 'validateNonempty'
                      }
                    ) ;

        /*
         * Buttons
         */
        this.propAdd( values
                    , "versturen"
                    , { type     : 'button'
                      , size     : 32
                      , key      : 'versturen'
                      , val      : 'versturen'
                      , valid    : 1
                      , validator: 'validateNonempty'
                      , onclick  : 'save'
                      }
                    ) ;

        /**
         * Title of this form
         */
        this.setTitle('Logout page');

        this.valAssign(values, "msgSucceeded", '');
        this.valAssign(values, "msgFailed"   , '');
    }

,   opSuccess: function($super, transport)
    {
        var response = $super(transport);

        if (response === null) {
            // FormBase.prototype.setFormFeedback("Logout faalde.");
            emitFormLogin();
        } else {
            // response.theform.setFormFeedback("U bent uitgelogd");
            config.user.username = '';
            config.user.password = '';
            config.user.group    = 'visitor';
            menuLoad(menu, 'menumain');
            contentLoadByName(menu, 'home');
        }
    }

} ) ;

/**
 * Logout current user
 */
function logout()
{
    var form = new FormLogout({});

    //
    // Submit
    //
    form.save();
}


