var p_album = $('#p_album');

if (p_album.size() > 0) {
    var zoom_field = $('#zoom_field');
    var zoom_field_img = zoom_field.find('img');

    var p_thumbs_block = p_album.find('#p_thumbs_block');
    var p_thumbs = p_thumbs_block.find('.p_thumb');

    var p_thumbs_w = p_album.find('.p_thumbs').width();
    var p_thumb_w = parseInt($(p_thumbs[0]).width());
    var p_photos_width = (p_thumb_w + 15) * parseInt(p_thumbs.size());
    var p_max_pos = p_thumbs_w - p_photos_width;
    var p_left_offset = p_thumbs_w / 2;
    var p_right_offset = p_photos_width - p_left_offset;

    var big_width = p_thumbs_w - 8;
    var cur_big_img = 0;
    var p_big_img = [];
    p_big_img[0] = p_album.find('#p_big_img_0');
    p_big_img[1] = p_album.find('#p_big_img_1');


    function showPict(p_thumb)
    {
        if (p_thumb.hasClass('p_thumb_cur')) {
            return false;
        }
        p_thumbs.removeClass('p_thumb_cur');
        p_thumb.addClass('p_thumb_cur');

        var offset = p_thumb.position().left + (p_thumb_w / 2);
        if ( offset <= p_left_offset ) {
            gallery_pos = (-8);
        } else if (offset > p_right_offset) {
            gallery_pos = p_max_pos;
        } else {
            gallery_pos = p_left_offset - offset;
        }
        p_thumbs_block.animate({left: gallery_pos}, 100);

        var thumb_id = parseInt(p_thumb.attr('id').replace('p_thumb_', ''));
        $.ajax({
            type     : 'POST',
            url      : '/ajax/getphoto/',
            data     : 'photo_id=' + thumb_id,
            dataType : 'json',
            success  : function (json) {
                if (json.error == 0) {
                    load_big_img = +!cur_big_img;
                    p_big_img[load_big_img].attr( 'src', json.photo_src.replace('\\', '') ).unbind('load').bind('load', function(){
                        p_big_img[cur_big_img].animate({opacity: 0});
                        cur_big_img = load_big_img;
                        var left = Math.floor( (big_width - p_big_img[cur_big_img].width()) / 2 );
                        p_big_img[cur_big_img].css('left', left + 'px').animate({opacity : 1});
                        zoom_field_img.attr('src', p_big_img[cur_big_img].attr('src'));
                    });
                }
            }
        });
    }

    var zoomEnd = {
        width  : 0,
        height : 0,
        left   : 0,
        right  : 0
    };
    var zoomCurrent = {
        width  : 0,
        height : 0
    };
    var zoomStep = {
        width  : 0,
        height : 0,
        left   : 0,
        right  : 0
    };
    var zoomInterval = 0;
    const zoomSteps = 10;
    var curStep = 0;

    function zoomPictInterval()
    {
        if ( curStep == (zoomSteps - 2) ) {
            zoomCurrent.width = zoomEnd.width;
            zoomCurrent.height = zoomEnd.height;
            zoomCurrent.right = 0;
            zoomCurrent.left = 0;
            clearInterval(zoomInterval);
        } else {
            zoomCurrent.width += zoomStep.width;
            zoomCurrent.height += zoomStep.height;
            zoomCurrent.left -= zoomStep.left;
            zoomCurrent.right -= zoomStep.right;
        }

        zoom_field_img.width(zoomCurrent.width).height(zoomCurrent.height);
        zoom_field.css({
            'left'  : zoomCurrent.left + 'px',
            'right' : zoomCurrent.right + 'px'
        });
        curStep++;
    }

    function zoomPict()
    {
        zoom_field.removeClass('h');

        zoomCurrent.width = p_big_img[cur_big_img].width();
        zoomCurrent.height = p_big_img[cur_big_img].height();
        zoomEnd.width = zoom_field_img.width();
        zoomEnd.height = zoom_field_img.height();

        zoomStep.width = (zoomEnd.width - zoomCurrent.width) / zoomSteps;
        zoomStep.height = (zoomEnd.height - zoomCurrent.height) / zoomSteps;

        zoom_field_img.width(zoomCurrent.width).height(zoomCurrent.height);
        zoom_field_offset = p_big_img[cur_big_img].offset();

        zoomCurrent.left = zoom_field_offset.left;
        zoomStep.left = zoomCurrent.left / zoomSteps;
        zoomCurrent.right = $(window).width() - zoom_field_offset.left - zoomCurrent.width;
        zoomStep.right = zoomCurrent.right / zoomSteps;

        zoom_field.css({
            'left'  : zoomCurrent.left + 'px',
            'top'   : zoom_field_offset.top + 'px',
            'right' : zoomCurrent.right + 'px'
        }).removeClass('h');
        clearInterval(zoomInterval);
        curStep = 0;
        zoomInterval = setInterval(zoomPictInterval, 2);
    }


    $(window).bind('click', function(e){
        e = $(e.target);

        zoom_field_img.width('auto').height('auto');
        zoom_field.addClass('h');

        if (e.parent().hasClass('p_thumb')) {
            showPict(e.parent());
        }
        if (e.hasClass('p_big_img')) {
            zoomPict();
        }

        if (e.attr('id') == 'p_big_prev') {
            var p_thumb_prev = p_thumbs_block.find('.p_thumb_cur').prev();
            if (p_thumb_prev.hasClass('p_thumb')) {
                showPict(p_thumb_prev);
            }
        } else if (e.attr('id') == 'p_big_next') {
            var p_thumb_next = p_thumbs_block.find('.p_thumb_cur').next();
            if (p_thumb_next.hasClass('p_thumb')) {
                showPict(p_thumb_next);
            }
        }
    });

    showPict($(p_thumbs[0]));
}

