﻿
function Viewport(linkClass, blockId, paramsClass, updateClass) {

    Open = function () {
        $('body').css('overflow', 'hidden');

        
        
        $('form').append('<div id=\'viewportLayer\'><div id=\'viewportMainLayer\' class=\'viewport_MainLayer\'></div></div>');
        $('#viewportMainLayer').append($('#' + blockId));
        $('#' + blockId).css('display', 'block');
        $('#viewportMainLayer').css('width', $('#' + blockId).innerWidth());



        $('#viewportLayer').bind('click', Close);
        $('#viewport_closer').live('click', Close);
    }

    Close = function (event) {
        if (($(event.target).attr('id') == 'viewportLayer') || ($(event.target).attr('id') == 'viewport_closer')) {
            $('form').append($('#' + blockId));
            $('#' + blockId).css('display', 'none');
            $(this).remove();
            $('body').css('overflow', 'auto');
            window.location.hash = 'empty';
            window.location.reload("");
        }
    }

    OpenLink = function (link) {
        if ((link != '') && (link != '#empty')) {
            $('.' + paramsClass).val(link);
            $('.' + updateClass).click();

            if ($('#' + blockId).css('display') != 'block')
                Open();
        }
    }

    return this;
}

function InitSlider() {
    $('.viewport_footer').live('click', function (event) {
        if ($('.vmodal').css('display') == 'block') {
            $('.vmodal').slideUp();
            $(this).css('background-image', 'url("/img/Viewport_footer_down.png")');
        }
        else {
            $('.vmodal').slideDown();
            $(this).css('background-image', 'url("/img/Viewport_footer_up.png")');
        }
    });
}

function InitSliderBig() {
    $('.viewport_footer_big').live('click', function (event) {
        if ($('.vmodal_big').css('display') == 'block') {
            $('.vmodal_big').slideUp();
            $(this).css('background-image', 'url("/img/Viewport_footer_down_big.png")');
        }
        else {
            $('.vmodal_big').slideDown();
            $(this).css('background-image', 'url("/img/Viewport_footer_up_big.png")');
        }
    });
}

function InitArrows() {
    $('.arrow_previous').live('mouseenter', function () {
        $(this).stop(true, true).animate({ opacity: '1.0' });
    });

    $('.arrow_previous').live('mouseout', function () {
        $(this).stop(true, true).animate({ opacity: '0.0' });
    });

    $('.arrow_next').live('mouseenter', function () {
        $(this).stop(true, true).animate({ opacity: '1.0' });
    });

    $('.arrow_next').live('mouseout', function () {
        $(this).stop(true, true).animate({ opacity: '0.0' });
    });

    $('.arrow_previous').live('focus', function () { this.blur(); });
    $('.arrow_next').live('focus', function () { this.blur(); });
}

function setWatchHashChanges(functionObject) {
    setInterval(function () {
        if (setWatchHashChanges.hash !== window.location.hash) {
            setWatchHashChanges.hash = window.location.hash;
            functionObject(setWatchHashChanges.hash);
        }
    }, 100);
}

// Crop scripts

