jQuery.timer = function(interval, callback) {
    /**
    *
    * timer() provides a cleaner way to handle intervals  
    *
    *	@usage
    * $.timer(interval, callback);
    *
    *
    * @example
    * $.timer(1000, function (timer) {
    * 	alert("hello");
    * 	timer.stop();
    * });
    * @desc Show an alert box after 1 second and stop
    * 
    * @example
    * var second = false;
    *	$.timer(1000, function (timer) {
    *		if (!second) {
    *			alert('First time!');
    *			second = true;
    *			timer.reset(3000);
    *		}
    *		else {
    *			alert('Second time');
    *			timer.stop();
    *		}
    *	});
    * @desc Show an alert box after 1 second and show another after 3 seconds
    *
    * 
    */

    var interval = interval || 100;

    if (!callback)
        return false;

    _timer = function(interval, callback) {
        this.stop = function() {
            clearInterval(self.id);
        };

        this.internalCallback = function() {
            callback(self);
        };

        this.reset = function(val) {
            if (self.id)
                clearInterval(self.id);

            var val = val || 100;
            this.id = setInterval(this.internalCallback, val);
        };

        this.interval = interval;
        this.id = setInterval(this.internalCallback, this.interval);

        var self = this;
    };

    return new _timer(interval, callback);
};


var config = {
    qnt: 4, // numbers of scrolling items
    qntItems: 4,
    offset: 115,
    timer: 2000
};


//var active = 1;
//var timeout = 6000;

if (active > 0) {
    //setTimeout("$().anything", delaytime); 
    var second = 2;
    var myTimer = $.timer(timeout, function(timer) {
            //For first time, twice delay
            if (second != 0) {
                second--;
            } else {
                slideNext(globObj, currentIndex);
            }
        });
}

var currentIndex;
//ILIAS


var t;
var inAction = false;

var firstIndex = 0;
var lastIndex = config.qntItems - 1;

var carousel_list = new Array();
var globObj;
function init(obj) {
    var wl = window.location + '', curFrame = 1;
    var objLI = obj.find('li');
    objLI.each(function(i) {
            k = i + 1;
            objLI.eq(i).addClass('item' + k);
            objLI.eq(i).find('.link').append('<i class="title bem-iefix_scaled">' + objLI.eq(i).find('img').attr('title') + '</i><i class="c t"></i><i class="c b"></i>');
            if (wl.indexOf(objLI.eq(i).find('.text .t a').attr('href')) > 0) curFrame = i + 1;
        });
    for (i = 0; i < objLI.length; i++) {
        carousel_list[i] = objLI.eq(i).html();
    }

    var curPage = Math.floor(curFrame / config.qntItems);
    var dd = curFrame % config.qntItems;
    if (dd == 0) curPage = curPage - 1;
    curFrame = curFrame - config.qntItems * curPage;

    lastIndex = curPage * config.qntItems - 1;
    var addArray = '';
    for (i = 0; i < config.qntItems; i++) {

        lastIndex++;
        if (lastIndex >= carousel_list.length) {
            lastIndex = 0;
        }
        k = i + 1;
        addArray = addArray + '<li class="item' + k + '">' + carousel_list[lastIndex] + '</li>';
    }

    firstIndex = lastIndex - config.qntItems + 1;

    if (firstIndex < 0) {
        firstIndex += carousel_list.length;
    }

    obj.html(addArray);
    $('.bem-thumbs').show();
    showPic($('li.item' + curFrame + ' .link'));
    globObj = obj;
}

function moveMask(liIndex) {

    var lOffset;

    if (liIndex != 0) $('.bem-gal .big-img .mask_lb').fadeIn();
    else $('.bem-gal .big-img .mask_lb').fadeOut();
    if (liIndex == config.qntItems - 1) {
        $('.bem-gal .big-img .mask_rb').fadeOut();
        lOffset = 345;
    } else if (liIndex == 2) {
        lOffset = 344;
    } else {
        lOffset = 348;
        $('.bem-gal .big-img .mask_rb').fadeIn();
    }
    $('.bem-gal .big-img .mask').animate({ 'left': liIndex * config.offset - lOffset }, 900);
}

