﻿/// <reference path="../jquery-1.4.2.min.js" />
/// <reference path="../Main.js" />
/// <reference path="../jquery.uploadify.v2.1.4.min.js" />

$(function () {
    InitializeLightBoxes();

    $('#image-add').data('number', 0);

    $('#image-add input').click(function () {
        if ($('#image-cancel input').length < 6) {
            var number = $('#image-add').data('number') + 1;
            $('#image-cancel').append('<input type="button" value="Отменить" />');
            $('#image-list').append('<input type="file" id="upload-image-' + number + '" name="upload-image-' + number + '" />');
            $('#title-list').append('<input type="text" />');
            $('#image-add').data('number', number);
        }
    });

    $('#image-cancel input').live('click', function () {
        if ($('#image-cancel input').length == 1) {
            $('#image-list input, #title-list input').val('');
            $('#title-list input').removeClass('inputError');
        }
        else {
            var index = $('#image-cancel input').index(this);
            $('#image-cancel input').eq(index).remove();
            $('#image-list input').eq(index).remove();
            $('#title-list input').eq(index).remove();
        }
    });

    $('#show-winner').click(function () {
        $('#show-winner, #contest-members').fadeOut(function () {

            ShowProcessing();
            $.post(GetLocalePath('/Contest/GetWinner/' + gContestId), function (result) {
                HideProcessing();
                if (result === false || result == null) {

                }
                else {
                    $('#show-leaders').fadeIn();
                    ShowWinner(result);
                }
            });
        });
    });

    $('#show-leaders').click(function () {
        $('#show-leaders, #contest-members').fadeOut(function () {
            ShowProcessing();
            $.post(GetLocalePath('/Contest/GetLeaders/' + gContestId), function (result) {
                HideProcessing();
                if (result === false) {

                }
                else {
                    if (result.haveWinner === true) $('#show-winner').fadeIn();
                    ShowLeaders(result);
                }
            });
        });
    });
});

function ShowWinner(data) {
    var html =
        '<div class="member-holder" id="member-' + data.id + '">' +
            '<div class="opened-member">' +
                '<div class="member-rating">' +
                    'Рейтинг: [<span class=member-vote">' + data.votes + '</span>]\r\n' +
                '</div>' +
                '<span class="member-name">' + data.name + ', </span><span class="member-date">' + data.time + '</span>\r\n' +
            '</div>';
    if (data.images.length > 0) {
        html +=
            '<div class="member-images">';
        $.each(data.images, function (i) {
            html +=
                '<a href="' + this.originalUrl + '" title="' + this.title + '">' +
                    '<img alt="' + this.title + '" src="' + this.smallUrl + '" />' +
                '</a>';
        });
        html +=
            '</div>';
    }
    if (data.text != null) {
        html +=
            '<p class="member-text">' + data.text + '</p>';
    }
    html +=
        '</div>';

    $('#contest-members').html('<h3>Победитель конкурса</h3>' + html).slideDown();

    InitializeLightBoxes();
}

function ShowLeaders(data) {
    var html = '';
    $.each(data.leaders, function (i) {
        html +=
            '<div class="member-holder" id="member-' + this.id + '">' +
                '<div class="opened-member">' +
                    '<div class="member-rating">' +
                        'Рейтинг: [<span class="member-vote">' + this.votes + '</span>]\r\n';
        if (this.allowVote) {
            html +=
                        '<input type="image" title="Голосовать" src="/Content/Pictures/contest-vote.png" class="member-vote" onclick="VoteMember(' + this.id + ')" />\r\n';
        }
        html +=
                    '</div>' +
                    '<span class="member-name">' + this.name + ', </span><span class="member-date">' + this.time + '</span>\r\n';
        if (data.allowWinner) {
            html +=
                    '<input onclick="GoTo(\'/Contest/Winner/' + this.id + '\')" type="button" value="Победитель" />';
        }
        html +=
                '</div>';
        if (this.images.length > 0) {
            html +=
                '<div class="member-images">';
            $.each(this.images, function (i) {
                html +=
                    '<a href="' + this.originalUrl + '" title="' + this.title + '">' +
                        '<img alt="' + this.title + '" src="' + this.smallUrl + '" />' +
                    '</a>';
            });
            html +=
                '</div>';
        }
        if (this.text != null) {
            html +=
                '<p class="member-text">' + this.text + '</p>';
        }
        html +=
            '</div>';
    });

    $('#contest-members').html('<h3>Лидеры конкурса</h3>' + html).slideDown();

    InitializeLightBoxes();
}

function InitializeLightBoxes() {
    $(".member-images").each(function (i) {
        $(this).children('a').lightBox({
            overlayOpacity: 0.6,
            imageLoading: '/Content/lightbox/images/loading.gif',
            imageBtnClose: '',
            imageBtnPrev: '/Content/lightbox/images/prev.gif',
            imageBtnNext: '/Content/lightbox/images/next.gif',
            imageBlank: '/Content/lightbox/images/blank.gif',
            containerBorderSize: 1,
            containerResizeSpeed: 350,
            txtImage: 'Изображение',
            txtOf: 'из'
        });
    });
}

