$(function() {
    $('.lightboxPhoto').lightBox();
    contest.user.initCommentControls();
    contest.user.initUserPhotosEditBlock();
    contest.user.initUserMessageTextarea();
});

var contest = {
    common: {
        /** @deprecated */
        votingModal: function(dir, userId) {
            var popupParams = {
                            title:'Голосование',
                            width:700,
                            verticalPositionFixed:false
                          };

                    $.post('/contest/vote/', {
                            'dir': dir,
                            'userId': userId,
                            ajax:'true'
                            }, function(data){popup.simple(data, popupParams);});

        },
        registerUser: function(userid, email, name) {
            $.get('/contest/invite/register', {
                'ajax': 1,
                'fromUserId': userid,
                'email': email,
                'name': name
            }, function(data) {
                popup.simple(data, {title:' ', width:700});
            });
        },
        stopParticipation: function() {
            popup.confirm('Ты действительно хочешь прекратить свое участие в конкурсе?', function() {
                $.getJSON('/contest/ajax/stopparticipation/', {
                    ajax:true
                }, function(data) {
                    switch (data['status']) {
                        case 'ok': {
                            window.location.reload();
                            break;
                        }
                        default: {
                            popup.error('Произошла ошибка');
                            break;
                        }
                    }
                })
            });
        },
        startParticipation: function() {
            $.getJSON('/contest/ajax/startparticipation/', {
                ajax:true
            }, function(data) {
                switch (data['status']) {
                    case 'ok': {
                        window.location.reload();
                        break;
                    }
                    default: {
                        popup.error('Произошла ошибка');
                        break;
                    }
                }
            })
        },

        showLeaderPopup: function() {
            $.ajax({
                url: '/contest/vote/leader',
                type: 'POST',
                data: { ajax: 1 },
                error: function () { fs.notify('Увы! Что-то сломалось. Попробуй нажать еще раз и у тебя получится!') },
                success: function (data /* and something else */ ) {
                    popup.simple(data, {
                        title: 'Стань лидером',
                        width: 700
                    });
                }
            });
        }
    },
    user: {
        attachAlbum: function() {
            var albumId = $('input[type=radio][name=albumId]:checked').val();
            $.getJSON('/contest/ajax/attachalbum/', {
                ajax:true,
                albumId:albumId
            }, function(data) {
                switch (data['status']) {
                    case 'ok': {
                        window.location = '/user/contest/';
                        break;
                    }
                    case 'error': default: {
                        popup.error('Ошибка.');
                        break;
                    }
                }
            })
        },
        addComment: function(text, userId) {
            $('#commentsContainer').fsLoad('/contest/user/addcomment/', {
                ajax:1,
                text:text,
                userId:userId
            }, function() {
                contest.user.initCommentControls();
            });
        },
        deleteComment: function(id, approved, authorId) {

            var checkBox = null;
            if (authorId != currentUser.userId){
                var checkBox = 'Добавить этого жителя в Чёрный список';
            }


            var containerId = '#unapprovedCommentsContainer';
            if (approved) {
                containerId = '#commentsContainer';
            }
            popup.confirm('Точно удалить этот отзыв?', function() {
                $(containerId).fsLoad('/contest/user/deletecomment/', {
                    'ajax':1,
                    'id':id,
                    'approved':approved
                }, function() {
                    contest.user.initCommentControls();
                });

                var blacklist = ($('#popup-confirm-checkbox:checked').val() == 'on');
                if (blacklist && authorId){
                    addToBlacklist(authorId); /* located in base.js */
                }
            }, null, null, checkBox)
        },
        approveComment: function(id, userId) {
            $('#unapprovedCommentsContainer').fsLoad('/contest/user/approvecomment/', {
                'ajax':1,
                'id':id
            }, function() {
                $('#commentsContainer').fsLoad('/contest/user/comments/', {
                    'ajax':1,
                    'userId': userId
                });
            });
        },
        blackList: function(userId, approved) {
            var containerId = '#unapprovedCommentsContainer';
            if (approved) {
                containerId = '#commentsContainer';
            }
            popup.confirm('Переместить пользователя в черный список?<br/>При этом будут удалены все его отзывы!', function() {
                $(containerId).fsLoad('/contest/user/addtoblacklist/', {
                    'ajax': 1,
                    'id': userId,
                    'approved': approved
                }, function() {
                    contest.user.initCommentControls();
                });
            })
        },
        getRandomMessage: function(sex) {
            var typicalMessagesMale = [
            'Красавицы, жду с нетерпением ваших голосов!',
            'Девушки, милые, отдайте голос за хорошего парня!',
            'За каждый голос дарю воздушный поцелуй!',
            'Настоящий Мистер не забудет отблагодарить прекрасных дам, которые за него голосуют!',
            'Качался месяц, читал умные книги, изучал теорию этикета… И все это ради твоего голоса!'
            ];
            var typicalMessagesFemale = [
            'Твой голос очень нужен мне!',
            'Ценю вклад каждого поклонника. Это будет наша общая победа!',
            'В этом месяце ты проголосуешь за меня, а в следующем я за тебя!',
            'Ну-ка вместе, ну-ка дружно мне поможем победить!',
            'Если думаешь, что я достойна победы, то не забудь «Отдать голос» за меня!',
            'Мисс – это не просто звание, это – состояние души! Состояние моей души!'
            ];
            var str;
            if (sex=='m') {
                str = typicalMessagesMale[Math.floor(Math.random()*typicalMessagesMale.length)];
            } else {
                str = typicalMessagesFemale[Math.floor(Math.random()*typicalMessagesFemale.length)];
            }
            var textarea = $("#textInfoText");
            textarea.val(str);
            textarea.focus();
        },
        initCommentControls: function() {
        },
        initUserMessageTextarea: function() {
            $('textarea[maxlength]').keyup(function(){
                var max = parseInt($(this).attr("maxlength"));
                if($(this).val().length > max){
                    $(this).val($(this).val().substr(0, $(this).attr("maxlength")));
                    $(this).focus();
                }
            });
        },
        initUserPhotosEditBlock: function() {
            $(".user-photos-panel").bind("mouseenter", function(e){
                $("#user-photos-edit").fadeIn("fast");
            });
            $(".user-photos-panel").bind("mouseleave", function(e){
                $("#user-photos-edit").fadeOut("fast");
            });
        },
        addTextInfo: function(text) {
            $.getJSON('/contest/ajax/savetextinfo/', {
                ajax:1,
                text:text
            }, function(data) {
                switch (data['status']) {
                    case 'ok': {
                        $('#userTextInfo .content').html($('#userTextInfoEdit').find('textarea').val());
                        if (text != '') {
                            $('#userTextInfo #textInfo').show();
                            $('#userTextInfo #emptyTextInfo').hide();
                        } else {
                            $('#userTextInfo #textInfo').hide();
                            $('#userTextInfo #emptyTextInfo').show();
                        }
                        contest.user.toggleTextInfoForm();
                        break;
                    }
                    case 'error': default: {
                        popup.error('Ошибка.');
                        break;
                    }
                }
            });
        },
        loadComments: function(userId, page, approved) {
            var containerId = '#unapprovedCommentsContainer';
            if (approved) {
                containerId = '#commentsContainer';
            }
            $(containerId).fsLoad('/contest/user/comments/', {
                'ajax':true,
                'userId':userId,
                'page':page,
                'approved':approved
            }, function() {
                contest.user.initCommentControls();
            });
        },
        loadVoteEvents : function(page) {

            $.get('/contest/ajax/loadvoteevents/', {ajax: true, page: page}, function(data) {
                if (data.res == 'ok') {
                    $("#votelist").html(data.msg);
                }
            }, 'json');

        },
        loadVoters: function(userId, page) {
            $('#votersList').fsLoad('/contest/user/voters/', {
                ajax:true,
                userId:userId,
                page:page
            });
        },
        loadFans: function(page, invited) {
            $('#fansList').fsLoad('/contest/invite/getfans', {
                ajax: true,
                page: page,
                invited: invited
            });
        },
        loadAlbums: function (page) {
            $('#albumsContainer').fsLoad('/contest/user/albumlist/', {
                ajax:true,
                page:page
            });
        },
        giftsDialog: function(userId)
        {
            $.get('/block/tabsendgift/?ajax=true&userId='+userId, function (data) {
                        popup.simple('<div id="mcTabGift">' + data + '</div>', {title:'Подари подарок', width:798});
            });
        },
        fanofDialog: function(userId, fanofUserId, deletefan)
        {
            var res = true;
            var question = '';
            if (deletefan) {
                question = "Ты точно хочешь перестать болеть за этого человека?";
            } else if (fanofUserId != '' && userId != fanofUserId) {
                question = "Ты уже являешься поклонником другого пользователя. Точно хочешь изменить симпатии?";
            }
            if (question != '') {
                popup.confirm(question, function() {
                    contest.user.beFanOf(userId, deletefan)
                    });
            } else {
                contest.user.beFanOf(userId, deletefan);
            }
        },
        beFanOf: function(userId, deletefan) {
            $.getJSON('/contest/ajax/befanof/', {
                'ajax': true,
                'userId': userId,
                'deletefan': deletefan
            }, function(data) {
                if (data['status'] == 'ok') {
                    if (!deletefan) {
                        window.location = '/profile/?openFanWidget=true';
                    } else {
                        $('#deleteFan').fadeOut(300);
                        $('#deleteFan').queue(function(){
                            $('#becomeFan').show();
                        });
                    }
                    $('#befanof').html('');
                } else {
                    popup.error('Произошла ошибка!');
                }
            });
        },
        toggleTextInfoForm: function()
        {
            $('#userTextInfo').toggle();
            $("#userTextInfoEdit").toggleClass("h").find('textarea').focus();;
        },
        loadRewards: function(userId)
        {
            $('#userRewards').fsLoad('/contest/user/rewards/', {
                ajax:1,
                userId:userId
            });
        },
        changeAlbumIdInUploader: function(id, name) {
			//$('#massUploaderSwf')[0].SetVariable("aid", id);
            if (name != '') {
                $('#uploadInfo').html('Фотографии будут загружены в альбом «' + name + '».');
            } else {
                $('#uploadInfo').html('Фотографии будут загружены в новый альбом.');
            }
        },
        sendEmailInvites: function(emails, wrapper, contacts) {
            var html = $(wrapper).html();
            $(wrapper).html('<p>Идет отправка...</p>');
            $.post('/contest/ajax/sendemailinvites/', {ajax: true, emails: emails, contacts: contacts}, function(data) {
                if (data['html']) {
                    $(wrapper).html(data['html']);
                } else {
                    $(wrapper).html(html);
                }
                switch (data['status']) {
                    case 'ok': {
                        break;
                    }
                    case 'noemails': {
                        popup.alert('Необходимо ввести хотя бы один адрес.');
                        break;
                    }
                    case 'notvalid': {
                        popup.alert('Введенные адреса имеют неверный формат.<br/>Формат адреса: name@host.ru');
                        break;
                    }
                    case 'exists': {
                        popup.alert('Приглашения не были отправлены, так как введенные адреса уже зарегистрированы на ФотоСтране.');
                        break;
                    }
                    case 'notvalid&exists': {
                        popup.alert('Часть приглашений не была отправлена, так как введенные адреса уже зарегистрированы на ФотоСтране.<br/>Остальные адреса введены в неверном формате.');
                        break;
                    }
                    case 'overlimit': {
                        popup.alert('Ты уже разослал слишком много приглашений сегодня.');
                        break;
                    }
                    case 'error': default: {
                        popup.error('Ошибка.');
                        break;
                    }
                }
            }, 'json');
        },
        importContacts: function() {
            var email = $('#email').val();
            var password = $('#password').val();
            if (email == '') {
                popup.alert('Необходимо ввести свой mail адрес.');
                return;
            }
            if (password == '') {
                popup.alert('Необходимо ввести пароль.');
                return;
            }
            $('#contactsImportWrapper').html('<p>Идет получение контактов...</p>');
            $.post('/contest/ajax/getcontacts/', {ajax: true, email: email, password: password}, function(data) {
                $('#contactsImportWrapper').html(data['html']);
                switch (data['status']) {
                    case 'ok': {
                        break;
                    }
                    case 'unsupported': {
                        popup.alert('К сожалению твой email-провайдер не поддерживается.<br />Либо ты ввел неверный email-адрес.');
                        break;
                    }
                    case 'loginfailed': {
                        popup.alert('Ты ввел неверный пароль, попробуй еще раз.');
                        break;
                    }
                    case 'error': default: {
                        popup.error('Ошибка.');
                        break;
                    }
                }
            }, 'json');
        },
        sendInvites: function() {
            var emails = '';
            var emailsL = 0;
            var contactsList = $('#contacts');
            $('input:checked', contactsList).each(function() {
                emails += $(this).val() + ',';
                emailsL++;
            });
            if (emailsL == 0) {
                popup.alert("Выбери контакты для отправки приглашений");
                return;
            }

            this.sendEmailInvites(emails, '#contactsImportWrapper', 1);
        },

        inviteFriends: function () {
            $.ajax({
                url: '/contest/ajax/inviteFriends',
                data: {},
                type: 'POST',
                error: function () { fs.notify('Извини, произошла какая-то ошибка.'); },
                success: function (data) {
                    if (data.ret) {
                        //fs.notify('');
                        $('.js-invite-friends-button').first().html('<p>Для твоих друзей добавлено приглашение проголосовать. В следующий раз\
                        позвать их ты сможешь через сутки.</p>');
                    } else {
                        fs.notify(data.message || 'Извини, что-то сломалось!');
                    }
                }
            });
        }
    }
}