function showPic(obj, par) {
    if (!obj.hasClass('act')) {
        var container = $('.bem-gal .big-img_inner .div');
        var liCur = obj.parents('li');
        var li = obj.parents('li').siblings().andSelf();
        var liIndex = li.index(liCur);
        container.find('.text').remove();

        container.fadeOut('slow', function() {
            //Enabling flash banner
                //Set in db for this banner IsFlash property! Banner can be anyone, but with this property set!
                if (obj.attr('rel') == 'flash' && $.flash.available) {
                    container.html('<div id="flashHere"></div>');
                    $("#flashHere").flash({
                            swf: '/userfiles/flash/B1.swf',
                            width: 460,
                            height: 250
                        });
                } else {
                    container.html('<img src="' + obj.attr('href') + '" alt=""/><a href="' + liCur.find('.text .t a').attr('href') + '" class="big_link"></a>');
                }

                liCur.find('.text').clone().appendTo(container);
                container.find('.t').html(container.find('.t a').text());
                container.fadeIn();
            });

        if (!par) li.removeClass('act').find('.inner').fadeIn();
        $('.title_act').remove();
        liCur.addClass('act');
        liCur.find('.inner').fadeOut();

        liCur.append('<i class="title_act">' + liCur.find('.title').html() + '</i>');

        liIndex = li.index(liCur);
        currentIndex = liIndex + 1; //ILIAS

        moveMask(liIndex);
    }

    if (active > 0) {
        //Reset Timer (6000ms)
        myTimer.reset(timeout);
    }
}

function slideLeft(obj) {
    var addArray = '';

    for (i = 0; i < config.qntItems; i++) {
        firstIndex--;
        if (firstIndex < 0) {
            firstIndex = carousel_list.length - 1;
        }
        k = Math.abs(i - config.qntItems);
        addArray = '<li class="item' + k + '">' + carousel_list[firstIndex] + '</li>' + addArray;
    }
    lastIndex = firstIndex + config.qntItems - 1;

    if (lastIndex >= carousel_list.length) {
        lastIndex -= carousel_list.length;
    }
    moveMask(0);
    obj.html(addArray + obj.html());
    $('li.item1 .inner').fadeOut();

    obj.css("left", -1 * config.offset * config.qntItems);
    var offsetLeft = (parseInt(obj.css("left"))) ? parseInt(obj.css("left")) : 0;

    obj.animate({ "left": offsetLeft + config.offset * config.qntItems }, 1000, function() {
            obj.children().slice(config.qntItems).remove();
            showPic($('li.item1 .link'), 1);
        });
}

function slideRight(obj) {

    var addArray = '';

    for (var i = 0; i < config.qntItems; i++) {

        lastIndex++;
        if (lastIndex >= carousel_list.length) {
            lastIndex = 0;
        }
        var k = i + 1;
        addArray = addArray + '<li class="item' + k + '">' + carousel_list[lastIndex] + '</li>';
    }

    firstIndex = lastIndex - config.qntItems + 1;

    if (firstIndex < 0) {
        firstIndex += carousel_list.length;
    }

    moveMask(0);
    obj.html(obj.html() + addArray);
    $('li.item1 .inner').fadeOut();

    var offsetLeft = (parseInt(obj.css("left"))) ? parseInt(obj.css("left")) : 0;


    obj.animate({ "left": offsetLeft - config.offset * config.qntItems }, 1000, function() {
            obj.children().slice(0, config.qntItems).remove();
            obj.css("left", 0);
            showPic($('li.item1 .link'), 1);
        });
}


//ILIAS

function slideNext(obj, currentIndex) {

    //Indexes(0,1,2,3) - 4 thumbs
    //Если current Index >-4  -  Изменение 4 thumbnailов

    if (currentIndex >= 4) {

        var addArray = '';

        for (var i = 0; i < config.qntItems; i++) {

            lastIndex++;
            if (lastIndex >= carousel_list.length) {
                lastIndex = 0;
            }
            var k = i + 1;
            addArray = addArray + '<li class="item' + k + '">' + carousel_list[lastIndex] + '</li>';
        }

        firstIndex = lastIndex - config.qntItems + 1;

        if (firstIndex < 0) {
            firstIndex += carousel_list.length;
        }

        moveMask(0);
        obj.html(obj.html() + addArray);
        $('li.item1 .inner').fadeOut();

        var offsetLeft = (parseInt(obj.css("left"))) ? parseInt(obj.css("left")) : 0;

        obj.animate({ "left": offsetLeft - config.offset * config.qntItems }, 1000, function() {
                obj.children().slice(0, config.qntItems).remove();
                obj.css("left", 0);
                showPic($('li.item1 .link'), 1);
            });
    } else {
        showPic($('li.item' + (currentIndex + 1) + ' .link'));
    }
}


