function showPhotos(cat_id) {
    $('.content.corp_life .blackout').show();
    $('.content.corp_life div#album_photos_' + cat_id).css({
        left: $(window).width()/2 - $('.content.corp_life div#album_photos_' + cat_id).width(),
        top: 200
    }).show();
}

Array.prototype.max = function() {
    var max = this[0];
    var len = this.length;
    for (var i = 1; i < len; i++) if (this[i] > max) max = this[i];
    return max;
};
Array.prototype.min = function() {
    var min = this[0];
    var len = this.length;
    for (var i = 1; i < len; i++) if (this[i] < min) min = this[i];
    return min;
};
Array.prototype.getPrevValuesSum = function(startKey, stopKey) {
    var sum = 0;
    for (var i=0; i<=this.length-1; i++) {
        if ( i >= stopKey && i < startKey) {
            sum = sum + parseInt(this[i]);
        }
        
    }
    return sum;
};
Array.prototype.getNextValuesSum = function(startKey, stopKey) {
    var sum = 0;
    for (var i=0; i<=this.length-1; i++) {
        if ( i >= startKey && i < stopKey ) {
            sum = sum + parseInt(this[i]);
        }
    }
    return sum;
};
$(document).ready(function() {
    $('.navigator').css({left: $(window).width()/2 - $('.navigator').width()/2});
//    $('.content').css({left: $(window).width()/2 - $('.navigator').width()/2 - 300});
    $(window).resize(function() {
        $('.navigator').css({left: $(window).width()/2 - $('.navigator').width()/2});
    });

    // Transport types page switcher
    $('.content.transport_types .transport_selector .item').click(function() {
        if ( !$(this).hasClass('active') ) {
            $('.content.transport_types .transport_selector .item.active').removeClass('active');
            $(this).addClass('active');
            $('.content.transport_types .cargo_menu.active').removeClass('active');
            $('.content.transport_types .cargo_menu').eq( $(this).index() ).addClass('active');
            $('.transport_pages').animate({
               'margin-left': - 820 * parseInt($(this).index()) + 320
            });
            $('.content.transport_types .cargo_types .cargo_menu.active .type').click(function() {
                $('.content.transport_types .cargo_types .cargo_menu.active .type.active').removeClass('active');
                $(this).addClass('active');
                $('.content.transport_types .transport_pages .page .cargo_type.active').removeClass('active');
                $('.content.transport_types .transport_pages .page .cargo_type').eq( $(this).index() ).addClass('active');
            });
        }
    });
    
    $('.content.transport_types .cargo_types .cargo_menu.active .type').click(function() {
        $('.content.transport_types .cargo_types .cargo_menu.active .type.active').removeClass('active');
        $(this).addClass('active');
        $('.content.transport_types .transport_pages .page .cargo_type.active').removeClass('active');
        $('.content.transport_types .transport_pages .page .cargo_type').eq( $(this).index() ).addClass('active');
    });
    
    // Send message page, clearing form button
    $('.content.send_message .message_form .clear_form').click(function() {
        $('.content.send_message .message_form input, .content.send_message .message_form textarea').val('');
    });

    // Company history page, years switcher
    var $yearsSwitcher = $('.content.history .year_switcher');
    var $yearsSwitcherBall = $yearsSwitcher.find('.ball');
    var $switcherYears = $yearsSwitcher.find('.years .year');
    var yearsCount = $switcherYears.length;
    var yearsEachWidth = $yearsSwitcher.width() / yearsCount;
    var yearContBorders = [];
    for (var i=0; i<=yearsCount-1; i++) {
        yearContBorders.push({from: i * yearsEachWidth, to: i * yearsEachWidth + yearsEachWidth});
    }
    $switcherYears.each(function() {
        $(this).css({width: yearsEachWidth});
    });
    
    $yearsSwitcherBall.css({left: yearsEachWidth/2 - 9});
    
    var currentYearIndex = 0;
    $switcherYears.each(function() {
        $(this).hover(function() {
            currentYearIndex = $(this).index();
        });
    });
    $yearsSwitcherBall.draggable({
        axis: 'x', 
        containment: $yearsSwitcher.find('.years'),
        stop: function(event, ui) { 
            for (var i=0; i<=yearContBorders.length-1; i++) {
                if (ui.position.left >= yearContBorders[i].from && ui.position.left <= yearContBorders[i].to) {
                    $yearsSwitcherBall.css({left: (yearsEachWidth/2 - 9) + yearsEachWidth * i});
                    $('.content.history .history_slider .history_slides .history_slide.active').removeClass('active');
                    $($('.content.history .history_slider .history_slides .history_slide').get(i)).addClass('active');
                    slider.styleFix();
                    slider.placeSlides();
                }
            }
        }
    });
    
    // company mission page, text for pics on hover
    $('.content.company_mission .pics_with_texts .pic').each(function() {
        var $pic = $(this);
        $pic.mouseover(function() {
            $(this).find('.text_cont').css({'left': $pic.position().left - 4}).show();
        }).mouseleave(function() {
            $(this).find('.text_cont').hide();
        });
    });
    
    // hide/show main menu
    leftMenuItemsHeight = $('.left_menu ul.items').height();
    $('.left_menu .footer').click(function() {
        if (!$(this).hasClass('closed')) {
            $('.left_menu ul.items').animate({
                height: '-='+leftMenuItemsHeight
            }, 200, 'linear', function() {
                $('.left_menu ul.items').hide();
                $('.left_menu .footer').addClass('closed');
            });
        } else {
            $('.left_menu ul.items').show();
            $('.left_menu ul.items').animate({
                height: '+='+leftMenuItemsHeight
            }, 200, 'linear', function() {
                $('.left_menu .footer').removeClass('closed');
                
            });
        }
    });
    
    // content slider
    var slider = {
        styleFix: function() {
//            console.log($('.slide_page.current').height(), $(window).height());
//            if ( $('.slide_page.current').height() <= $(window).height() ) {
//                $('.slide_page.current').css({height: $(window).height()});
//                console.log('yarr');
//            }
            $('.slides').css({height: $('.slide_page.current').height()});
        },
        initDraggable: function() {
            slider.slidesOrigPositions = [];
            $('.slide_page').not('.current').each(function() {
                slider.slidesOrigPositions[ $(this).index() ] = {left: $(this).position().left, top: $(this).position().top};
            });
            $('.slide_page.current').draggable({
                cursor: 'move',
                distance: 5,  
                scroll : false,
                start: function (event, ui) {  
                    if ($(event.originalEvent.target).hasClass("options") || $(event.originalEvent.target).parents(".options").length > 0
                        || $(event.originalEvent.target).hasClass("offers_box")) {
                        $('body').css({cursor: 'default'});
                        event.preventDefault();
                    }
                    ui.helper.data('draggableXY.originalPosition', ui.position || {top: 0, left: 0});  
                    ui.helper.data('draggableXY.newDrag', true);  
                },  
                drag: function (event, ui) {  
                  var originalPosition = ui.helper.data('draggableXY.originalPosition');  
                  var deltaX = Math.abs(originalPosition.left - ui.position.left);  
                  var deltaY = Math.abs(originalPosition.top - ui.position.top);  
                  var newDrag = ui.helper.data('draggableXY.newDrag');  
                  ui.helper.data('draggableXY.newDrag', false);  
                  var xMax = newDrag ? Math.max(deltaX, deltaY) === deltaX : ui.helper.data('draggableXY.xMax');  
                  ui.helper.data('draggableXY.xMax', xMax);  
                  var newPosition = ui.position;  
                  if(xMax) {  
                    newPosition.top = originalPosition.top;  
                  }  
                  if(!xMax){  
                    newPosition.left = originalPosition.left;  
                  }
                  // moving neighbor slides
                  // moved left
                  if (ui.position.left > 0) {
                      $('.slide_page').not('.current').each(function() {
                          $(this).css({left: slider.slidesOrigPositions[$(this).index()].left + ui.position.left})
                      });
                  }
//                  // moved right
                  if (ui.position.left < 0) {
                      $('.slide_page').not('.current').each(function() {
                          $(this).css({left: slider.slidesOrigPositions[$(this).index()].left + ui.position.left})
                      });
                  }
                  if (ui.position.top > 0) {
                      $('.slide_page').not('.current').each(function() {
                          $(this).css({top: slider.slidesOrigPositions[$(this).index()].top + ui.position.top})
                      });
                  }
                  if (ui.position.top < 0) {
                      $('.slide_page').not('.current').each(function() {
                          $(this).css({top: slider.slidesOrigPositions[$(this).index()].top + ui.position.top})
                      });
                  }

            //      return newPosition;  
                },
                stop: function(event, ui) {
                    var currPageLevels = $('.slide_page.current').attr('id').split('_');
                    var currPageLevelX = parseInt(currPageLevels[2]);
                    var currPageLevelY = parseInt(currPageLevels[1]);
                    // moved right
                    if (ui.position.left < 0) {
                        if (Math.abs(ui.position.left) > $(window).width()/2 
                            && ($('.slide_page#page_' + currPageLevelY + '_' + (currPageLevelX+1) ).length != 0)) 
                        {
                            slider.slideRight(Math.abs(ui.position.left));
                        } else {
                            if ( $('.slide_page.current').find('.content.corp_life').length == 0) {
                                slider.revert(ui);
                            }
                        }
                    }
                    // moved left
                    if (ui.position.left > 0) {
                        if (Math.abs(ui.position.left) > $(window).width()/2 
                            && ($('.slide_page#page_' + currPageLevelY + '_' + (currPageLevelX-1) ).length != 0)) 
                        {
                            slider.slideLeft(Math.abs(ui.position.left));
                        } else {
                            slider.revert(ui);
                        }
                    }
                    // moved down
                    if (ui.position.top < 0) {
                        if (Math.abs(ui.position.top) > $(window).height()/2
                            && ($('.slide_page#page_' + (currPageLevelY+1) + '_' + currPageLevelX ).length != 0)) 
                        {
                            slider.slideDown(Math.abs(ui.position.top));
                        } else {
                            slider.revert(ui);
                        }
                    }
                    // moved up
                    if (ui.position.top > 0) {
                        if (Math.abs(ui.position.top) > $(window).height()/2 
                            && ($('.slide_page#page_' + (currPageLevelY-1) + '_' + currPageLevelX ).length != 0)) 
                        {
                            slider.slideUp(Math.abs(ui.position.top));
                        } else {
                            slider.revert(ui);
                        }
                    }
                }
            });
        },
        init: function() {
            slider.styleFix();
            $('.content.transport_types .transport_pages').draggable('destroy');
            $('.slide_page').each(function() {
                if ($(this).height() < $(window).height()) {
                    $(this).css({height: $(window).height()});
                }
            });
            slider.placeSlides();
            $(window).resize(function() {
                slider.styleFix();
            });
            slider.initDraggable();
        },
        toogleActiveMenuItem: function(currPageLevelY) {
            // set left menu active button
            $('.left_menu .items .item').removeClass('active');
            $( $('.left_menu .items .item').get(currPageLevelY)).addClass('active');
            if ( $('.blackout').is(':visible') ) {
                $('.blackout, .album_photos').hide();
            }
        },
        placeSlides: function() {
            // setting positions for all slides
            var currPageLevels = $('.slide_page.current').attr('id').split('_');
            var currPageLevelX = parseInt(currPageLevels[2]);
            var currPageLevelY = parseInt(currPageLevels[1]);
            
            slider.toogleActiveMenuItem(currPageLevelY);
            
            // array of slide heights
            var slidePages = [];
            $('.slides .slide_page').each(function() {
                var levels = $(this).attr('id').split('_');
                var levelX = levels[2];
                var levelY = levels[1];
                if ( !slidePages[levelY] ) {
                    slidePages.push( [ $(this).height()] );
                } else {
                    slidePages[levelY].push($(this).height());
                }
            });
            // getting highest slide on each y-level
            maxHeights = [];
            for (var i=0; i<=slidePages.length-1; i++) {
                if (slidePages[i].length > 1) {
                    if ( !maxHeights[i] ) {
                        maxHeights.push( [ slidePages[i].max() ] );
                    } else {
                        maxHeights[i].push( slidePages[i].max() );
                    }
                } else {
                    if ( !maxHeights[i] ) {
                        maxHeights.push( [ slidePages[i][0] ] );
                    } else {
                        maxHeights[i].push( slidePages[i][0] );
                    }
                }
            }
            // setting positions for all slides
            $('.slides .slide_page').not('.current').each(function() {
                var levels = $(this).attr('id').split('_');
                var levelX = levels[2];
                var levelY = levels[1];
                var posFromCurrent = 0;
                // if this page is left from current
                if (levelX < currPageLevelX) {
                    posFromCurrent = currPageLevelX - levelX;
                    $(this).css({left: - $(this).width()*posFromCurrent});
                }
                // if this page is right from current
                if (levelX > currPageLevelX) {
                    posFromCurrent = levelX - currPageLevelX;
                    $(this).css({left: $(this).width()*posFromCurrent});
                }
                // if this page is bottom from current
                if (levelY > currPageLevelY) {
                    $(this).css({top: maxHeights.getPrevValuesSum(levelY, currPageLevelY)});
                }
                // if this page is top from current
                if (levelY < currPageLevelY) {
                    $(this).css({top: - maxHeights.getNextValuesSum(levelY, currPageLevelY)});
                }
                if (levelY == currPageLevelY) {
                    $(this).css({top: 0});
                }
            });
        },
        revert: function(ui) {
            $('.slide_page').not('.current').each(function() {
                $(this).animate({
                    left: slider.slidesOrigPositions[$(this).index()].left,
                    top: slider.slidesOrigPositions[$(this).index()].top
                });
            });
            $('.slide_page.current').animate({
                top: 0, left: 0
            });
//            $('.slide_page').animate({
//                left: '-=' + ui.originalPosition.left
////                top:  ui.originalPosition.top
//            });
        },
        slideUp: function(offset) {
            var currPageLevels = $('.slide_page.current').attr('id').split('_');
            var currPageLevelX = parseInt(currPageLevels[2]);
            var currPageLevelY = parseInt(currPageLevels[1]);
            if ( $('.slide_page#page_' + (currPageLevelY-1) + '_' + currPageLevelX).length != 0 ) {
                if (offset) {
                    $('.slide_page').animate({
                        top: '+=' + (maxHeights[currPageLevelY-1] - offset)
                    }, 500, function() {slider.styleFix();slider.initDraggable();slider.toogleNavigator();});
                } else {
                    $('.slide_page').animate({
                        top: '+=' + maxHeights[currPageLevelY-1]
                    }, 500, function() {slider.styleFix();slider.initDraggable();slider.toogleNavigator();});
                }
                
                $('.slide_page.current').removeClass('current').draggable( "destroy" );
                $('.slide_page#page_' + (currPageLevelY-1) + '_' + currPageLevelX).addClass('current').css({left: 0});
                slider.toogleActiveMenuItem(currPageLevelY-1);
            } else {
                return false;
            }
        },
        slideDown: function(offset) {
            var currPageLevels = $('.slide_page.current').attr('id').split('_');
            var currPageLevelX = parseInt(currPageLevels[2]);
            var currPageLevelY = parseInt(currPageLevels[1]);
            if ( $('.slide_page#page_' + (currPageLevelY+1) + '_' + currPageLevelX).length != 0 ) {
                if (offset) {
                    $('.slide_page').animate({
                        top: '-=' + (maxHeights[currPageLevelY] - offset)
                    }, 500, function() {slider.initDraggable();slider.toogleNavigator();});
                } else {
                    $('.slide_page').animate({
                        top: '-=' + maxHeights[currPageLevelY]
                    }, 500, function() {slider.initDraggable();slider.toogleNavigator();});
                }
                
                $('.slide_page.current').removeClass('current').draggable( "destroy" );
                $('.slide_page#page_' + (currPageLevelY+1) + '_' + currPageLevelX).addClass('current').css({left: 0});
                slider.styleFix();
                slider.toogleActiveMenuItem(currPageLevelY+1);
            } else {
                return false;
            }
        }, 
        slideLeft: function(offset) {
            if ( $('.blackout').is(':visible') ) {
                $('.blackout, .album_photos').hide();
            }
            var currPageLevels = $('.slide_page.current').attr('id').split('_');
            var currPageLevelX = parseInt(currPageLevels[2]);
            var currPageLevelY = parseInt(currPageLevels[1]);
            if ( $('.slide_page#page_' + currPageLevelY + '_' + (currPageLevelX-1) ).length != 0 ) {
                if (offset) {
                    $('.slide_page').animate({
                        left: '+=' + ($('.slide_page#page_' + currPageLevelY + '_' + (currPageLevelX+1) ).width() - offset)
                    }, 500, function() {slider.initDraggable();slider.toogleNavigator();});
                } else {
                    $('.slide_page').animate({
                        left: '+=' + $('.slide_page.current').width()
                    }, 500, function() {slider.styleFix();slider.initDraggable();slider.toogleNavigator();});
                }
                
                $('.slide_page.current').removeClass('current').draggable( "destroy" );
                $('.slide_page#page_' + currPageLevelY + '_' + (currPageLevelX-1) ).addClass('current');
                slider.initDraggable();
            } else {
                return false;
            }
            
        },
        slideRight: function(offset) {
            if ( $('.blackout').is(':visible') ) {
                $('.blackout, .album_photos').hide();
            }
            var currPageLevels = $('.slide_page.current').attr('id').split('_');
            var currPageLevelX = parseInt(currPageLevels[2]);
            var currPageLevelY = parseInt(currPageLevels[1]);
            if ( $('.slide_page#page_' + currPageLevelY + '_' + (currPageLevelX+1) ).length != 0 ) {
                if (offset) {
                    $('.slide_page').animate({
                        left: '-=' + ($('.slide_page#page_' + currPageLevelY + '_' + (currPageLevelX+1) ).width() - offset)
                    }, 500, function() {slider.initDraggable();slider.toogleNavigator();});
                } else {
                    $('.slide_page').animate({
                        left: '-=' + $('.slide_page.current').width()
                    }, 500, function() {slider.styleFix();slider.initDraggable();slider.toogleNavigator();});
                }
                
                $('.slide_page.current').removeClass('current').draggable( "destroy" );
                $('.slide_page#page_' + currPageLevelY + '_' + (currPageLevelX+1) ).addClass('current');
                slider.initDraggable();
            } else {
                return false;
            }
            
        },
        toogleNavigator: function() {
            var currPageLevels = $('.slide_page.current').attr('id').split('_');
            var currPageLevelX = parseInt(currPageLevels[2]);
            var currPageLevelY = parseInt(currPageLevels[1]);
            
            if ( $('.slide_page#page_'+currPageLevelY+'_'+(currPageLevelX+1)).length == 0 ) {
                $('.navigator .arrow_right').addClass('locked');
            } else {
                $('.navigator .arrow_right').removeClass('locked');
            }
            if ( $('.slide_page#page_'+currPageLevelY+'_'+(currPageLevelX-1)).length == 0 ) {
                $('.navigator .arrow_left').addClass('locked');
            } else {
                $('.navigator .arrow_left').removeClass('locked');
            }
            if ( $('.slide_page#page_'+(currPageLevelY+1)+'_'+currPageLevelX).length == 0 ) {
                $('.navigator .arrow_down').addClass('locked');
            } else {
                $('.navigator .arrow_down').removeClass('locked');
            }
            if ( $('.slide_page#page_'+(currPageLevelY-1)+'_'+currPageLevelX).length == 0 ) {
                $('.navigator .arrow_up').addClass('locked');
            } else {
                $('.navigator .arrow_up').removeClass('locked');
            }
        }
    };
    
    slider.init();
    slider.toogleNavigator();
    
    $('.navigator .arrow_up').click(function() {
        slider.slideUp();
    });
    $('.navigator .arrow_down').click(function() {
        slider.slideDown();
    });
    $('.navigator .arrow_left').click(function() {
        slider.slideLeft();
    });
    $('.navigator .arrow_right').click(function() {
        slider.slideRight();
    });
    
    // news expanding / collapsing
    $('.content.news .item a').live('click', function () {
        $(this).parent('.item').find('.cut').slideToggle(500, function () {
            var s = $(this).parents('.slide_page');
            var c = s.children('.content');
            var h = c.children('.title').outerHeight(true) + c.children('.news_cont').outerHeight(true) + c.children('.paginator').outerHeight(true);
            $(this).parents('.slide_page').css({'height': h + 'px'});;
            slider.placeSlides();
            slider.styleFix();
            slider.initDraggable();
            slider.toogleNavigator();
        });
    });
    
    // news pagination
    $('.content.news .paginator a').live('click', function () {
        var p = $(this).attr("pagenum");
        if ($(this).hasClass("active")) {
            return false;
        }
        $(this).parent().find("a").removeClass("active");
        $(this).addClass("active");
        $(this).parents(".news").find(".news_cont .item").hide("fast");
        $(this).parents(".news").find(".news_cont .item[pagenum=" + p + "]").show("fast");
    });
    
    // to home
    $('.left_menu .header').click(function() {
        $('.slides .slide_page.current').removeClass('current').draggable("destroy");
        $('.slides .slide_page#page_0_0').addClass('current').css({top: 0, left: 0});
        location.hash = 'page_0_0';
        slider.placeSlides();
        slider.styleFix();
        slider.initDraggable();
        slider.toogleNavigator();
    });
    
    // right bottom menu
    $('.add_links .link.calc').click(function() {
        $('.slides .slide_page.current').removeClass('current').draggable("destroy");
        $('.slides .slide_page#page_6_0').addClass('current').css({top: 0, left: 0});
        location.hash = 'page_6_0';
        slider.placeSlides();
        slider.styleFix();
        slider.initDraggable();
        slider.toogleNavigator();
    });
    $('.add_links .link.send_message').click(function() {
        $('.slides .slide_page.current').removeClass('current').draggable("destroy");
        $('.slides .slide_page#page_7_0').addClass('current').css({top: 0, left: 0});
        location.hash = 'page_7_0';
        slider.placeSlides();
        slider.styleFix();
        slider.initDraggable();
        slider.toogleNavigator();
    });
    $('.add_links .link.map').click(function() {
        $('.slides .slide_page.current').removeClass('current').draggable("destroy");
        $('.slides .slide_page#page_2_0').addClass('current').css({top: 0, left: 0});
        location.hash = 'page_2_0';
        slider.placeSlides();
        slider.styleFix();
        slider.initDraggable();
        slider.toogleNavigator();
    });
    $('.add_links .link.home').click(function() {
        $('.slides .slide_page.current').removeClass('current').draggable("destroy");
        $('.slides .slide_page#page_0_0').addClass('current').css({top: 0, left: 0});
        location.hash = 'page_0_0';
        slider.placeSlides();
        slider.styleFix();
        slider.initDraggable();
        slider.toogleNavigator();
    });
    
    $('.delivery_types a.moscow').click(function() {
        $('.slides .slide_page.current').removeClass('current').draggable("destroy");
        $('.slides .slide_page#page_4_0').addClass('current').css({top: 0, left: 0});
        location.hash = 'page_4_0';
        slider.placeSlides();
        slider.styleFix();
        slider.initDraggable();
        slider.toogleNavigator();
    });
    $('.delivery_types a.russia').click(function() {
        $('.slides .slide_page.current').removeClass('current').draggable("destroy");
        $('.slides .slide_page#page_4_1').addClass('current').css({top: 0, left: 0});
        location.hash = 'page_4_1';
        slider.placeSlides();
        slider.styleFix();
        slider.initDraggable();
        slider.toogleNavigator();
    });
    
    $('.content.main_page .news a.all_news').click(function() {
        $('.slides .slide_page.current').removeClass('current').draggable("destroy");
        $('.slides .slide_page#page_3_0').addClass('current').css({top: 0, left: 0});
        location.hash = 'page_3_0';
        slider.placeSlides();
        slider.styleFix();
        slider.initDraggable();
        slider.toogleNavigator();
    });
    
    $('.content.main_page .news a.preview').click(function () {
        $('.slides .slide_page.current').removeClass('current').draggable("destroy");
        $('.slides .slide_page#page_3_0').addClass('current').css({top: 0, left: 0});
        location.hash = 'page_3_0';
        slider.placeSlides();
        slider.styleFix();
        slider.initDraggable();
        slider.toogleNavigator();
        
        $('.slides .news_cont .item[itemid=' + $(this).attr('itemid') + '] a.name').click();
    });
    
    $('table.car_types a').click(function() {
        $('.slides .slide_page.current').removeClass('current').draggable("destroy");
        $('.slides .slide_page#page_5_0').addClass('current').css({top: 0, left: 0});
        location.hash = 'page_5_0!#'+ $(this).index() + 1;
        var carType = $(this).attr('href').slice( 11 ) - 1;
        $('.content.transport_types .transport_selector .item.active').removeClass('active');
        $('.content.transport_types .transport_selector .item').eq( carType ).addClass('active');
        $('.content.transport_types .transport_pages').css({
            'margin-left': - 820 * carType + 320
        })
        slider.placeSlides();
        slider.styleFix();
        slider.initDraggable();
        slider.toogleNavigator();
    });
    
    // page personal links
    if (location.hash.slice(1) != '') {
        $('.slides .slide_page.current').removeClass('current').draggable("destroy");
        var curPageId = location.hash.slice(1);
        if (location.hash.slice(1).indexOf('!#')) {
            curPageId = location.hash.slice(1, 9);
        }
        $('.slides .slide_page#'+curPageId).addClass('current').css({top: 0, left: 0});
        slider.placeSlides();
        slider.styleFix();
        slider.initDraggable();
        slider.toogleNavigator();
    }
    
    if (location.hash.slice(1).indexOf('!#')) {
        var carType = parseInt(location.hash.slice( location.hash.slice(1).indexOf('!#') + 3)) - 1;
        $('.content.transport_types .transport_selector .item.active').removeClass('active');
        $('.content.transport_types .transport_selector .item').eq( carType ).addClass('active');
        $('.content.transport_types .transport_pages').css({
            'margin-left': - 820 * carType + 320
        })
    }
    
    // to transport advice slide
    $('.content.main_page .best_trans_advice').click(function() {
        $('.slides .slide_page.current').removeClass('current').draggable("destroy");
        $('.slides .slide_page#page_8_0').addClass('current').css({top: 0, left: 0});
        location.hash = 'page_8_0';
        slider.placeSlides();
        slider.styleFix();
        slider.initDraggable();
        slider.toogleNavigator();
    });
    
    // switching slides of first level (y-axis)
    $('.left_menu .items .item').each(function() {
        $(this).click(function() {
            var selectedLevel = $(this).index();
            $('.slides .slide_page.current').removeClass('current').draggable("destroy");
            $('.slides .slide_page#page_' + selectedLevel + '_0').addClass('current').css({top: 0, left: 0});
            location.hash = 'page_' + selectedLevel + '_0';
            slider.placeSlides();
            slider.styleFix();
            slider.initDraggable();
            slider.toogleNavigator();
        });
    });
    // switching slides of second level (x-axis)
    $('.left_menu .items .item .submenu li').each(function(e) {
        $(this).click(function(e) {
            e.stopPropagation();
            var selectedLevelX = $(this).index();
            var selectedLevelY = $(this).parents('.left_menu .items .item').index();
            $('.slides .slide_page.current').removeClass('current').draggable("destroy");
            $('.slides .slide_page#page_' + selectedLevelY + '_' + (selectedLevelX+1)).addClass('current').css({top: 0, left: 0});
            location.hash = 'page_' + selectedLevelY + '_' + (selectedLevelX+1);
            slider.placeSlides();
            slider.styleFix();
            slider.initDraggable();
            slider.toogleNavigator();
        });
    });
    
    $(document).keydown(function(e) {
        var upKey = 38;
        var downKey = 40;
        var leftKey = 37;
        var rightKey = 39;
        
        if (e.keyCode == upKey) {
            slider.slideUp();
        }
        if (e.keyCode == downKey) {
            slider.slideDown();
        }
        if (e.keyCode == leftKey) {
            slider.slideLeft();
        }
        if (e.keyCode == rightKey) {
            slider.slideRight();
        }
        
    });
    
    if ( $('.content.corp_life').length != 0) {
        $('.content.corp_life').css({width: ($('.content.corp_life .albums .album').length+1) * $($('.content.corp_life .albums .album').get(0)).width()});
    }
    if ( $('.content.transport_types').length != 0) {
        $('.content.transport_types').css({width: ($('.content.transport_types .transport_pages .page').length) * $($('.content.transport_types .transport_pages .page').get(0)).width() + $('.content.transport_types .transport_pages .page').length * 350});
    }
    
    $('.employees .employee').mouseover(function(e) {
        $(this).find('.info_popup').show();
    }).mouseout(function(e) {
        $(this).find('.info_popup').hide();
    });
    
    $('.content.corp_life .albums .album').mouseover(function() {
        $(this).find('.album_info').show();
    }).mouseout(function() {
        $(this).find('.album_info').hide();
    });
    $('.blackout').css({height: $(window).height()});
    /*
    $('.content.corp_life .albums .album a').click(function() {
        $('.content.corp_life .blackout').show();
        $('.content.corp_life .album_photos').css({
            left: $(window).width()/2 - $('.content.corp_life .album_photos').width()/2,
            top: 200
        }).show();
        
    });
    */

    $('.content.corp_life .album_photos .photo_list .photos a.photo').click(function () {
        $(this).parent().parent().parent().find("a.photo_big img").attr("src", $(this).attr("href"));
    })

    $('.content.corp_life .album_photos .close').click(function() {
        $('.content.corp_life .blackout').hide();
        $('.content.corp_life .album_photos').hide();
    });
    
    $('.content.corp_life .to_left').click(function() {
        console.log($($('.content.corp_life .photo_list .photos .photo').get(0)).position().left);
        if ( $($('.content.corp_life .photo_list .photos .photo').get(0)).position().left < 0) {
            $('.content.corp_life .photo_list .photos .photo').stop().animate({left: '+=176'});
        }
    });
    $('.content.corp_life .to_right').click(function() {
        var photosCount = $('.content.corp_life .photo_list .photos .photo').length;
        var photoLineLength = photosCount * ( $($('.content.corp_life .photo_list .photos .photo').get(0)).width() + 3 );
        var photoWidth = $('.content.corp_life .photo_list .photos .photo').width();
        console.log(photoWidth);
        
        if ($($('.content.corp_life .photo_list .photos .photo').get(0)).position().left > -photoLineLength/2) {
            $('.content.corp_life .photo_list .photos .photo').stop().animate({left: '-=' + photoWidth + 3});
        }
    });
    
    $('#jqui_calendar').datepicker({
        showOtherMonths: true,
        onSelect: function(dateText, inst) {
            var dateParts = dateText.split('.');
            var dateObj = new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay);            
            //dateObj.setFullYear(dateParts[2], parseInt(dateParts[1]) - 1, dateParts[0]);
            var datePicked = Math.round(dateObj.getTime() / 1000);
            var directionId = $('.offers .direction_selectbox input[type="hidden"]').val() || 0;
            $.ajax({
               type: "POST",
               url: "/news34",
               data: 'module=news&ajax=1&cat_id=2&date='+ datePicked +'&type=ajax_calendar_page&direction_id=' + directionId,
               success: function(response){
                   $('.offers_box').html(response);
                   $('.content.best_trans_decision .offer .checkbox').click(function() {
                        if ($(this).hasClass('selected')) {
                            $(this).removeClass('selected');
                            $(this).parent('.offer').removeClass('selected');
                        } else {
                            $(this).addClass('selected');
                            $(this).parent('.offer').addClass('selected');
                        }
                    });
               }
            });
        }
    });
    
    $('.content.best_trans_decision .direction_selectbox + .options .option').click(function() {
        $('.content.best_trans_decision .direction_selectbox input').val( $(this).index() );
        $('.content.best_trans_decision .direction_selectbox .value').html( $(this).html() );
        closeSelectBox($('.content.best_trans_decision .direction_selectbox'));
        
        var dateObj = $('#jqui_calendar').datepicker('getDate');
        var datePicked = Math.round(dateObj.getTime() / 1000);
        var directionId = $('.offers .direction_selectbox input[type="hidden"]').val() || 0;
        $.ajax({
            type: "POST",
            url: "/news34",
            data: 'module=news&ajax=1&cat_id=2&date='+ datePicked +'&type=ajax_calendar_page&direction_id=' + directionId,
            success: function(response){
                $('.offers_box').html(response);
            }
         });
    });
    
    $('.content.best_trans_decision .region_selectbox + .options .option').click(function() {
        $('.content.best_trans_decision .direction_selectbox .value').html('Выберите направление');
        $('.content.best_trans_decision .region_selectbox .value').html( $(this).html() );
        var region = $(this).attr('class').slice(7);
        $('.content.best_trans_decision .direction_selectbox + .options .option').hide();
        $('.content.best_trans_decision .direction_selectbox + .options .option.'+region).show();
        closeSelectBox($('.content.best_trans_decision .region_selectbox'));
    });
    
    $('.content.best_trans_decision .offer .checkbox').click(function() {
        if ($(this).hasClass('selected')) {
            $(this).removeClass('selected');
            $(this).parent('.offer').removeClass('selected');
        } else {
            $(this).addClass('selected');
            $(this).parent('.offer').addClass('selected');
        }
    });
    
    var calcData = {
        
    };
    
    function openSelectBox(selectBox) {
        var $options = selectBox.next('.options');
        selectBox.addClass('active');
        $options.show();
        slider.styleFix();
    }
    
    function closeSelectBox(selectBox) {
        var $options = selectBox.next('.options');
        $options.hide();
        selectBox.removeClass('active');
    }
    
    function in_array(what, where) {
        for(var i=0; i<where.length; i++)
            if(what == where[i]) 
                return true;
        return false;
    }

    
    var $selectBox = $('.calc_form .selectbox');
    $('.calc_form .selectbox, .direction_selectbox, .calc_form .selectbox, .region_selectbox').click(function(e) {
        if ($(this).hasClass('active')) {
            closeSelectBox($(this));
        } else {
            openSelectBox($(this));
        }
        e.stopPropagation();
    });
    
    $('body:not(.calc_form .selectbox.active, .direction_selectbox), body:not(.calc_form .selectbox.active, .region_selectbox)').click(function() {
        closeSelectBox($('.calc_form .selectbox.active'));
    });
    
    $('.content.reporting .types a.type').each(function() {
        $(this).click(function() {
            if (!$(this).hasClass('active')) {
                $('.content.reporting .types a.type.active').removeClass('active');
                $(this).addClass('active');
                $('.content.reporting .items .item.active').removeClass('active');
                $( $('.content.reporting .items .item').get($(this).parent('p').index()) ).addClass('active');
            }
        });
    });
    
    var sort_by = function(field, reverse, primer) {

       reverse = (reverse) ? -1 : 1;

       return function(a,b){

           a = a[field];
           b = b[field];

           if (typeof(primer) != 'undefined'){
               a = primer(a);
               b = primer(b);
           }

           if (a<b) return reverse * -1;
           if (a>b) return reverse * 1;
           return 0;

       }
    }
    
    var calc = {
        values: {
            direction_main: false,
            cargo_type: false,
            cargo_type_text: false,
            vehicle_type: false,
            vehicle_type_text: false,
            direction_city: false
        },
        selectboxOptions: {
            cities: [],
            russiaPrices: [],
            russiaCargoTypes: ['Тент', 'Изотерма', 'Рефрижератор']
        },
        moscowValues: [],
        moscowValuesSorted: [],
        moscowVehicleTypes: [],
        
        showSelectbox: function(name) {
            $('.selectbox.'+ name).show();
            $('.selectbox.'+ name).next().next('.gray_line').show();
        },
        getCarCargoCapacities: function() {
            
        },
        getOptions: function() {
            $('.content.transportation_regions table.trans_info.from_moscow tr').each(function() {
                if ($(this).find('td').length > 0) {
                    calc.selectboxOptions.cities.push( $(this).find('td').eq(0).text() );
                    var prices = [ $(this).find('td').eq(2).text(), $(this).find('td').eq(3).text(), $(this).find('td').eq(4).text() ];
                    calc.selectboxOptions.russiaPrices.push( prices );
                }
            });
            $('.content.transportation table.trans_info.moscow_values tr').each(function() {
                if ($(this).find('td').length > 0) {
                    calc.moscowValues.push({
                        car_type: $(this).find('td').eq(0).text(),
                        cargo_type: $(this).find('td').eq(1).text(),
                        cargo_capacity: $(this).find('td').eq(2).text(),
                        cargo_volume: $(this).find('td').eq(3).text(),
                        price: $(this).find('td').eq(6).text()
                    });
                }
            });
            calc.moscowValues = calc.moscowValues.sort(sort_by('car_type', true));
            
            for (var i=0; i<=calc.moscowValues.length-1; i++) {
                if (!in_array(calc.moscowValues[i].car_type, calc.moscowVehicleTypes)) {
                    calc.moscowVehicleTypes.push( calc.moscowValues[i].car_type );
                }
            }
        },
        setOptions: function() {
        },
        calcPrice: function() {
            if (calc.values.direction_main == 1) {
                
            } else if (calc.values.direction_main == 2) {
                return $('.content.transportation_regions table.trans_info.from_moscow tr')
                             .eq( parseInt(calc.values.direction_city) + 1 )
                             .find('td')
                             .eq( parseInt(calc.values.cargo_type) + 1 )
                             .text();
            }
        },
        reset: function() {
            $('.selectbox.direction_main').nextAll('.selectbox, .gray_line').hide();
            $('.selectbox.direction_main').next().next('.gray_line').show();
            $('.result_info').hide();
        },
        init: function() {
            calc.getOptions();
            for (var i=0; i <= calc.selectboxOptions.cities.length - 1; i++) {
                $('.selectbox.direction_city').next('.options').append('<div class="option">'+ calc.selectboxOptions.cities[i] +'</div>')
            }
            $('.selectbox.direction_main').next('.options').click(function() {
                calc.reset();
                var selectedValue = $(this).prev('.selectbox.direction_main').find('input').val();
                calc.values.direction_main = selectedValue;
                
                if (calc.values.direction_main == 1) {
                    $('.selectbox.vehicle_type').next('.options').html('<div class="option default">На чём повезём?</div>');
                    for (var i=0; i <= calc.moscowVehicleTypes.length - 1; i++) {
                        $('.selectbox.vehicle_type').next('.options').append('<div class="option">'+ calc.moscowVehicleTypes[i] +'</div>')
                    }
                    calc.showSelectbox('vehicle_type');
                } else if (calc.values.direction_main == 2) {
                    $('.selectbox.cargo_type').next('.options').html('<div class="option default">Какой тип кузова будем использовать?</div>');
                    for (var i=0; i <= calc.selectboxOptions.russiaCargoTypes.length - 1; i++) {
                        $('.selectbox.cargo_type').next('.options').append('<div class="option">'+ calc.selectboxOptions.russiaCargoTypes[i] +'</div>')
                    }
                    calc.showSelectbox('cargo_type');
                }
                
                $('.calc_form .options .option').click(function() {
                    $('.calc_form .selectbox.active input').val( $(this).index() );
                    $('.calc_form .selectbox.active .value').html( $(this).html() );
                    closeSelectBox($('.calc_form .selectbox.active'));
                });
            });
            
            $('.selectbox.vehicle_type').next('.options').click(function() {
                $('.selectbox.cargo_type').hide();
                $('.selectbox.cargo_type').find('.value').html('Какой тип кузова будем использовать?');
                $('.selectbox.cargo_volume').hide();
                $('.selectbox.cargo_volume').find('.value').html('Какой объём?');
                $('.result_info').hide();
                var selectedValue = $(this).prev('.selectbox.vehicle_type').find('input').val();
                calc.values.vehicle_type = selectedValue;
                calc.values.vehicle_type_text = $(this).find('.option').eq(parseInt(selectedValue)).text();
                var cargoTypes = [];
                for (var i=0; i<=calc.moscowValues.length-1; i++) {
                    if (calc.moscowValues[i].car_type == calc.values.vehicle_type_text
                        && !in_array(calc.moscowValues[i].cargo_type, cargoTypes)) 
                    {
                        cargoTypes.push( calc.moscowValues[i].cargo_type );
                    }
                }
                $('.selectbox.cargo_type').next('.options').html('<div class="option default">Какой тип кузова будем использовать?</div>');
                for (var i=0; i <= cargoTypes.length - 1; i++) {
                    $('.selectbox.cargo_type').next('.options').append('<div class="option">'+ cargoTypes[i] +'</div>')
                }
                calc.showSelectbox('cargo_type');
                
                $('.calc_form .options .option').click(function() {
                    $('.calc_form .selectbox.active input').val( $(this).index() );
                    $('.calc_form .selectbox.active .value').html( $(this).html() );
                    closeSelectBox($('.calc_form .selectbox.active'));
                });
            });

            $('.selectbox.cargo_type').next('.options').click(function() {
                $('.selectbox.cargo_volume').hide();
                $('.selectbox.cargo_volume').find('.value').html('Какой объём?');
                $('.result_info').hide();
                var selectedValue = $(this).prev('.selectbox.cargo_type').find('input').val();
                calc.values.cargo_type = selectedValue;
                calc.values.cargo_type_text = $(this).find('.option').eq(parseInt(selectedValue)).text();
                if (calc.values.direction_main == 1) {
                    var cargoVolumes = [];
                    for (var i=0; i<=calc.moscowValues.length-1; i++) {
                        if (calc.moscowValues[i].car_type == calc.values.vehicle_type_text
                            && calc.moscowValues[i].cargo_type == calc.values.cargo_type_text
                            && !in_array(calc.moscowValues[i].cargo_volume, cargoVolumes)) 
                        {
                            cargoVolumes.push( calc.moscowValues[i].cargo_volume );
                        }
                    }
                    
                    $('.selectbox.cargo_volume').next('.options').html('<div class="option default">Какой объём кузова?</div>');
                    for (var i=0; i <= cargoVolumes.length - 1; i++) {
                        $('.selectbox.cargo_volume').next('.options').append('<div class="option">'+ cargoVolumes[i] +'</div>')
                    }
                    calc.showSelectbox('cargo_volume');
                } else if (calc.values.direction_main == 2) {
                    if (calc.values.direction_city != '') {
                        $('.result_info p span.value').html( calc.calcPrice() + ' руб.');
                        $('.result_info').show();
                    } else {
                        calc.showSelectbox('direction_city');
                    }
                }
                $('.calc_form .options .option').click(function() {
                    $('.calc_form .selectbox.active input').val( $(this).index() );
                    $('.calc_form .selectbox.active .value').html( $(this).html() );
                    closeSelectBox($('.calc_form .selectbox.active'));
                });
            });
            
            $('.selectbox.cargo_volume').next('.options').click(function() {
                var selectedValue = $(this).prev('.selectbox.cargo_volume').find('input').val();
                calc.values.cargo_volume = selectedValue;
                calc.values.cargo_volume_text = $(this).find('.option').eq(parseInt(selectedValue)).text();
                
                for (var i=0; i<=calc.moscowValues.length-1; i++) {
                    if (calc.moscowValues[i].car_type == calc.values.vehicle_type_text
                        && calc.moscowValues[i].cargo_type == calc.values.cargo_type_text
                        && calc.moscowValues[i].cargo_volume == calc.values.cargo_volume_text) 
                    {
                        $('.result_info p span.value').html( calc.moscowValues[i].price + ' руб.');
                        $('.result_info').show();
                    }
                }
            });
            
            $('.selectbox.direction_city').next('.options').click(function() {
                
                var selectedValue = $(this).prev('.selectbox.direction_city').find('input').val();
                calc.values.direction_city = selectedValue;
                if (calc.values.direction_main == 2) {
                    $('.result_info p span.value').html( calc.calcPrice() + ' руб.');
                    $('.result_info').show();
                }
            });
            
            $('.calc_form .options .option').click(function() {
                $('.calc_form .selectbox.active input').val( $(this).index() );
                $('.calc_form .selectbox.active .value').html( $(this).html() );
                closeSelectBox($('.calc_form .selectbox.active'));
            });
        }
    };
    calc.init();
    
    $('.content.transportation .notation .title_button, .content.transportation_regions .notation .title_button').click(function() {
        var $notation = $(this).parent('.notation');
        if ( $notation.hasClass('closed') ) {
            $notation.removeClass('closed');
            slider.styleFix();
            slider.placeSlides();
        } else {
            $notation.addClass('closed');
            slider.styleFix();
            slider.placeSlides();
        }
    });
    
    $('.content.company_mission .slide_switcher .item').click(function() {
        $('.content.company_mission .slide_switcher .item.active').removeClass('active');
        $(this).addClass('active');
        $('.content.company_mission .slideshow .mission_slides .mission_slide.active').removeClass('active');
        $('.content.company_mission .slideshow .mission_slides .mission_slide.active').next('.mission_slide_title').hide();
        $('.content.company_mission .slideshow .mission_slides .mission_slide').eq( $(this).index() ).addClass('active');
        $('.content.company_mission .slideshow .mission_slides .mission_slide').eq( $(this).index() ).next('.mission_slide_title').show();
    });
    
    $('.content.corp_life .album a').click(function() {
        var cat_id = $(this).parent('.album').attr('id').slice(6);
        $('.content.corp_life .blackout').show();
        $('.content.corp_life div#album_photos_' + cat_id).css({
            left: $(window).width()/2 - $('.content.corp_life div#album_photos_' + cat_id).width()/2,
            top: 200
        }).show();
        });
        
    $('.content.team .employees_list .employee').click(function() {
        $('.content.team .employees_list .employee.active').removeClass('active');
        $(this).addClass('active');
        $('.content.team .employees_full .employee.active').removeClass('active');
        $('.content.team .employees_full .employee').eq( $(this).index() ).addClass('active');
    });
    
    $('.content.best_trans_decision .request_form .field.phone input').mask("+7 (999) 999-99-99");
    
    $('.content.send_message .message_form .submit').click(function() {
        var clientName = $('.content.send_message .message_form .client_name').val();
        var clientPhone = $('.content.send_message .message_form .client_phone').val();
        var clientMessage = $('.content.send_message .message_form .client_message').val();
        if (clientName != '' && clientPhone != '' && clientMessage != '') {
            $.ajax({
               type: "POST",
               url: "/",
               data: 'mode=request_form&request_form[client_name]='+clientName+'&request_form[client_phone]='+clientPhone+'&request_form[client_message]='+clientMessage,
               success: function(response){
                   alert('Сообщение отправлено!');
               }
            });
        } else {
            alert('Заполните все поля!');
        }
        
    });
    
    $('.content.best_trans_decision .request_form .submit').click(function() {
        var dataToSend = {
            mode: 'btd',
            client_name: $('.content.best_trans_decision .request_form .client_name').val(),
            client_phone: $('.content.best_trans_decision .request_form .client_phone').val(),
            client_email: $('.content.best_trans_decision .request_form .client_email').val(),
            offers: []
        };
        
        $('.content.best_trans_decision .offers_box .offer.selected').each(function() {
            dataToSend.offers.push({
                name: $(this).find('a.title').text(),
                descr: $(this).find('.descr').text()
            });
        });
        if (dataToSend.offers.length == 0) {
            alert('Нужно выбрать хотя бы одно предложение');
            return false;
        }
        
        if (dataToSend.client_name != '' && dataToSend.client_phone != '' && dataToSend.client_email != '') {
            $.ajax({
               type: "POST",
               url: "/",
               dataType: 'json',
               data: dataToSend,
               success: function(response){
                   alert('Запрос послан.');
               }
            });
        } else {
            alert('Заполните все поля!');
        }
    });
    
    slider.placeSlides();
    slider.styleFix();
    
});
