/* ui.js */

function openComment(message_id){
    var returnValue = false;
    var commentForm = Ext.get('message-' + message_id + '-comment-new');
    var commentField = Ext.get('comment-' + message_id);
    if(commentForm) {
        commentForm.enableDisplayMode();
        commentForm.toggle(true);
        if(commentField && commentField.isDisplayed()) {
            commentField.focus();
        }
    }
    return returnValue;
}

function removeItem(type, message_id, comment_id){
    Ext.Ajax.request({
        url: post_url + '?format=ajax' + post_tokens['&'],
        success: function(o, obj) {
            var response = Ext.util.JSON.decode(o.responseText);
            var oLI;
            if(response.success) {
                switch(obj.params.wall_type)
                {
                    case 'message':
                    {
                        oLI = Ext.get('message-' + obj.params.message_id);
                        if(oLI) {
                            oLI.toggle({
                                duration: 0.5,
                                callback: function() {
                                    this.remove();
                                },
                                scope: oLI
                            });
                        }
                        break;
                    }
                    case 'comment':
                    {
                        oLI = Ext.get('message-' + obj.params.message_id + '-comment-' + obj.params.comment_id);
                        if(oLI) {
                            oLI.toggle({
                                duration: 0.5,
                                callback: function() {
                                    this.remove();
                                },
                                scope: oLI
                            });
                        }
                        break;
                    }
                }
            } else {
                alert(response.errors.REMOVE);
            }
        },
        failure: function(o, obj) {
            location.reload(true);
        },
        params: {
            wall_action: 'remove',
            wall_type: type,
            message_id: message_id,
            comment_id: comment_id
        }
    });
}
    
Ext.onReady(function(){
    function init() {
        initGameMenu();
        initProfileWall();
    }

    function initGameMenu() {
        var titles = Ext.select('#nav-left dt');
        var bodies = Ext.select('#nav-left dd');
        var onClick = function(evt, el, options) {
            var oDTClicked = Ext.get(evt.getTarget());
            var oDDSelected = Ext.select('#nav-left dd.selected');
            var oDTSelected = null;
            if(oDDSelected) {
                oDDSelected = oDDSelected.elements[0];
                oDTSelected = Ext.get(oDDSelected.previousSibling);
            }
            if(oDTClicked !== oDTSelected)
            {
                var oDDSelected = oDTSelected.next();
                oDDSelected.slideOut('t', {
                    easing: 'easeOut',
                    duration: .5,
                    callback: function(el, options){
                        el.removeClass('selected');
                        el.setStyle({
                            display: 'none'
                        });
                    }
                });
                oDTSelected.removeClass('selected');
                var oDDClicked = oDTClicked.next();
                oDDClicked.slideIn('t', {
                    easing: 'easeOut',
                    duration: .5,
                    callback: function(el, options){
                        el.addClass('selected');
                        el.setStyle({
                            display: 'block'
                        });
                    }
                });
                oDTClicked.addClass('selected');
            }
        }
        var onMouseOver = function(evt, el, options) {
            Ext.get(evt.getTarget()).addClass('hover');
        }
        var onMouseOut = function(evt, el, options) {
            Ext.get(evt.getTarget()).removeClass('hover');
        }
        
        titles.each(function(el, array, index) {
            if(!el.hasClass('disabled')) {
                el.addClass('clickable');
            }
            el.on({
                'click' : onClick,
                'mouseover' : onMouseOver,
                'mouseout' : onMouseOut,
                scope: this
            });
        });
        
        bodies.each(function(el, array, index) {
            el.addClass('collapsible');
        });
    }
    
    function initProfileWall(){
        var oTextareas = Ext.select('textarea.autosize', false, 'wall');
        var oTextarea;
        oTextareas.each(function(el, array, index) {
            el.on('keyup', function(e, el) {
                var rows = el.value.split('\n').length;
//                console.log(rows);
                if(rows > 10) rows = 10;
                else if(rows < 1) rows = 1;
                el.rows = rows;
            });
            el.on('focus', function(e, el){
                if(el.rows < 10)
                    el.rows = el.rows + 1;
            });
            el.on('blur', function(e, el){
                if(el.rows > 1)
                    el.rows = el.rows - 1;
            });
        })
    }
    
    init();
});