function UploadContestData(contestId) {
    $('#contest-success, #contest-fail').fadeOut();

    var haveText = $('#candidate-text').length > 0;
    var haveImage = $('#candidate-images').length > 0;

    var data = {
        name: $.trim($('#candidate-name input').val()),
        email: $.trim($('#candidate-email input').val()),
        text: haveText ? $('#candidate-text textarea').val() : ""
    };

    var error = false;

    if (data.name == "") {
        $('#candidate-name input').addClass('inputError');
        error = true;
    }
    else $('#candidate-name input').removeClass('inputError');

    if (!ValidateEmail(data.email)) {
        $('#candidate-email input').addClass('inputError');
        error = true;
    }
    else $('#candidate-email input').removeClass('inputError');

    if (haveText && $.trim(data.text) == "") {
        $('#candidate-text textarea').addClass('inputError');
        error = true;
    }
    else $('#candidate-text textarea').removeClass('inputError');

    var imagesSelected = false;

    $('#image-list input').each(function (i) {
        var title = $('#title-list input').eq(i);

        if ($(this).val() != "") {
            if ($.trim(title.val()) == "") {
                title.addClass('inputError');
                error = true;
            }
            else title.removeClass('inputError');

            imagesSelected = true;
        }
        else title.removeClass('inputError');
    });

    if (error) return;

    if (haveImage && imagesSelected) {
        var images = new Array();
        var titles = new Array();
        var basket = new Array();

        $('#image-list input').each(function (i) {
            if ($(this).val() != "") {
                images.push(this);
                titles.push($('#title-list input').eq(i).val());
            }
            else {
                basket.push(this);
                basket.push($('#image-cancel input').eq(i));
                basket.push($('#title-list input').eq(i));
            }
        });
        for (i = 0; i < basket.length; i++) $(basket[i]).remove();

        data['id'] = contestId;
        data['titles'] = titles;

        ShowProcessing();
        $(images).upload(GetLocalePath('/Contest/Upload'), data, function (result) {
            HideProcessing();
            ContestUploadResult(result);
        }, "json");
    }
    else if (haveText) {
        ShowProcessing();
        $.post(GetLocalePath('/Contest/Upload/' + contestId), data, function (result) {
            HideProcessing();
            ContestUploadResult(result);
        }, "json");
    }
}

function ContestUploadResult(result) {
    switch (result) {
        case true:
            $('#contest-success').slideDown();
            break;

        case 'AddMemberError':
            $('#contest-fail span').text('Ошибка регистрации участника конкурса.');
            $('#contest-fail').slideDown();
            break;

        case 'FileNotImage':
            $('#contest-fail span').text('Один или несколько файлов не являются изображениями.');
            $('#contest-fail').slideDown();
            break;

        case 'AddImageError':
            $('#contest-fail span').text('Ошибка сохранения отправленного изображения.');
            $('#contest-fail').slideDown();
            break;
    }
}

function VotePoll() {
    var data = { variantId: $('ul#poll-variants :radio:checked').val() };
    if (data.variantId) {
        ShowProcessing();
        $.post(GetLocalePath("/Poll/Vote"), data, function (result) {
            if (result === true) {
                GoTo("/Section/" + gSectionId);
            }
            HideProcessing();
        });
    }
}

function VoteMember(id) {
    ShowProcessing();
    $.post(GetLocalePath('/Contest/VoteMember/' + id), function (result) {
        HideProcessing();
        if (result === false) {

        }
        else {
            $('#member-' + id + ' input.member-vote').fadeOut(function () {
                $('#member-' + id + ' span.member-vote').text(result);
            });
        }
    });
}

function SendOpinion(sectionId) {
    var data = {
        name: $.trim($('#visitor-name').val()),
        text: $.trim($('#opinion-tool textarea').val())
    };

    $('#success-opinion').hide();

    if (data.name != "") {
        $('#visitor-name').removeClass('inputError');

        if (data.text != "") {
            $('#opinion-tool textarea').removeClass('inputError');

            ShowProcessing();
            $.post(GetLocalePath("/Section/AddOpinion/" + sectionId), data, function (result) {
                HideProcessing();
                if (result === true) {
                    $('#success-opinion').slideDown();
                }
            });
        }
        else $('#opinion-tool textarea').addClass('inputError');
    }
    else $('#visitor-name').addClass('inputError');
}

function SendQuestion(sectionId) {
    var data = {
        name: $.trim($('#asking-name').val()),
        text: $.trim($('#dialog-tool textarea').val())
    };

    $('#question-successful').hide();

    if (data.name != "") {
        $('#asking-name').removeClass('inputError');

        if (data.text != "") {
            $('#dialog-tool textarea').removeClass('inputError');

            ShowProcessing();
            $.post(GetLocalePath("/Dialog/AddQuestion/" + sectionId), data, function (result) {
                if (result === true) {
                    $('#question-successful').slideDown();
                }
                HideProcessing();
            });
        }
        else $('#dialog-tool textarea').addClass('inputError');
    }
    else $('#asking-name').addClass('inputError');
}
