/*
 * Obsluga forum
 * 
 */
  
$(document).ready(function() {
    forum.setup()
})

forum = {
    ajax_load : '<img src="/img/ajax-loader.gif" alt="" />',
    
    pokaz_komentarz : function(obj) {
        post = obj.parent().parent().parent()
        post.removeClass('gray')
        obj.remove()
    },
    
    vote : function(obj,sign) {
        post = obj.parent().parent()
        post_id = $('.POST_ID',post).html()
        
        $('.points',post).html(this.ajax_load)
        $.ajax({
            url: '/forum/vote',
            type: 'get',
            data: {
                'post_id': post_id,
                'vote': sign
            },
            dataType: 'json',
            success: function(ret) {
                if(ret.result) {
                    $('.points',post).html(ret.vote)
                } else {
                    $('.points',post).html(ret.vote)
                    alert('Już oceniłeś ten post.')
                }
            }
        })
    },
        
    odpowiedz_ukryj_click : function(obj) {
        post_wrap = obj.parent().parent().parent().parent()
        post = obj.parent().parent().parent()
        $('.odp',post_wrap).remove();
        post.removeClass('full')
        $('.pokaz',post).show();
        $('.ukryj',post).hide();
    },
    
    odpowiedz_pokaz_click : function(obj) {
        post = obj.parent().parent().parent()
        post_id = $('.POST_ID',post).html()
        poziom = $('.POZIOM',post).html()
        ans = $('<div class="odp">'+forum.ajax_load+' trwa ładowanie odpowiedzi...</div>').insertAfter(post)

        $.ajax({
            url: '/forum/fetch_answers',
            type: 'get',
            data: {
                'post_id': post_id,
                'poziom': poziom
            },
            success: function(ret) {
                ans.html(ret)
                forum.setup()
                
                post.addClass('full')
                $('.pokaz',post).hide();
                $('.ukryj',post).show();
            }
        })
    },
    
    odpowiedz_zapisz_click : function(obj) {
        post = obj.parent().parent().parent()
        post_wrap = post.parent()
        forum_id = $('#FORUM_ID').html()
        post_id = $('.POST_ID',post).html()
        tresc = $('textarea',post).val()
        poziom = $('.POZIOM',post).html()
        
        if(tresc=='') {
            alert('Treść odpowiedzi nie może być pusta..')
            return;
        }
        
        $('.msg',post).show()
        $.ajax({
            url: '/forum/add_answer',
            type: 'post',
            dataType: 'json',
            data: {
                'post_id': post_id,
                'forum_id': forum_id,
                'tresc': tresc
            },
            success: function(ret) {
                //$('#dodaj_nowy_watek').parent().html(ret)
                $('.msg',post).hide()
                $('.odp',post_wrap).remove()
                tresc = $('textarea',post).val('')
                $('.odpowiedz',post).hide()
                ans = $('<div class="odp"></div>').insertAfter(post)
                ans.html(ret.html)
                o='<a class="ukryj" href="#">( ukryj ' + ret.parent_count + ' odpowiedzi )</a>'
                o=o+'<a class="pokaz" style="display:none" href="#">( pokaż ' + ret.parent_count + 'odpowiedzi )</a>'
                $('.post_foot .left',post).html(o)
                post.addClass('full')
                forum.setup()
            }
        })
        
    },
    
    odpowiedz_click : function(obj) {
        post = obj.parent().parent().parent()
        $('.odpowiedz', post).show()
    },
    
    dodaj_nowy_watek_click : function(obj) {
        $('#dodaj_nowy_watek').show();
        obj.hide();
    },
    
    perform_dodaj_nowy_watek : function() {
        val = $('#dodaj_nowy_watek_textarea').val()
        if(val == '') {
            alert('Musisz wpisać treść wątku..')
            return;
        }
        
        $('#dodaj_nowy_watek .msg').show()
        $('#dodaj_nowy_watek a').hide()
        
        forum_id = $('#FORUM_ID').html()
        
        $.ajax({
            url: '/forum/new_talk',
            type: 'post',
            data: {
                'forum_id': forum_id,
                'tresc': val
            },
            success: function(ret) {
                $('#dodaj_nowy_watek').parent().html(ret)
                forum.setup()
                $('#dodaj_nowy_watek_click').show()
            }
        })
    },
    
    setup : function() {
        $('.post a.pokaz_komentarz').unbind()
        $('.post a.pokaz_komentarz').click(function() {
            forum.pokaz_komentarz($(this))
            return false;
        })
        
        $('.post .post_head .plus').unbind()
        $('.post .post_head .plus').click(function() {
            forum.vote($(this), 'p')
            return false;
        })
        
        $('.post .post_head .minus').unbind()
        $('.post .post_head .minus').click(function() {
            forum.vote($(this), 'm')
            return false;
        })
        
        $('#dodaj_nowy_watek_click').unbind()
        $('#dodaj_nowy_watek_click').click(function() {
            forum.dodaj_nowy_watek_click($(this))
            return false;
        })
        
        $('#dodaj_nowy_watek a').unbind()
        $('#dodaj_nowy_watek a').click(function() {
            forum.perform_dodaj_nowy_watek()
            return false;
        })
        
        $('.post .post_foot .right a.odpowiedz_click').unbind()
        $('.post .post_foot .right a.odpowiedz_click').click(function() {
            forum.odpowiedz_click($(this))
            return false;
        })
        
        $('.post .post_foot .right a.odpowiedz_zaloguj').unbind()
        $('.post .post_foot .right a.odpowiedz_zaloguj').click(function() {
            alert('Zaloguj się aby odpowiedzieć na ten wątek.')
            return false;
        })
        
        $('.post .odpowiedz a.anuluj').unbind()
        $('.post .odpowiedz a.anuluj').click(function() {
            $(this).parent().hide()
            return false;
        })
        
        $('.post .odpowiedz a.zapisz').unbind()
        $('.post .odpowiedz a.zapisz').click(function() {
            forum.odpowiedz_zapisz_click($(this))
            return false;
        })
        
        $('.post .post_foot .left a.pokaz').unbind()
        $('.post .post_foot .left a.pokaz').click(function() {
            forum.odpowiedz_pokaz_click($(this))
            return false;
        })
        
        $('.post .post_foot .left a.ukryj').unbind()
        $('.post .post_foot .left a.ukryj').click(function() {
            forum.odpowiedz_ukryj_click($(this))
            return false;
        })
    }
}