function Cropper(imageId, buttonObject, buttonSend, buttonCancel, paramsContainer, updateButton, callback) {

    var userHighlighted = false;
    var cropp;
    var tempData;

    Init = function () {
        $(buttonObject).live('click', function (event) {
            if (cropp) {
                cropp.destroy();
                cropp = null;
            }
            if (!cropp) {
                cropp = craeteCropper();
            }
            var param = $(this).attr('href');
            if (param != '#') {
                var userId = param.substr(param.indexOf('#') + 1);
                var rawdata = $('.usersList').val();
                var usersString = rawdata.split(';');
                for (var i = 0; i < usersString.length; i++) {
                    var userData = usersString[i].split('|');
                    if (userData[0] == userId) {
                        cropp.setSelect([userData[2], userData[3], userData[4], userData[5]]);
                        tempData = $('.usersList').val();
                        $('.usersList').val('');
                        break;
                    }
                }
            }

            callback();

            return false;
        });

        $('.iEditMyself').live('click', function (event) {
            cropp = craeteCropper();
            var param = $(this).attr('href');
            if (param != '#') {
                var userId = param.substr(param.indexOf('#') + 1);
                var rawdata = $('.usersList').val();
                var usersString = rawdata.split(';');
                for (var i = 0; i < usersString.length; i++) {
                    var userData = usersString[i].split('|');
                    if (userData[0] == userId) {
                        cropp.setSelect([userData[2], userData[3], userData[4], userData[5]]);
                        tempData = $('.usersList').val();
                        $('.usersList').val('');

                        $('.interior_photo').append($('.editBtns'));
                        $('.editBtns').css('display', 'block');
                        var top = parseInt(userData[5]) - 30;
                        $('.editBtns').css('top', top + 'px');
                        var left = parseInt(userData[4]) + 40;
                        $('.editBtns').css('left', left + 'px');
                        $('.editBtns').css('display', 'block');

                        break;
                    }
                }
            }

            callback();

            return false;
        });

        $('.markedUser').live('mouseenter', function (event) {

            if (!cropp) {
                cropp = craeteCropper();
                var param = $(this).attr('href');
                if (param != '#') {
                    var userId = param.substr(param.indexOf('=') + 1);
                    var rawdata = $('.usersList').val();
                    var usersString = rawdata.split(';');
                    for (var i = 0; i < usersString.length; i++) {
                        var userData = usersString[i].split('|');
                        if (userData[0] == userId) {
                            cropp.setSelect([userData[2], userData[3], userData[4], userData[5]]);
                            tempData = $('.usersList').val();
                            $('.usersList').val('');
                            userHighlighted = true;
                            break;
                        }
                    }
                }
            }

            return false;
        });

        $('.markedUser').live('mouseout', function (event) {
            if (userHighlighted && (cropp)) {
                cropp.destroy();
                cropp = null;
                userHighlighted = false;
                $('.usersList').val(tempData);
            }

            return false;
        });

        $('.iDeleteMyself').live('click', function (event) {
            $(paramsContainer).val('delete');
            $(updateButton).click();

            return false;
        });

        $('.iComplain').live('click', function (event) {
            $(paramsContainer).val('complain|' + $(this).attr('href'));
            $(updateButton).click();

            return false;
        });

        $(buttonSend).live('click', function (event) {
            var sel = cropp.tellSelect();
            if (sel.x != sel.y != sel.x2 != sel.y2 != 0) {
                $(paramsContainer).val(sel.x + '|' + sel.y + '|' + sel.x2 + '|' + sel.y2);

                cropp.destroy();
                cropp = null;
                $(updateButton).click();
            }
            else {
                cropp.destroy();
            }

            callback();

            $('.editBtns').css('display', 'none');

            return false;
        });

        $(buttonCancel).live('click', function (event) {

            if (cropp) {
                cropp.destroy();
                cropp = null;
                $('.editBtns').css('display', 'none');
                $('.usersList').val(tempData);
            }

            callback();

            return false;
        });
    }


    function craeteCropper() {

        return $.Jcrop($(imageId), {
            bgColor: 'black',
            bgOpacity: .4,
            onSelect: showButtons,
            onChange: hideButtons
        });
    }

    function showButtons(c) {
        $('.interior_photo').append($('.editBtns'));
        $('.editBtns').css('display', 'block');
        var top = c.y2 - 30;
        $('.editBtns').css('top', top + 'px');
        var left = c.x2 + 40;
        $('.editBtns').css('left', left + 'px');
    }

    function hideButtons() {
        $('.editBtns').css('display', 'none');
    }

    return this;
}

function MarkUpUsers(container) {
    $(container).find('.marker').remove();
    var rawdata = $('.usersList').val();
    if (rawdata) {
        var usersString = rawdata.split(';');
        var user = new Object();
        for (var i = 0; i < usersString.length - 1; i++) {
            var userData = usersString[i].split('|');
            user.id = userData[0];
            user.userName = userData[1];
            user.x1 = userData[2];
            user.y1 = userData[3];
            user.x2 = userData[4];
            user.y2 = userData[5];
            user.complained = parseInt(userData[6]);

            var userMarker = $('<div class="marker"></div>');
            var left = parseInt(user.x1) + 34;
            userMarker.css('left', left + 'px');
            userMarker.css('top', user.y1 + 'px');
            userMarker.css('width', (user.x2 - user.x1) + 'px');
            userMarker.css('height', (user.y2 - user.y1) + 'px');
            var clonedBlock = $('.userBlock').clone();
            clonedBlock.find('.userName').html(user.userName)
                .attr('href', 'http://blog.myrest24.ru/user_profile.aspx?userid=' + user.id);
            if (user.id != parseInt($('.cropperParams').val())) {
                clonedBlock.find('.mainBtns').remove();
                if (user.complained == 0)
                    clonedBlock.find('.complainBtn').find('.iComplain').attr('href', user.id);
                else {
                    clonedBlock.find('.complainBtn').remove();
                    clonedBlock.append('Ваша жалоба принята');
                }
            }
            else {
                clonedBlock.find('.complainBtn').remove();
            }
            clonedBlock.appendTo(userMarker);
            $(container).append(userMarker);

            $('.editBtns').css('display', 'none');

            userMarker.bind('mouseenter', function (event) {
                $(this).find('.userBlock').css('display', 'block')
                    .css('top', ($(this).innerHeight()) + 'px');
            });

            userMarker.bind('mouseleave', function (event) {
                $(this).find('.userBlock').css('display', 'none');
            });
        }
    }
}

//function FindUser(x, y) {
//    var rawdata = $('.usersList').val();
//    var usersString = rawdata.split(';');
//    var user = new Object();
//    for (var i = 0; i < usersString.length - 1; i++) {
//        var userData = usersString[i].split('|');
//        user.id = userData[0];
//        user.userName = userData[1];
//        user.x1 = userData[2];
//        user.y1 = userData[3];
//        user.x2 = userData[4];
//        user.y2 = userData[5];
//        if ((user.x1 < x) && (user.x2 > x) && (user.y1 < y) && (user.y2 > y)) {
//            if ($('#userBlock').css('display') == 'none') {
//                $('#userName').html(user.userName);
//                $('#userBlock').css('left', x + 10);
//                $('#userBlock').css('top', y + 30);
//                $('#userBlock').css('display', 'block');
//                break;
//            }
//        }
//        else {
//            if ($('#userBlock').css('display') == 'block')
//                $('#userBlock').css('display', 'none');
//        }
//    }

//    
//}
