  var caruselIntervalId, caruselTimeInterval = 7000;

  function caruselInit() {
    var autoscroll = null;
    var btnNext = null;
    var btnPrev = null;
    
    if ($(".scroll").find("li").length > 4) {
      autoscroll = 1000;
      btnNext = ".next";
      btnPrev = ".prev";
    }
    
    $(".scroll").jCarouselLite({
      btnNext: btnNext,
      btnPrev: btnPrev,
      visible: 4,
      speed: 1000,
      auto: autoscroll
    });
    
    /*
    caruselIntervalId = setInterval("$('.next').trigger('click');", caruselTimeInterval);
    $('.mScrollMain .scroll li').mouseover(function(){
      clearInterval(caruselIntervalId);
      return false;
    });
    */
  }
  
  function getPrice(val) {
    var txt = "";
    valueLength = val.toString().length;
    valueLength = (valueLength-valueLength%3)/3;
    for ( var i = 0; i < valueLength; i++) {
      txt =" "+val.toString().substr(-3*(i+1),3)+txt;
      if ((i+1) == valueLength && valueLength != val.toString().length) {
        txt = val.toString().substr(0, val.toString().length-valueLength*3)+txt;
      }
    }
    return txt;
  }
  
  function setSliderRange(input) {
    var value = input.value;
    var rep = /[^\d]/;
    if (rep.test(value)) {
      value = value.replace(rep,'');
      input.value = value;
    }
  }
  
  function buttonStart() {
    $( ".button" ).button({});
  }
  
  function specProjectPageAnimate() {
    $(".mSupplyDesc div:not(.last) a").click(function(){
      if (!$.browser.opera) {
        id = $(this).attr("href");
        $('html,body').animate({scrollTop:$(id).offset().top}, 'slow');
      }
    })
  }
  
  function showLocateInfo() {
       $('.mScrollMain .scroll li')
       .mouseover(function(e){
         var positionX = e.pageX - $('.mScrollMain').offset().left
         var offset = $(this).offset();
         var top = offset.top-25;
         var left = offset.left-15;
         var picBlock = $(this).find('.picBlock').clone();
         var descriptionContent = $(this).find('.descriptionBlock').html();
         if (positionX > 490) {
           picBlock = $(this).find('.picBlock').clone().css({"float":"right", "margin":"20px 12px 0 0"});
           left = left-318;
         }
         if (positionX < 490) {
           $('#specProjectDescription').html("<table class='specSlider'><tr><td>"+picBlock.html()+"</td><td>"+descriptionContent+"</td></tr></table>").css('top',top).css('left',left).fadeIn();
         } else {
           $('#specProjectDescription').html("<table class='specSlider'><tr><td>"+descriptionContent+"</td><td>"+picBlock.html()+"</td></tr></table>").css('top',top).css('left',left-20).fadeIn();
           $('#specProjectDescription .specSlider tr td:not(:first) a img').css({'margin-right':'17px', 'margin-top':'29px'});
         }
         $('#specProjectDescription a.descriptionLink, #specProjectDescription p').wrapAll('<div style="margin-left:5px;"></div>');
         clearTimeout(timeout);
       });
     var timeout = null;
     $('#specProjectDescription').mouseout(function(){
       timeout = setTimeout(function() {specProjectHide()},200);
     })
     .mouseover(function(){ 
      clearTimeout(timeout); 
       });
  }
  
  function specProjectHide() {
    $('#specProjectDescription').fadeOut();
    caruselIntervalId = setInterval("$('.next').trigger('click');", caruselTimeInterval);
  }
  
  function showPhoneWindow() {
    var id, t;
    $('.contacts *, .largeNumber *').mouseover(function(){
      clearTimeout(id);
      t = setTimeout("$('.visualSmallWindow').fadeIn();", 1500);
      return false;
    });
    $('.contacts *, .largeNumber *').click(function(){
      clearTimeout(t);
      $('.visualSmallWindow').fadeIn();
    })
    $('.contacts *, .largeNumber *').mouseout(function(){
      clearTimeout(t);
      id = setTimeout("$('.visualSmallWindow').fadeOut();", 200); 
      return false;
    }); 
  }
  
  function printPage() {
    $('.printInfo a, .mSupplyDesc .last a').click(function(){
      window.print();
    });
  }
  
  /*
  function floatingMenuInit() {
    var scroll, menuTop = parseInt($('.mSupplyDesc').css("top"));
    $(window).scroll(function(){
      scroll = document.body.scrollTop;
      if (scroll < 173) {
        $('.mSupplyDesc').css("top", (menuTop-scroll)+"px");
      } else {
        $('.mSupplyDesc').css("top", "20px");
      }
    })
  }
  */
  
  function floatingMenuInit() {
    var scroll;
    $('.mSupplyDesc').css("position", "absolute");
    
    var offset = $('.mSupplyDesc').offset();
    if (offset != null) {
      var menuTop = parseInt(offset.top);
      
      $(window).scroll(function(){
        scroll = document.body.scrollTop;
        
        if (scroll > menuTop) {
          $('.mSupplyDesc').css("top", scroll + "px");
        } else {
          $('.mSupplyDesc').css("top", menuTop + "px");
        }
      });
    }
  }
  
  function switchPictApartment() {
    k = 6;
    k2 = 3;
    if($.browser.mozilla) {
      k = 4;
      k2 = 4
    } else if ($.browser.opera) {
      k = 2;
      k2 = 0;
    }
    var c = $('.mPhoto .photoApartment table img').length%6;
    if (c != 0) {
      l = 90;
    } else {
      l = 0;
    }
    $('.mPhoto .next').click(function() {
      var newTop = $('.mPhoto .photoApartment table').css('top').slice(0, -2)*1 - 180;
      var bottom = -1*$('.mPhoto .photoApartment table').height()+2*90;
      if (newTop+20+l <= bottom){
        $('.mPhoto .photoApartment table').animate({'top':'0px'}, 200);
      } 
      if (newTop+20+l > bottom) {
        $('.mPhoto .photoApartment table').animate({'top':newTop-k2+'px'}, 500 );
      }
      return false;
    });
    
    $('.mPhoto .prev').click(function() {
      var newTop = $('.mPhoto .photoApartment table').css('top').slice(0, -2)*1 +90;
      if (newTop-20 >= 0){
        h = $('.mPhoto .photoApartment table').height()-(90*2);
        $('.mPhoto .photoApartment table').animate({'top':'-'+h+'px'});
      } 
      if (newTop-20 <= 0){
        $('.mPhoto .photoApartment table').animate({'top':newTop+k+'px'}, 500 );
      }
      return false;
    });
  }
  
  function tableColorsInit() {
    $('.ratingTable tbody tr:eq(0)').addClass('rFirstPlace');
    $('.ratingTable tbody tr:eq(1)').addClass('rSecondPlace');
    $('.ratingTable tbody tr:eq(2)').addClass('rThirdPlace');
    $('.ratingTable tbody tr:odd').addClass('rColored');
    $('.ratingTable tbody tr').mouseover(function () {
      $(this).addClass('rHovered');
    }).mouseout(function () {
      $(this).removeClass('rHovered');
    });
  }
  
  function realtyTypeBind() {
    //Навешивание на галочки-предки
    $("ul.firstLevel > li > input").click(function() {
      var checked = $(this).attr("checked");
      $(this).parent().find(".secondLevel input").each(function() {
        if ($(this).attr("checked") != checked) $(this).click();
      })
    });
    
    //Навешивание на галочки-потомки
    //Квартиры
    $(".apartement input").click(function(e) {
      switch ($(this).attr("id")) {
        case "param1":
          parameter = 1;
        break;
        case "param2":
          parameter = 2;
        break;
        case "param3":
          parameter = 3;
        break;
        case "param4":
          parameter = 4;
        break;
      }
      
      // По умолчанию эмулированный клик
      var checked = ! $(this).is(':checked');
      if (e.pageX != null){
        // Это реальный клик
        checked = $(this).is(':checked');
      }
      
      yMap.markAddresses(checked, 509, parameter, "/gfx/yandex/map" + parameter + ".png");
    });
    
    //Коммерческая недвижимость
    $(".commercial input").click(function(e) {
      switch ($(this).attr("id")) {
        case "param6":
          parameter = 1;
          style = "default#shopIcon";
        break;
        case "param7":
          parameter = 2;
          style = "default#factoryIcon";
        break;
        case "param8":
          parameter = 3;
          style = "default#storehouseIcon";
        break;
        case "param9":
          parameter = 4;
          style = "default#buildingsIcon";
        break;
        case "param10":
          parameter = 6;
          style = "default#carIcon";
        break;
        case "param11":
          parameter = 7;
          style = "default#houseIcon";
        break;
      }
      
      // По умолчанию эмулированный клик
      var checked = ! $(this).is(':checked');
      if (e.pageX != null){
        // Это реальный клик
        checked = $(this).is(':checked');
      }
      
      yMap.markAddresses(checked, 511, parameter, style);
    });
    
    //Аренда
    $(".bail input").click(function(e) {
      switch ($(this).attr("id")) {
        case "param12":
          parameter = 1;
        break;
        case "param13":
          parameter = 2;
        break;
        case "param14":
          parameter = 3;
        break;
        case "param15":
          parameter = 4;
        break;
      }
      
      // По умолчанию эмулированный клик
      var checked = ! $(this).is(':checked');
      if (e.pageX != null){
        // Это реальный клик
        checked = $(this).is(':checked');
      }
      
      yMap.markAddresses(checked, 512, parameter, "/gfx/yandex/map" + parameter + ".png");
    });
  }
  
  function orderRows(realtyType, page, orderBy) {
    var e = $(".apartmentSort");
    e.find(".makeSortActive").removeClass("makeSortActive").addClass("makeSort");
    e.find("a:eq(" + (orderBy - 1) + ")").removeClass("makeSort").addClass("makeSortActive");
    
    da_orderRealtyObjects(realtyType, $("#condition").val(), orderBy, page);
  }
  
  function goOnPage(page) {
    var href = location.href.replace(/go\/\d+\/?/, '');
    
    //Поместить в адрес orderBy
    var orderby = $("#orderby").val();
    if (orderby != '') {
      if (!(/\?sort=/.test(href))) {
        var sign = '?';
        if (/\?/.test(href)) sign = '&';
        href += sign + 'sort=' + orderby;
      } else href = href.replace(/(\?sort=)\d+/, "$1" + orderby);
    }
    pageAddress = "go/" + page + "/";
    if (/\?/.test(href)) href = href.replace(/(\?.+$)/, pageAddress + "$1"); else href += pageAddress;
    
    //Переход
    location.href = href;
  }
  
  function objectPicSlider() {
    $('.photoApartment table')
    .mouseout(function(){
      k = picTimer();
    })
    .mouseover(function(){
      clearInterval(k);
    });
    $('.mPhoto .prev a, .mPhoto .next a')
    .mouseover(function(){
      clearInterval(k);
    })
    .mouseout(function(){
      k = picTimer();
    });
    k = picTimer();
  }
  
  function picTimer() {
    var obj = $(".photoApartment table img");
    var cnt = obj.length;
    var index, t;
    t = setInterval(function(){
      index = $(".photoApartment table img").index($('.cur'))
      if (index + 1 == cnt) {
        index = -1;
        //var e = $('.mPhoto .next');
        //insertPhoto(e, e.attr("mpath"), e.attr("href"));
        $('.mPhoto .next').click();
      }
      
      if ((index + 1) %6 == 0) {
        //var e = $('.mPhoto .next');
        //insertPhoto(e, e.attr("mpath"), e.attr("href"));
        $('.mPhoto .next').click();
      }
      
      var e = obj.eq(index + 1).parent();
      insertPhoto(e, e.attr("mpath"), e.attr("href"));
      //obj.eq(index+1).parent().click();
    }, 3000);
    return t;
  }
  
  function insertPhoto(e, path, bigPhoto) {
    $(".photoApartment").find("img").removeClass("cur");
    $(".placeForLargePic").find("a").attr("href", bigPhoto);
    $(".placeForLargePic").find("img").attr("src", path);
    e.find("img").addClass("cur");
  }
  
  function addToRealtyTypeArray(realtyType, key1, value1, key2, value2) {
    var object = {};
    if (typeof(realtyTypeInformation[realtyType]) != "undefined") {
      object = realtyTypeInformation[realtyType];
    }
    object[key1] = value1;
    object[key2] = value2;
    realtyTypeInformation[realtyType] = object;
  }
  
  function sliderStart(minimum, maximum, valueMin, valueMax) {
    //alert(minimum + " - " + maximum + " - " + valueMin + " - " + valueMax);
    
    var i, txt1, txt2;
    $("#amount1").css({'width':'55', 'margin-left':'2', 'margin-right':'0'});
    
    if ((arguments.length < 3) || isNaN(valueMin) || (parseInt(valueMin) == 0) || isNaN(parseInt(valueMin))) valueMin = minimum;
    if ((arguments.length < 4) || isNaN(valueMax) || (parseInt(valueMax) == 0) || isNaN(parseInt(valueMax))) valueMax = maximum;
  
    //alert(minimum + " - " + maximum + " - " + parseInt(valueMin) + " - " + parseInt(valueMax));
    
    $(".slider-range").slider({
      range: true,
      min: minimum,
      max: maximum,
      values: [valueMin, valueMax],
      slide: function(event, ui) {
        txt1 = getPrice(ui.values[0]);
        txt2 = getPrice(ui.values[1]);
        $("#amount").val(txt1);
        $("#amount1").val(txt2);
      }
    });
    
    //$("#amount").val(getPrice($(".slider-range").slider("values", 0)));
    //$("#amount1").val(getPrice($(".slider-range").slider("values", 1)));
  }
  
  function sliderForRoom(minimum, maximum, valueMin, valueMax){
    if (arguments.length < 3 || !valueMin) valueMin = minimum;
    if (arguments.length < 4 || !valueMax) valueMax = maximum;
    
    $( ".slider-range1" ).slider({
      range: true,
      min: minimum,
      max: maximum,
      values: [valueMin, valueMax],
      slide: function( event, ui ) {
        $( "#amount2" ).val(ui.values[0]);
        $( "#amount3" ).val(ui.values[1]);
      }
    });
    $( "#amount2" ).val($( ".slider-range1" ).slider( "values", 0 ));
    $( "#amount3" ).val($( ".slider-range1" ).slider( "values", 1 ) );
  }
  
  function sliderForApartment(minimum, maximum, valueMin, valueMax){
    if (arguments.length < 3 || !valueMin) valueMin = minimum;
    if (arguments.length < 4 || !valueMax) valueMax = maximum;
    
    $( ".slider-range2" ).slider({
      range: true,
      min: minimum,
      max: maximum,
      values: [valueMin, valueMax],
      slide: function( event, ui ) {
        $( "#amount4" ).val(ui.values[ 0 ] );
        $( "#amount5" ).val(ui.values[ 1 ] );
      }
    });
    $( "#amount4" ).val($( ".slider-range2" ).slider( "values", 0 ));
    $( "#amount5" ).val($( ".slider-range2" ).slider( "values", 1 ));
  }
  
  function setupSearchParametersFromRealtyType(realtyType, minPrice, maxPrice, minCount, maxCount, minSquare, maxSquare) {
    //var realtyType = $("[name=realty_type]").val();
    
    //Для следующих типов убрать комнаты
    if (realtyType == 4 || realtyType == 5) {
      $("#scrollerRoom").hide();
    } else $("#scrollerRoom").show();
    
    //Для следующих типов убрать материал
    if (realtyType == 4 || realtyType == 6) {
      $("#material_info").hide();
    } else $("#material_info").show();
    
    //Показатели Цена, Комнаты и Площадь для каждого типа недвижимости настраиваются индивидуально
    //Цена есть для всех типов недвижимости
    if (typeof(realtyTypeInformation) != "undefined" && typeof(realtyTypeInformation[realtyType]) != "undefined") {
      var object = realtyTypeInformation[realtyType];

      //Для цены
      var e = $("#scrollerPrice");
      e.find(".amountData:first").html(object.minPrice);
      e.find(".amountData:last").html(object.maxPrice);
      sliderStart(parseInt(object.minPrice.replace(/\s/g, '')), parseInt(object.maxPrice.replace(/\s/g, '')), minPrice, maxPrice);
      
      //Количество комнат
      if (typeof(object.minCount) != "undefined" && typeof(object.maxCount) != "undefined") {
        var e = $("#scrollerRoom");
        e.find(".amountData:first").html(object.minCount);
        e.find(".amountData:last").html(object.maxCount);
        sliderForRoom(parseInt(object.minCount), parseInt(object.maxCount), minCount, maxCount);
      }
      
      //Общая площадь
      if (typeof(object.minSquare) != "undefined" && typeof(object.maxSquare) != "undefined") {
        var e = $("#scrollerSquare");
        e.find(".amountData:first").html(object.minSquare);
        e.find(".amountData:last").html(object.maxSquare);
        sliderForApartment(parseFloat(object.minSquare), parseFloat(object.maxSquare), minSquare, maxSquare);
      }   
    }
  }
  
  function colorizeRealtorRatingTable() {
    $('table.cRealtorRating tr:nth-child(even)').addClass('evenTr');
  }
  
  //Работа с Yandex-картами
  //var map, geoResult;
  
  function showAddress(latitude, longitude, strAddress) {
      //if (typeof(map) == "undefined") {
        var map = new YMaps.Map(document.getElementById("YMapsContainer"));
        map.addControl(new YMaps.ToolBar()); //панель инструментов с кнопками, позволяющими перемещать карту, увеличивать ее, а также измерять расстояние на карте с помощью специальной линейки
        map.addControl(new YMaps.Zoom()); //элемент масштабирования, который позволяет менять разрешение карты с определенным шагом
        map.addControl(new YMaps.ScaleLine()); //элемент карты "Масштабная линейка" (scale line), позволяющий измерять расстояние между объектами, не прибегая к вычислениям
  
        var geocoder = new YMaps.Geocoder(new YMaps.GeoPoint(latitude, longitude), {results: 1, boundedBy: map.getBounds()});
        YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
            if (this.length()) {
                //map.addOverlay(this.get(0));
                map.panTo(this.get(0).getGeoPoint());
                
                //Вид балуна
                var s = new YMaps.Style();
                s.balloonContentStyle = new YMaps.BalloonContentStyle(
                    new YMaps.Template('<div style="color:#0A0;">$[description]</div>')
                );
    
                //Создание метки в точке с заданными географическими координатами
                var placemark = new YMaps.Placemark(new YMaps.GeoPoint(latitude, longitude), {style: s});
                
                if (this.get(0).precision != "exact") {
                  //В случае, если адрес приблизительный, выводим его, а не тот, который искали
                  var obj = this.get(0).AddressDetails["Country"]["AdministrativeArea"]["Locality"]["Thoroughfare"];
                  var ulica = obj["ThoroughfareName"];
                  var dom = obj["Premise"]["PremiseNumber"];
                  strAddress = ulica + ", " + dom;
                }
                
                placemark.description = strAddress;
                placemark.setBalloonOptions({hasCloseButton: false});
                map.addOverlay(placemark);
                
                placemark.openBalloon();
                
                var maxZoom = map.getMaxZoom();
                var myZoom = (maxZoom > 15) ? 15 : maxZoom;
                map.setZoom(myZoom);
            }
        });
  
        YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) {
            alert("Произошла ошибка: " + error);
        });
  }
  
  function showNAddress(latitude, longitude, strAddress) {
    YMaps.jQuery(function () {
      //Народная карта
      var map = new YMaps.Map(document.getElementById("YMapsContainer") );
      
      map.addControl(new YMaps.TypeControl([YMaps.MapType.PMAP, YMaps.MapType.PHYBRID]));
      map.addControl(new YMaps.ToolBar());
      map.addControl(new YMaps.Zoom());
      map.addControl(new YMaps.ScaleLine());
          
      map.setCenter(new YMaps.GeoPoint(latitude, longitude), 15, YMaps.MapType.PMAP);
      
      // Создание стиля для содержимого балуна
      var s = new YMaps.Style();
      s.balloonContentStyle = new YMaps.BalloonContentStyle(
        new YMaps.Template("<div style=\"color:green\">$[description]</div>")
      );
      
      // Создание метки с пользовательским стилем и добавление ее на карту
      var placemark = new YMaps.Placemark(new YMaps.GeoPoint(latitude, longitude), {style: s} );
      placemark.description = strAddress;
      map.addOverlay(placemark);
      
      // Открытие балуна
      placemark.openBalloon();
      
      var maxZoom = map.getMaxZoom();
      var myZoom = (maxZoom > 15) ? 15 : maxZoom;
      map.setZoom(myZoom);
    });
  }
  
  function switchMaps() {
    $('.mapContent').hide().filter(':eq(0)').show();
    $('.mapView a').click(function(){
      $(this).addClass('active').removeClass('passive');
      var index = $('.mapView a').index(this);
      $('.mapView a:not(:eq(' + index + '))').addClass('passive');
      $('.mapView a:not(:eq(' + index + '))').removeClass('active'); 
      $('.mapContent').hide();
      $('.mapContent').filter(':eq(' + index + ')').show();
      return false;
    });
  }
  
  function getDataFromTabs(link) {
    var e = $("#orderType .active");
    if (e.length) {
      //alert(link);
      link = link.replace(/\&?tabsType\=\d{1}&?/, '');
      link += '&tabsType=' + e.attr("rel");
    }
    
    window.location.href = link;
  }
  
  function makeHeaders(){
      $(".accordion").accordion({
       active:false,
       autoHeight: false,
       collapsible: true
      });
     };
   
   function setHeightToBlock() {
     var h = $('body').height();
     $('.online-trans').height(h);
   }

  function changeBlockColor() {
    $(function(){
      $(".hHead .action").css('background','none');
      setTimeout(function(){$(".hHead .action").css('background','url("/gfx/act.jpg") no-repeat scroll 0 0 transparent');
                            setInterval(function(){$(".hHead .action").css('background','url("/gfx/act1.jpg") no-repeat scroll 0 0 transparent');},1800)
      },1100);  
      setInterval(function(){$(".hHead .action").css('background','url("/gfx/act.jpg") no-repeat scroll 0 0 transparent');},1800)
  
    });
  }
  
  function showReserveOptions(e) {
    var pos = e.offset();
    
    if (pos != null && typeof(pos.left) != "undefined") {
      //alert(pos.left + " - " + pos.top);
      
      $('#reserveOptions').css({
          'left': pos.left + 600 + 'px',
          'top': pos.top - 200 + 'px'
      });
    }
    $("#reserveOptions").toggle();
  }
  
  function sendReserveMessage(idObjectRealty) {
    var e = $("#reserveOptions");
    var message = new Array();
    
    var m = $.trim(e.find("[name=message]").val());
    var c = $.trim(e.find("[name=contacts]").val());
    
    if (m == "") message.push('Заполните поле "Сообщение"');
    if (c == "") message.push('Заполните поле "Контактные данные"');
    
    (message.length) ? alert(message.join("\n")) : da_sendReserveMessage(idObjectRealty, m, c);
  }
