/**
 * Discussion page Javascript
 */
var PageTalkDiscussion = {
        
    init: function() {
                
        // Set expandable discussion description
        
        $('.afcposting').expandable();
        
        AFC_SScroller.init('discussion-books', 500);
		
        this.comments.init();
        
    },
    
    comments: {
        
        init: function() {
            
            $('a.post-a-comment').anchorAnimate();
            
            // Init inputs and sort by
            
            $('input[type=file],select').uniform({
                'fileBtnText': ''
            });
            
            $('#form-sort-by input[type=submit]').hide();
            
            $('#form-sort-by select').change(function(e) {
                $('#form-sort-by').submit();
            });
            
            // Init comment ratings
            
            
            $('a.rate-up, a.rate-down, a.report-abuse').click(function(e) {
                
                e.preventDefault();
                var self = this;
                
                AFC_Overlay.is_loading(true);
                AFC_Overlay.show();
                
                $.get(
                    $(this).attr('href'), 
                    function(data) {;
                        AFC_Overlay.is_loading(false);
                        
                        if (data.error == false) {
                            
                            // Update class
                            
                            if ($(self).hasClass('rate-up')) {
                                $(self).addClass('rate-up-on');
                            } else if ($(self).hasClass('rate-down')) {
                                $(self).addClass('rate-down-on');
                            } else if ($(self).hasClass('report-abuse')) {
                                $(self).addClass('report-abuse-on');
                            }
                            
                            // Show success message
                            
                            AFC_Overlay.show_message(data.text, true);
                        } else {
                            // Show error message
                            AFC_Overlay.show_message(data.text, false);
                        }
                    },
                    'json'
                );
            });
            
            // Init comment form
            
            this.form.init();
        },
        
        form: {
            
            init: function() {
                
                // Elements
                
                var self = this;
                var elFormBox = $('#box-form-comment');
                var elForm = $('#form-comments-add');
                var elBtnPreview = elForm.find('input[value=Preview]');
                var elBtnPreviewNice = elForm.find('a.preview');
                var elBtnSubmit = elForm.find('input[value=Submit]');
                var elBtnSubmitNice = elForm.find('a.post-comment');
                
                // ---- Element setup
                
                // Show/hide buttons
                
                elBtnPreview.hide();
                elBtnPreviewNice.css('display', 'block');
                elBtnSubmit.hide();
                elBtnSubmitNice.css('display', 'block');
                
                // Submit button event
                
                elBtnPreviewNice.unbind('click').click(function(e) {
                    e.preventDefault();
                    elBtnPreview.click();
                });
                
                // Submit button event
                
                elBtnSubmitNice.unbind('click').click(function(e) {
                    e.preventDefault();
                    elBtnSubmit.click();
                });
                
                // Media attachments
                
                var elMediaFieldWrap = $('.comment-media-wrap').css({
                    'height': 0,
                    'overflow': 'hidden',
                    'position': 'relative'
                });
                
                var elMediaFields = $('.comment-media-link, .comment-media-image, .comment-media-video');
                var elBtnsMediaFields = $('.btn-media-link, .btn-media-image, .btn-media-video');
                var elShowing; // Keep track of showing field
                
                elMediaFields.css({
                    'position': 'absolute',
                    'top': 0
                });
                
                // Set media fields
                
                elMediaFields.each(function(idx, el) {
                    $(el).data('orig_height', $(el).outerHeight());
                    if ($(el).hasClass('on')) {
                        elShowing = $(el);
                        elMediaFieldWrap.css('height', $(el).data('orig_height'));
                    } else {
                        $(el).fadeOut(0);
                    }
                });
                
                // Set media button click events
                
                elBtnsMediaFields.each(function(idx, el) {
                    $(el).click(function(e) {
                        
                        e.preventDefault();
                        var aClasses = $(this).attr('class').split(' ');
                        var sFieldClass = aClasses[0].replace('btn', 'comment');
                        var elField = $('.' + sFieldClass);
                        
                        if ($(this).hasClass('on')) {
                            // If already selected, close it
                            elField.fadeOut(500);
                            elMediaFieldWrap.animate({'height': 0}, 500);
                            $(this).removeClass('on');
                            elShowing = false;
                        } else {
                            
                            // If element showing, fade it out
                            
                            if (elShowing) elShowing.fadeOut(500);
                        
                            // Remove 'on' state
                        
                            elBtnsMediaFields.removeClass('on');
                        
                            // Animate in
                        
                            elMediaFieldWrap.animate({'height': elField.data('orig_height')}, 500);
                            elField.fadeIn(500);
                            elShowing = elField; // Store newly showing field
                        
                            // Set 'on' state
                        
                            $(this).addClass('on');
                        }
                    });
                });
                
            }
            
        }
        
    }
    
};

$(document).ready(function() {
    var oDiscussion = PageTalkDiscussion.init();
});
