/* use to load functions after loading page - jquery util*/
$(document).ready(function() {

    $(document).pngFix();

    /* LEFT TABS */
    $('#leftTabs .tab').not('.current').mouseover(function(){
        $(this).addClass('mouseover');
    });
    $('#leftTabs .tab').mouseout(function(){
        $(this).removeClass('mouseover');
    });

    /* Left Tabs iskra-taniec*/
    $('#leftTabs .iskraTab').not('.current').mouseover(function(){
        $(this).addClass('mouseoverIskra');
    });
    $('#leftTabs .iskraTab').mouseout(function(){
        $(this).removeClass('mouseoverIskra');
    });
    
    /* RIGHT TABS */
    $('#rightTabs .tab').mouseover(function(){
        $(this).children('.tabText').not('.current').addClass('mouseover');
    });

    $('#rightTabs .tab').mouseout(function(){
        $(this).children('.tabText').removeClass('mouseover');
    });

    /* COLAPSED TO FORM */
    $('span.colapsed').click(function(){
        $(this).hide();
        $(this).next().show();
        $(this).next().find('input:first').focus();
    });

    $('input.error, textarea.error').click(function(){
        $(this).removeClass('error');
    });
    

    /* SEARCH */
    $("#searchTancerzeForm input[name=tancerz]").keydown(function(event){
        if(event.keyCode == 13){
            $(this).submit();
        }
    });
    
    $('.searchInput').searchInput();

    $('input#changeMiniatureInput').change(function(){
        $(this).parent().submit();
    });


    /* TABS */
    $('.tab').each(function(){
        if($(this).hasClass('current')){
            divName = $(this).attr('name')
            $(this).parent().children('.tabsContent').children('.tabContent').children().hide();
            $("#"+divName).show();
        }
    });

    $('#messages .tab').click(function(){
        if(!$(this).hasClass('current')){

            $(this).parent().children().removeClass('current');
            $(this).addClass('current');

            var divName = $(this).attr('name')
            $(this).parent().children('.tabsContent').children('.tabContent').children().hide();
            $("#"+divName).show();

            tab = divName.substring(divName.length - 1);

            $.ajax({
                url: "index/index/tab/currentTab/" + tab
            });

            $(this).parent().find('.singleMessage').html('');
            $('#messageForm span.message, #messageForm span.error').remove();
            $('.error').removeClass('error');
            
            var form = $('#messageForm form').show();
            form.find('input[name=to_id]').val("");
            form.find('input[name=to_type]').val("");
            form.find('#recipientName').text("Brak");
            form.find('input[name=subject]').val("");
            $('#messageSubmit').hide();
        }
    });

    $(".userActions .submit, .friend .submit").click(function(){
        $(this).parent().submit();
    });

    $('.messagesTable').messageBox();

    $('a[rel=popup]').popup({
        preloader: true,
        header: 'Moderacja'
    });

    $('a[rel=lightbox]').lightBox();

    $('.removeLink').modalConfirmBox();

});

function showCommentForm(){
    $('#commentForm').prev('span').hide();
    $('#commentForm').show();
}