function tabs(obj) {
    obj.siblings().removeClass('act').removeAttr('style').end().next('dd').andSelf().addClass('act');
}

function pin(obj) {
    var map = $('.bem-map');
    map.find('.act').css('top', 0).removeClass('act');
    map.find('.act2').fadeOut().removeClass('act2');
    map.find('.bem-pin_act').removeClass('bem-pin_act');
    obj.addClass('bem-pin_act');
    obj.find('.bem-pin_inner').addClass('act').css('top', '-9999px');
    obj.find('.bem-map-popup').addClass('act2').fadeIn();
}

function popupRedraw() {
    var pp = $('.bem-photo-popup');
    if (pp.hasClass('bem-photo-popup_act')) {
        var wH = $(window).height();
        var wW = $(window).width();
        if (wW < 1000) wW = 1000;
        var scrollTop = $(window).scrollTop();
        var bl = pp.find('.ad-gallery');
        var h = bl.height();
        var w = bl.width();
        var l = (wW - w) / 2;
        if (h >= wH) {
            t = 0;
        } else {
            t = (wH - h) / 2;
        }
        t = t + scrollTop;
        if ($.browser.msie && $.browser.version == '6.0') {
            bl.css({ 'top': t, 'left': l });
            pp.css({ 'height': $('.bem-wrap').innerHeight(), 'width': $('body').innerWidth() });
        } else {
            pp.css({ 'height': wH, 'width': wW });
            bl.css({ 'top': '50%', 'left': '50%' });
        }
    }
}

function showWindow(obj) {
    $('embed, select').css({ 'visibility': 'hidden' });
    obj.addClass('bem-photo-popup_act').css({ 'left': 0, 'top': 0 });
}

$(window).load(function() {
        var cellC = 3;
        var q = Math.ceil($('.bem-tours .item').length / cellC);
        for (var i = 1; i <= q; i++) {
            var tallest = $('.bem-tours .item').eq((i - 1) * cellC).height();
            for (var j = (i - 1) * cellC; j < (i - 1) * cellC + cellC; j++) {
                if ($('.bem-tours .item').eq(j).height() > tallest) tallest = $('.bem-tours .item').eq(j).height();
            }
            for (j = (i - 1) * cellC; j < (i - 1) * cellC + cellC; j++) {
                $('.bem-tours .item').eq(j).css('height', tallest);
            }
        }
    });
$(window).resize(function() {
        popupRedraw();
    });
$(window).scroll(function() {
        popupRedraw();
    });

function onAviaSelectChange() {
    var fromval = $("#avia_from option:selected");
    var toval = $("#avia_to option:selected");
    var dirTo = fromval.val() + "|" + toval.val();
    var dirFrom = toval.val() + "|" + fromval.val();
    $("input#aviaDepartureDirection").val(dirTo);

    if ($("input[@name=avia_dir_type]:checked").val() == 2) {
        $("input#aviaBackDirection").val(dirFrom);
        $("input#aviaBackDirection").attr('name', 'backDirection');
    } else {
        $("input#aviaBackDirection").val("");
        $("input#aviaBackDirection").attr('name', '');
    }
}

