/// <summary>
        /// Changing the Password. You should use this function only when connected with SSL or TLS
        /// because the password is sent in plain text over the connection.		
        /// </summary>
        /// /// <remarks>
        ///		<para>
        ///			After this request was successful the new password is set automatically in the Username Property
        ///		</para>
        /// </remarks>		
        /// <param name="newPass">value of the new password</param>
        public void ChangePassword(string newPass)
        {
            /*

            Example 10. Password Change
            <iq type='set' to='somehost' id='change1'>
            <query xmlns='jabber:iq:register'>
                <username>bill</username>
                <password>newpass</password>
            </query>
            </iq>

            Because the password change request contains the password in plain text,
            a client SHOULD NOT send such a request unless the underlying stream is encrypted
            (using SSL or TLS) and the client has verified that the server certificate is signed
            by a trusted certificate authority. A given domain MAY choose to disable password
            changes if the stream is not properly encrypted, or to disable in-band password
            changes entirely.

            If the user provides an empty password element or a password element that contains
            no XML character data (i.e., either <password/> or <password></password>),
            the server or service MUST NOT change the password to a null value,
            but instead MUST maintain the existing password.

            Example 11. Host Informs Client of Successful Password Change

            <iq type='result' id='change1'/>
            */

            RegisterIq regIq  = new RegisterIq(IqType.set, new Jid(base.Server));
            regIq.Query.Username = this.m_Username;
            regIq.Query.Password = newPass;

            IqGrabber.SendIq(regIq, new IqCB(OnChangePasswordResult), newPass);
        }
        /// <summary>
        /// requests the registration fields
        /// </summary>
        /// <param name="obj">object which contains the features node which we need later for login again</param>
        private void GetRegistrationFields(object data)
        {
            // <iq type='get' id='reg1'>
            //  <query xmlns='jabber:iq:register'/>
            // </iq>

            RegisterIq regIq = new RegisterIq(IqType.get, new Jid(base.Server));
            IqGrabber.SendIq(regIq, new IqCB(OnRegistrationFieldsResult), data);
        }