



var SimpleChat = new Class({

	Implements: Options,
	lastid: 0,

    options: {
        nickname: '',
        nickcolor: '',
        roomname: '',
        chatwindow: 'chatcontent',
        chatscrollcontaner: 'chatscrollcontaner',
        defaultnickname: 'vendég',
        nicknamefield: 'chatnickname',
        newmessagefield: 'chatnewmessage',
        chatform: 'chatform',
        getmessagesurl: '/simplechat/getMessages',
        sendmessageurl: '/simplechat/newMessage',
        waittime: 1000
    },

    initialize: function( options ){

        var self = this;

        this.setOptions(options);

        this.getmessages();

        $(this.options.chatform).addEvent( 'submit', function(e){

            new Event(e).stop();

            if( $(self.options.newmessagefield) && $(self.options.newmessagefield).value ) {
                if( $(self.options.nicknamefield) && $(self.options.nicknamefield).value ) {
                    self.options.nickname = $(self.options.nicknamefield).value;
                }
                new Request({
                    method: 'post',
                    data: {
                        'options': self.options,
                        'lastid': self.lastid,
                        'message': $(self.options.newmessagefield).value
                    },
                    url: self.options.sendmessageurl,
                    onComplete: function() {
                        if( this.response.text ) {
                            var rs = JSON.decode(this.response.text);
                            if( rs.state == 'error' ) {
                                alert( rs.error );
                            } else if( rs.state == 'ok' ) {
                                self.setOptions(rs.options);
                                $(self.options.newmessagefield).value = '';

                                self.insertmessages( rs.data );

                                if( $(self.options.nicknamefield) ) {
                                    $(self.options.nicknamefield).value = self.options.nickname;
                                }
                            }
                        } else {
                        }
                    }
                }).send();
            }
        });

        this.simplechatscroll = new ScrollBar( self.options.chatscrollcontaner, self.options.chatwindow, { 'arrows': true, 'hScroll': false } );

    },

	getmessages: function(){

        var self = this;

        new Request({
            method: 'post',
            data: {
                'options': this.options,
                'lastid': self.lastid
            },
            url: this.options.getmessagesurl,
            onComplete: function() {

                if( this.response.text ) {
                    var rs = JSON.decode( this.response.text );
                    if( rs.state == 'error' ) {
                        alert( rs.error );
                    } else if( rs.state == 'ok' ) {
                        self.setOptions(rs.options);
                        self.insertmessages( rs.data );
                    }
                    self.getmessages.delay( self.options.waittime, self );
                } else {
                }
            }
        }).send();
	},

    insertmessages: function( data ){
        var self = this;
        if( data.getLast() ) {
            data.each( function( item ) {
                if( !$( self.options.chatwindow + '_msg_' + item.Id ) ) {
                    if( item.Id.toInt() > self.lastid ) {
                        self.lastid = item.Id.toInt();
                    }
                    var newmsg = new Element( 'div', {
                        'id': self.options.chatwindow + '_msg_' + item.Id,
                        'chatmessageid': item.Id,
                        'class': 'chatmessage',
                        'html': '<span class="creation">' + item.CreationDate + '</span> - <b class="nickname">' + item.Nickname + '</b> <div  class="msg">' + item.Message + '</div>'
                    });
                    newmsg.inject( $(self.options.chatwindow), 'bottom' );
                }
            });

            this.simplechatscroll.update();
            this.simplechatscroll.content.scrollTop = this.simplechatscroll.main.offsetHeight * this.simplechatscroll.vScrollRatio;
            this.simplechatscroll.vUpdateThumbFromContentScroll();

        }
    }
});