$(document).ready(function() {

        var hch = $('#hotel-card').height();
        var sl = $('.bem-star_links');
        sl.find('.bem-scroll').css('height', hch - sl.prev('.bem-scroll_no').height() - 22);
        var tbsh = hch - $('.bem-scroll_tabs').height() - $('.bem-tabs dt').height() - 25;
        var tbsh2 = hch - $('.bem-scroll_tabs').height() - $('.bem-tabs2 dt').height() - 25;
        $('.bem-tabs dd.act').css('height', tbsh);
        $('.bem-tabs2 dd.act').css('height', tbsh2);
        $('.bem-tabs .bem-scroll').css('height', tbsh - 15);
        $('.bem-tabs2 .bem-scroll').css('height', tbsh2 - 15);
        $('.bem-reserv dt').click(function() {
                tabs($(this));
            });
        $('.bem-tabs dt').click(function() {
                tabs($(this));
            });
        $('.bem-tabs2 dt').click(function() {
                tabs($(this));
            });
        $('.bem-cat-list td div').append('<i class="ibg"></i><i class="ibg2"></i>');
        var h = new Array($('.bem-contacts1 .bem-round_inner'), $('.bem-contacts2 .bem-round_inner'), $('.bem-contacts3 .bem-round_inner'));
        var max = h[0].height();
        for (var i = 0; i < 3; i++) {
            if (h[i].height() > max) max = h[i].height();
        }
        for (i = 0; i < 3; i++) {
            h[i].height(max);
        }
        $('.bem-btn a').add($('.bem-btn input')).each(function() {
                $(this).hover(function() {
                        $(this).parents('.bem-btn').addClass('bem-btn_active');
                    }, function() {
                        $(this).parents('.bem-btn').removeClass('bem-btn_active');
                    });
            });
        $('.bem-nav .act').css({ 'position': 'static' });
        $('.bem-nav .submenu li:last').addClass('last').find('a').append('<i></i>');
        $('.bem-nav .submenu').each(function() {
                $('<iframe style="height: ' + $(this).height() + 1 + 'px"></iframe>').insertBefore($(this));
            });
        $('.bem-reserv .input-text').datepicker({
                showOn: 'button',
                buttonImage: '/images/calendar.png',
                buttonImageOnly: true,
                monthNames: ['Январь / January', 'Февраль / February', 'Март / March', 'Апрель / April', 'Май / May', 'Июнь / June', 'Июль / July', 'Август / August', 'Сентябрь / September', 'Октябрь / October', 'Ноябрь / November', 'Декабрь / December'],
                dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
                firstDay: 1,
                nextText: 'Следующий',
                prevText: 'Предыдущий',
                buttonText: '',
                dateFormat: 'dd-mm-yy'
            });
        onAviaSelectChange();
        $('.bem-reserv .mzt_avia .input-text').datepicker("option", "dateFormat", "yy-mm-dd");
        $("#avia_from").change(onAviaSelectChange);
        $("#avia_to").change(onAviaSelectChange);

        currentIndex = 1; //ILIAS

        var obj = $('.bem-thumbs ul');
        //var objLeft = parseInt(obj.css('left'));
        init(obj);
        if (carousel_list.length > config.qntItems) {
            $('.bem-thumbs .right').click(function() {
                    if (active > 0) {
                        //Stop slideshow								  
                        myTimer.stop();
                    }
                    slideRight(obj);
                });
        } else {
            $('.bem-thumbs .right').hide();
        }
        $('.bem-thumbs .left').click(function() {
                if (active > 0) {
                    //Stop slideshow								  
                    myTimer.stop();
                }
                slideLeft(obj);
            });
        obj.find('.link').live('click', function() {
                if (active > 0) {
                    //Stop slideshow								  
                    myTimer.stop();
                }
                showPic($(this));
                return false;
            });
        $('img.img_left').wrap('<div class="img_left"></div>').parent().append('<i class="lt"></i><i class="rt"></i><i class="lb"></i><i class="rb"></i>');
        $('table.table2 tr:nth-child(even)').addClass('even');
        $('.bem-pin_inner').click(function() {
                pin($(this).parent());
            });
        $('.bem-hotel_list .title > a').mousemove(function(e) {
                var popup = $(this).parent().find('.bem-popup');
                var ttl = $(this).parent();
                if (!popup.hasClass('bem-popup_act')) {
                    $('.bem-hotel_list .title').removeClass('title_act');
                    $('.bem-hotel_list .bem-popup').removeClass('bem-popup_act');
                    ttl.addClass('title_act');
                    var dw = ttl.width() - 390;
                    if (dw > 0) popup.css('left', -dw);
                    popup.addClass('bem-popup_act');
                }
            });
        $('.bem-popup_close').click(function() {
                $(this).parent().removeClass('bem-popup_act');
            });
        $('.bem-popup_pr').mouseover(function() {
                var popup = $(this).find('.bem-popup');
                if (!popup.hasClass('bem-popup_act')) {
                    $('.bem-popup').removeClass('bem-popup_act');
                    popup.addClass('bem-popup_act');
                }
            }).mouseout(function() {
                    var popup = $(this).parent().find('.bem-popup');
                    popup.removeClass('bem-popup_act');
                });
        $('.bem-filter_hotel .advanced a').click(function() {
                var fil = $('.bem-filter_hotel');
                var ab = fil.find('.advanced_block');
                var al = fil.find('.advanced span');
                ab.slideToggle(600, function() {
                        if (!ab.hasClass('advanced_block_act')) {
                            ab.addClass('advanced_block_act');
                            fil.addClass('bem-filter_hotel_act');
                            al.html('скрыть');
                        } else {
                            ab.removeClass('advanced_block_act');
                            fil.removeClass('bem-filter_hotel_act');
                            al.html('показать');
                        }
                    });
                return false;
            });
        $('.bem-link_photo').click(function() {
                showWindow($('#photo-popup'));
                popupRedraw();
                $('.ad-gallery').adGallery({
                        start_at_index: 0,
                        slideshow: {
                            enable: false
                        }
                    });
                return false;
            });
        $('.bem-photos a').click(function() {
                $('embed, select').css({ 'visibility': 'hidden' });
                $('.bem-photo-popup').addClass('bem-photo-popup_act').css({ 'left': 0, 'top': 0 });
                popupRedraw();
                var n = $(this).find('img').attr('class').substring(5) * 1;
                $('.ad-gallery').adGallery({
                        start_at_index: n,
                        slideshow: {
                            enable: false
                        }
                    });
                return false;
            });
        $('.bem-photo-popup .close').click(function() {
                $('embed, select').css({ 'visibility': 'visible' });
                $('.bem-photo-popup').removeClass('bem-photo-popup_act');
                $('.bem-photo-popup').add($('.ad-gallery')).css({ 'top': '-99999px', 'left': '-99999px' });
            });
        $('.bem-nav .cell:last .submenu').addClass('submenu_last');
        if ($('.fb').length > 0)
            $('.fb').fancybox({
                    'overlayOpacity': 0.6,
                    'overlayColor': '#000',
                    'titlePosition': 'inside'
                });
        $('.bem-avia-tt .tbl tr:eq(1)').addClass('tr1');
        $('.bem-avia-tt .th').last().addClass('th_last');
        $('.bem-avia-pp .t').each(function() {
                $(this).find('tr:eq(1)').addClass('tr1');
            });
        $('.bem-avia-pp .t .place').click(function() {
                $(this).parents('.t').find('td').removeClass('place_act');
                $(this).addClass('place_act');
            });
        $('.bem-avia-tt .link').click(function() {
                var tr = $(this).parents('tr');
                if (!tr.hasClass('act')) {
                    tr.addClass('act');
                    tr.find('select').show();
                    tr.find('.td_e').hide();
                    tr.find('.td_d').show();
                    tr.next('.info').find('.bem-avia-pp_wrap').slideToggle(400);
                }
            });
        $('.bem-ap_close').click(function() {
                var tr = $(this).parents('tr');
                tr.find('select').hide();
                tr.next('.info').find('.bem-avia-pp_wrap').slideToggle(400, function() {
                        tr.find('.td_e').show();
                        tr.find('.td_d').hide();
                        tr.removeClass('act');
                    });
            });



                //$("#SelectRegionCombo").msDropDown({ useSprite: 'sprite', visibleRows: 24, rowHeight: 24 });

                $(".srdrop dt a").click(function () {
                    $(".sdrop_panel").toggle();
                });

                $(".sdrop_panel a").click(function () {
                    var text = $(this).html();
                    $(".srdrop dt a span").html(text);
                    $(".srdrop sdrop_panel").hide();
                });

                $(document).bind('click', function (e) {
                    var $clicked = $(e.target);
                    if (!$clicked.parents().hasClass("srdrop"))
                        $(".sdrop_panel").hide();
                });
    });