var feedback = $('#feedback');
if (feedback.size() > 0) {
    var fb_name = feedback.find('#fb_name');
    var fb_email = feedback.find('#fb_email');
    var fb_phone = feedback.find('#fb_phone');
    var fb_msg = feedback.find('#fb_msg');
    var fb_event = feedback.find('#fb_event');


    function sendFeedback()
    {
        var error = false;

        var fb_name_val = fb_name.val();
        if ( (fb_name_val == fb_name[0].defaultValue) || (fb_name_val.length < 3) ) {
            fb_name.addClass('fb_field_error');
            error = true;
        }

        var fb_email_val = fb_email.val();
        mail_rx = /^[\d\w\-_\.]+?@[\d\w\-_\.]+?\.\w{2,4}$/;
        if ( (fb_email_val == fb_email[0].defaultValue) || !fb_email_val.match(mail_rx) ) {
            fb_email.addClass('fb_field_error');
            error = true;
        }

        var fb_phone_val = fb_phone.val();
        if ( (fb_phone_val == fb_phone[0].defaultValue) || (fb_phone_val.length < 5) ) {
            fb_phone_val = 0;
        }

        var fb_msg_val = fb_msg.val();
        if ( (fb_msg_val == fb_msg[0].defaultValue) || (fb_msg_val.length < 5) ) {
            fb_msg.addClass('fb_field_error');
            error = true;
        }

        if (error == false) {
            $.ajax({
                type     : 'POST',
                url      : '/ajax/sendmail/',
                data     : 'name='   + encodeURIComponent(fb_name_val) +
                           '&email=' + encodeURIComponent(fb_email_val) + 
                           '&phone=' + encodeURIComponent(fb_phone_val) + 
                           '&msg='   + encodeURIComponent(fb_msg_val) +
                           '&event=' + (fb_event.attr('checked') ? 1 : 0),
                dataType : 'json',
                success  : function (json) {
                    if (json.error == 0) {
                        feedback.empty();
                        jQuery('<p />').html('Ваше сообщение отправлено.').appendTo(feedback);
                    }
                }
            });
        }
    }

    feedback.find('.fb_field').each(function(){
        $(this).bind({
            'focus' : function(){
                if (this.value == this.defaultValue) {
                    $(this).addClass('fb_field_fill').val('');
                }
                $(this).removeClass('fb_field_error');
            },
            'blur' : function(){
                if (this.value == '') {
                    $(this).removeClass('fb_field_fill').val(this.defaultValue);
                }
            }
        });
    });

    feedback.bind('click', function(e){
        e = $(e.target);
        if (e.attr('id') == 'fb_submit') {
            sendFeedback();
        }
    });
}