$.fn.extend({
    /* SEARCH INPUT PLUGIN */
    searchInput: function(){
        return $(this).each(function(){
            $(this).data('defaultValue', $(this).val());
            $(this).focus(function(){
                if($(this).val() == $(this).data('defaultValue')){
                    $(this).val("");
                }
            });
            $(this).blur(function(){
                if($(this).val() == ""){
                    $(this).val($(this).data('defaultValue'));
                }
            });
            $(this).submit(function(){
                if($(this).val() == $(this).data('defaultValue')){
                    $(this).val("");
                }
            });
        });
    },
    /* END SEARCH INPUT PLUGIN */

    /* MESSAGEBOX PLUGIN */
    messageBox: function(){
        return $(this).each(function(){
            var self = $(this);
            var contentDiv = self.next('.singleMessage');
            
            $(this).find('.messageSubject').click(function(){
                var linkObj = $(this);
                var id = $(this).attr('id');
                $.ajax({
                    url: "index/poczta/wiadomosc/id/"+id,
                    success: function(data, textStatus){
                        if(data){
                            contentDiv.html(data);
                            linkObj.parent().parent().removeClass('unreaded');
                        }
                    }
                });
            });

            $(this).find('.messageRemove').click(function(){
                var id = $(this).attr('id');
                var row = $(this).parent().parent();
                $.ajax({
                    url: "index/poczta/usun/id/"+id,
                    success: function(data, textStatus){
                        if(data){
                            row.remove();
                            contentDiv.html(data);
                        }
                    }
                });
            });
        })
    },
    /* END MESSAGEBOX PLUGIN */

    singleMessage: function(){
        var self = $(this);
        var messagesDiv = $('#messages');
        var form = $(this).parent().parent().parent().find('form');
        
        $(this).find('.responseLink').click(function(){
            messagesDiv.find('input[name=send]').show();
            messagesDiv.find('div[name=messages0]').click();
            
            form.find('input[name=to_id]').val($(this).attr('to_id'));
            form.find('input[name=to_type]').val($(this).attr('to_type'));
            form.find('#recipientName').text($(this).attr('to_fullname'));
            form.find('input[name=subject]').val('Re: '+ $(this).attr('subject'));
            form.find('#messageSubmit').show();
        });
    },

    popup: function(options){

        options = options || {};

        var self = this;
        var popup = $('#popup');
        var popupBox = $('#popupBox');
        var mouseOverPopupBox = false;
        var popupBoxHeader = $('#popupBox .header');
        var popupBoxClose = $('#popupBox .close');
        var popupBoxContent = $('#popupBox .content');
        
        if(popup.length != 1){
            popup = $('<div id="popup" />').css({
                position: 'absolute',
                top: 0,
                left: 0
            }).appendTo($('body'))
            .click(function(){
                if(!mouseOverPopupBox){
                    _hidePopup();
                }
            });

            if(options.glass){
                popup.addClass(options.glass);
            }

            $(document).keydown(function(e){
                if(e.keyCode == 27){
                    _hidePopup();
                }
            });

            popupBox = $('<div id="popupBox" />')
            .css({
                position: 'relative'
            })
            .appendTo(popup)
            .bind('mouseover', function(){
                mouseOverPopupBox = true;
            })
            .bind('mouseout', function(){
                mouseOverPopupBox = false;
            });

            popupBoxHeader = $('<div class="header" />')
            .appendTo(popupBox);

            if(options.header){
                popupBoxHeader.html('<h3>' + options.header + '</h3>');
            }

            popupBoxClose = $('<div class="close" />')
            .appendTo(popupBoxHeader)
            .bind('click', function(){
                _hidePopup()
            });

            popupBoxHeader.append('<div style="clear: both"></div>');

            popupBoxContent = $('<div class="content" />')
            .appendTo(popupBox);
            
            popup.hide();
        }

        this.each(function(){
            $(this).click(function(e){
                e.preventDefault();
                _showPopup(e);
                _preloader();
                if(options.load){
                    popupBoxContent.html(options.load.call());
                }
                else{
                    var href = $(this).attr('href');
                    load(href);
                }
            });
        });

        _showPopup = function(e){
            var popupWidth = $(document).width();
            var popupHeight = $(document).height();

            popup.width(popupWidth);
            popup.height(popupHeight);

            popupBox.css({
                left: options.left || e.pageX,
                top: options.top || e.pageY
            });

            popup.fadeIn();
        }

        _hidePopup = function(){
            popup.fadeOut();
            popupBoxContent.html('');
        }

        _preloader = function(){
            if(options.preloader){
                popupBoxContent.html('<div class="preloader"></div>');
            }
        }

        load = function(href){
            $.ajax({
                url: href,
                success: function(data){
                    if(data){
                        popupBoxContent.html(data);
                    }
                }
            })
            
        }

    },

    modalConfirmBox: function(options){
        var OK = 'OK';
        var CANCEL = 'Anuluj';
        
        options = options || {};
       
        OK = OK || options.OK;
        CANCEL = CANCEL || options.CANCEL;
        
        var glass = $('#glass');
        var confirmBox = $('#glass #confirmBox');

        var confirmBoxTitle = $('#confirmBox #title');
        var confirmBoxMessage = $('#confirmBox #message');
        var buttonReject = $('#confirmBox #reject');
        var buttonConfirm = $('#confirmBox #confirm');

        this.each(function(){
            $(this).click(function(event){
                event.preventDefault();
                var self = $(this);
                
                glass = $('<div id="glass" />').css({
                    position: 'absolute',
                    top: 0,
                    left: 0
                }).appendTo($('body'));
                
                confirmBox = $('<div id="confirmBox" />').appendTo(glass);

                confirmBoxTitle = $('<h3 id="title" />').appendTo(confirmBox)
                .html($(this).attr('title'));
                confirmBoxMessage = $('<p id="message" />').appendTo(confirmBox)
                .html($(this).attr('message'));

                buttonConfirm = $('<div id="confirm" />').appendTo(confirmBox)
                .html(OK)
                .bind('click', function(){
                    if(options.confirm){
                        options.confirm.call();
                    }
                    else{
                        _confirm(self.attr('href'));
                    }
                });
                buttonReject = $('<div id="reject" />').appendTo(confirmBox)
                .html(CANCEL)
                .bind('click', function(){
                    if(options.reject){
                        options.reject.call();
                    }
                    else{
                        _reject();
                    }
                });
                $('<div style="clear: both" />').appendTo(confirmBox);

                _showConfirmBox(event);

            });
        });

        _showConfirmBox = function(e){
            var glassWidth = $(document).width();
            var glassHeight = $(document).height();

            glass.width(glassWidth);
            glass.height(glassHeight);
            confirmBox.css({
                position: 'relative',
                left: parseInt($(window).width()/2 - confirmBox.width()/2),
                top: parseInt($(document).scrollTop() + $(window).height()/2 - confirmBox.height()/2)
            });
        }

        _closeConfirmBox = function(){
            glass.fadeOut();
            glass.remove();
            glass = $('#glass');
        }

        _confirm = function(href){
            $.ajax({
                url : href,
                success : function(data){
                    if(data){
                        _closeConfirmBox();
                        elementToAppend = $('#comments h4:first');
                        if(!elementToAppend.length){
                            elementToAppend = $('.contentBoxInner h4:first');
                        }
                        elementToAppend.append('<span class="error">' + data + '</span>')
                    }
                    else{
                        window.location.reload();
                    }
                }
            });
        }

        _reject = function(){
            _closeConfirmBox();
        }
    },

     post: function(options){

        options = options || {};

        var self = this;
        var popup = $('#post');
        var popupBox = $('#postBox');
        var mouseOverPopupBox = false;
        var popupBoxHeader = $('#postBox .header');
        var popupBoxClose = $('#postBox .close');
        var popupBoxContent = $('#postBox .content');

        if(popup.length != 1){
            popup = $('<div id="post" />').css({
                position: 'absolute',
                top: 0,
                left: 0
            }).appendTo($('body'))
            .click(function(){
                if(!mouseOverPopupBox){
                    _hidePopup();
                }
            });

            if(options.glass){
                popup.addClass(options.glass);
            }

            $(document).keydown(function(e){
                if(e.keyCode == 27){
                    _hidePopup();
                }
            });

            popupBox = $('<div id="postBox" />')
            .css({
                position: 'relative'
            })
            .appendTo(popup)
            .bind('mouseover', function(){
                mouseOverPopupBox = true;
            })
            .bind('mouseout', function(){
                mouseOverPopupBox = false;
            });

            popupBoxHeader = $('<div class="header" />')
            .appendTo(popupBox);

            if(options.header){
                popupBoxHeader.html('<h3>' + options.header + '</h3>');
            }

            popupBoxClose = $('<div class="close" />')
            .appendTo(popupBoxHeader)
            .bind('click', function(){
                _hidePopup()
            });

            popupBoxHeader.append('<div style="clear: both"></div>');

            popupBoxContent = $('<div class="content" />')
            .appendTo(popupBox);

            popup.hide();
        }

        this.each(function(){
            $(this).click(function(e){
                e.preventDefault();
                _showPopup(e);
                _preloader();
                if(options.load){
                    popupBoxContent.html(options.load.call());
                }
                else{
                    var href = $(this).attr('href');
                    load(href);
                }
            });
        });

        _showPopup = function(e){
            var popupWidth = $(document).width();
            var popupHeight = $(document).height();

            popup.width(popupWidth);
            popup.height(popupHeight);

            popupBox.css({
                left: options.left || e.pageX,
                top: options.top || e.pageY
            });

            popup.fadeIn();
        }

        _hidePopup = function(){
            popup.fadeOut();
            popupBoxContent.html('');
        }

        _preloader = function(){
            if(options.preloader){
                popupBoxContent.html('<div class="preloader"></div>');
            }
        }

        load = function(href){
            $.ajax({
                url: href,
                success: function(data){
                    if(data){
                        popupBoxContent.html(data);
                    }
                }
            })

        }

    }
    
});

