

// Заставляет работать свойство placeholder для не webkit-браузеров
// НЕ РАБОТАЕТ для <INPUT type="password">
function attr_placeholder(block) {

	if (!$.browser.webkit) {

		$(block + ' INPUT[placeholder], ' + block + ' TEXTAREA[placeholder]').blur(
				function() {

					if ($(this).val()=='') {
						$(this).val($(this).attr('placeholder'));
						$(this).addClass('m-placeholder');
					}

				}).focus(
				function() {

					$(this).removeClass('m-placeholder');
					if ($(this).val()==$(this).attr('placeholder'))
						$(this).val('');

				}).each(function() {

					if (($(this).val()=='') || ($(this).val()==$(this).attr('placeholder'))) {
						$(this).val($(this).attr('placeholder'));
						$(this).addClass('m-placeholder');
					}

					var form = $(this).closest('FORM');
					if (form.length)
						form.submit(function() {
							if ($(this).val()==$(this).attr('placeholder'))
								$(this).val('');
						});

				});

	}

}
;
$(function() {
	attr_placeholder('');
});


// Визаулизатор AJAX-загрузки
ajaxLoader = {

	add: function(el) {
		el = $(el);
		if (el.css('position')!='absolute')	el.css('position', 'relative');
		if (!$('.b-loader', el).length) {
			$('<div class="b-loader"><div class="b-loader-bg"></div><div class="b-loader-w"><div class="b-loader-bar" style="background-image: url(images/loader.gif?' + (new Date().getTime()) + ');"></div></div></div>').prependTo($(el));
		}
		return $('.b-loader', el);
	},

	setWidth: function(loader, w) {
		loader.width(w + 'px');
	},

	setHeight: function(loader, h) {
		$('.b-loader-bg', loader).height(h + 'px');
		$('.b-loader-bar', loader).css('margin-top', (h - 31)/2 + 'px');
	}

}


/* Выпадающее меню */
$(function(){

    jQuery.popupMenu = {

        shown: null,
        timer: null,

        buildMenu: function(options) {
            if (this.length !== 1)
                throw new Error("Object must content exactly one element.");

            var elements = this.find(options.link);

            $.each(elements, function(index, item) {
                var data = {};
                var self = $(this);

                data.parent = $(item).parent();
                data.submenu = data.parent.find('UL');

                if (1 != data.submenu.length) return;

                $(item).bind('mouseover', data, jQuery.popupMenu.show);
                $(item).bind('mouseleave', data, jQuery.popupMenu.mouseLeaveHandler);
                data.submenu.bind('mouseover', data, jQuery.popupMenu.mouseOverHandler);
                data.submenu.bind('mouseleave', data, jQuery.popupMenu.mouseLeaveHandler);
                
            });
            
        },

        show: function (event) { event.data.submenu.popupMenuShow(); },
        
        mouseOverHandler: function(event) {
            if (jQuery.popupMenu.timer)
                clearTimeout(jQuery.popupMenu.timer);
        },
        
        mouseLeaveHandler: function (event) {
            jQuery.popupMenu.timer = setTimeout(jQuery.popupMenu.hide, 500);
        },

        hide: function() {
            if (jQuery.popupMenu.shown)
                jQuery.popupMenu.shown.popupMenuHide();
        },

        showPopup: function() {
            if (jQuery.popupMenu.timer)
                clearTimeout(jQuery.popupMenu.timer);
            jQuery.popupMenu.timer = null;

            if (!this.length) return;
            if (jQuery.popupMenu.shown)
                if (jQuery.popupMenu.shown == this) return;
                else jQuery.popupMenu.shown.popupMenuHide();
            jQuery.popupMenu.shown = this;
            
            $(this).parent().addClass('cur');
            
            this.fadeIn('fast');
        },

        hidePopup : function() {
            this.fadeOut();
            $(this).parent().removeClass('cur');
            jQuery.popupMenu.shown = null;
        }
        
    };
    jQuery.fn.extend({
        popupMenu: jQuery.popupMenu.buildMenu,
        popupMenuShow: jQuery.popupMenu.showPopup,
        popupMenuHide: jQuery.popupMenu.hidePopup
    });
    
     $('.b-menu').popupMenu({link: 'LI > A'});
    
});


// Раскрывающиеся блоки
$(function(){
	
	$('.js-toggleBlock').click(function(){
		
		var block = $('.js-toggleBlock-'+$(this).attr('rel'));
		
		if (!block.length) return false;
		
		if (block.css('display')=='none') {
			block.slideDown(300);
		} else {
			block.stop(true, true).slideUp(300);
		}
		
		return false;
	});
	
});


/* Филиал */
$(function(){
if (!$('.b-branchMap').length) return;
    
    // Яндекс.Карты
	$('.b-branchMap').each(function(){
        
        var block = $('.map .ya', this);
        
        OBJECTS_MAP_PLACE_ZOOM = 15;
        
        // Определяем координаты, что показывать и где точка
		var centerX = block.data('x');
		var centerY = block.data('y');
		var placemarkX = centerX;
		var placemarkY = centerY;
		var zoom = OBJECTS_MAP_PLACE_ZOOM;
		
		// Создает экземпляр карты и привязывает его к созданному контейнеру
		var map = new YMaps.Map(block[0]);
        
		// Устанавливает начальные параметры отображения карты: центр карты и коэффициент масштабирования
		map.setCenter(new YMaps.GeoPoint(centerX, centerY), zoom);
		
		// Устанавливаем элементы контроля картой
		map.addControl(new YMaps.Zoom());
		var mapSearch = new YMaps.SearchControl({noPlacemark: true});
		map.addControl(mapSearch);
		var typeControl = new YMaps.TypeControl([YMaps.MapType.MAP, YMaps.MapType.SATELLITE, YMaps.MapType.HYBRID], [3]);
		map.addControl(typeControl);
        map.enableScrollZoom(); 
        
        var s = new YMaps.Style();
        s.iconStyle = new YMaps.IconStyle();
        s.iconStyle.href = "/images/map_icon.png";
        s.iconStyle.size = new YMaps.Point(52, 67);
        s.iconStyle.offset = new YMaps.Point(-3, -65);
    
		// Добавляем метку на карту
		map.addOverlay(new YMaps.Placemark(new YMaps.GeoPoint(placemarkX, placemarkY), {
                draggable: false,
                hasBalloon: false,
                style: s
            })
        ); 
        
		$('.js-branch-toggle-map', this).click(function(){
			
			var block = $('.map', $(this).closest('.b-branchMap') );
			var link = $(this);
			
			if (block.css('display')=='none') { // показать
				
				link.html('Скрыть карту');
				
				block.stop(true, true).slideDown(300);
				map.redraw();
				
			} else { // скрыть
				
				block.stop(true, true).slideUp(300, function(){
					link.html('Показать на карте');
				});
				
        }
        
        return false;
    });
		
    });
    
    
    
    
    
});


/* Филиалы на карте */
$(function(){
    
    
    // Яндекс.Карты
	if ($('#branchMap').length) {
        
        var block = $('#branchMap');
        
        OBJECTS_MAP_DEFAULT_X = 39.204078;
        OBJECTS_MAP_DEFAULT_Y = 51.662507;
        OBJECTS_MAP_DEFAULT_ZOOM = 11;
        
        // Определяем координаты, что показывать и где точка
		var centerX = OBJECTS_MAP_DEFAULT_X;
		var centerY = OBJECTS_MAP_DEFAULT_Y;
		var zoom = OBJECTS_MAP_DEFAULT_ZOOM;
		
		// Создает экземпляр карты и привязывает его к созданному контейнеру
		var map = new YMaps.Map(YMaps.jQuery("#branchMap")[0]);
        
		// Устанавливает начальные параметры отображения карты: центр карты и коэффициент масштабирования
		map.setCenter(new YMaps.GeoPoint(centerX, centerY), zoom);
		
		// Устанавливаем элементы контроля картой
		map.addControl(new YMaps.Zoom());
		var mapSearch = new YMaps.SearchControl({noPlacemark: true});
		map.addControl(mapSearch);
		var typeControl = new YMaps.TypeControl([YMaps.MapType.MAP, YMaps.MapType.SATELLITE, YMaps.MapType.HYBRID], [3]);
		map.addControl(typeControl);
        map.enableScrollZoom(); 
        
        var s = new YMaps.Style();
            s.iconStyle = new YMaps.IconStyle();
            s.iconStyle.href = "/images/map_icon.png";
            s.iconStyle.size = new YMaps.Point(52, 67);
            s.iconStyle.offset = new YMaps.Point(-3, -65);
        
        $('#branchMapData LI').each(function(){
            
            var placemark = new YMaps.Placemark(new YMaps.GeoPoint($(this).data('x'), $(this).data('y')), {
                    draggable: false,
                    hasBalloon: true,
                    style: s
                })
            
            placemark.name = $('.station', this).html();
            placemark.description = $('.address', this).html();
            
            // Добавляем метку на карту
            map.addOverlay(placemark); 
            
        });
        
    }

    
});


/* Галерея */
$(function(){
if (!$('.b-photos').length) return;

    $('.highslide').fancybox({
		'titlePosition': 'inside'
	});
    
});


/* Слайдер на главной */
$(function(){
if (!$('.b-slider').length) return;
    
    indexBannersScroll = function(data) {
        if (!data.container) return;
        this.opts.container = data.container;

        this.opts.outer_width = $(data.container).innerWidth();
        this.opts.inner_width = 0;
        
        links = $("LI", data.container);
        for (var i=0; i<links.length; ++i)
            this.opts.inner_width+=$(links[i]).outerWidth();

        this.opts.inner_width+=links.length*10-20;	// корректировка padding
        
        if (this.opts.outer_width>this.opts.inner_width) return;
        
        var _obj = this;
        this.opts.container.scroll_instance = this;
        
        $(this.opts.container).mouseenter(function() {
            $(_obj.opts.container).mousemove(_obj.scroll);
            _obj.opts.timer = setInterval(function() {_obj.updatePos();}, 10);
        });
        $(this.opts.container).mouseleave(function() {
            $(_obj.opts.container).unbind('mousemove',_obj.scroll);
            clearInterval(_obj.opts.timer);
        });
    }
    indexBannersScroll.prototype.opts = {
        outer_width	: null,
        inner_width	: null,
        container : null,
        target_x : null,
        timer : null
    }
    indexBannersScroll.prototype.scroll = function(e) {
        var p = $(this).offset();
        var _obj = this.scroll_instance;
        _obj.opts.target_x = (_obj.opts.outer_width - _obj.opts.inner_width)*(e.pageX-p.left)/_obj.opts.outer_width;
        
        _obj.updatePos();
    }
    indexBannersScroll.prototype.updatePos = function() {
        
        var cur = parseInt($("UL", this.opts.container).css('left'), 10);

        var d = (this.opts.target_x - cur);
        if (Math.abs(d)<1) cur = this.opts.target_x;
        else cur += d/20;
        
        if (!cur) return;
        
        $("UL", this.opts.container).css('left', cur.toString()+'px');
    }
    
    new indexBannersScroll({ 'container': document.getElementById('mainSlider') });

    
});


/* action free rights */
actionFreeRights = {


	// Таймер
	timer: null,
	counter: null,


	// Обновить счётчик
	updateCountdown: function() {

		var block = $('.b-actionFreeRights .countdown');

		// Определяем дни, часы, минуты и секунды
		var d = Math.floor(actionFreeRights.counter/86400);
		var h = Math.floor((actionFreeRights.counter - d*86400)/3600);
		var m = Math.floor((actionFreeRights.counter - d*86400 - h*3600)/60);
		var s = actionFreeRights.counter - d*86400 - h*3600 - m*60;

		// Форматируем вывод
		var html = '';
		if (d>0) html += d + ' дн. ';
		if ((h>0) || (d>0)) html += h + ' ч. ';
		if ((m>0) || (h>0) || (d>0)) html += m + ' мин. ';
		html += s + ' сек.';

		// Выводим счётчик
		block.html(html);

	},


	// Инициализация таймера
	initTimer: function() {

		// Установим счётчик
		this.counter = $('.b-actionFreeRights').data('endTime') - $('.b-actionFreeRights').data('currentTime');
		if (this.counter<0) this.counter = 0;
		
		// Обновим счётчик
		actionFreeRights.updateCountdown();

		// Запустим таймер
		this.timer = setInterval(function() {
			if (actionFreeRights.counter==0) clearInterval(actionFreeRights.timer);
			actionFreeRights.counter--;
			actionFreeRights.updateCountdown();
		}, 1000);

	},


	// Отправка формы
	submitForm: function() {

		// Добавить визаулизатор загрузки
		var loader = ajaxLoader.add($('.b-actionFreeRights'));
		ajaxLoader.setHeight(loader, $('.b-actionFreeRights').outerHeight());
		
		// Подготовить поля
		$('.b-actionFreeRights INPUT').each(function(){
			if ($(this).val()==$(this).attr('placeholder'))
				$(this).val('');
		});
		
		// Поехали!
		$.ajax({
			type: 'POST',
			cache: false,
			dataType: 'json',
			data: $('.b-actionFreeRights FORM').serialize(),
			url: 'actions/ajax_action_free_rights/',
			beforeSend: function() {
				loader.fadeIn(300);
			},
			success: function(data) {
				loader.fadeOut(300);
				if (data['error']) {

					alert(data['errorText']);

				} else {

					alert(data['successText']);

					$('.b-actionFreeRights .inputName').val('');
					$('.b-actionFreeRights .inputPhone').val('');

					$('.b-actionFreeRights .countMembers').html(data['countMembersFormatted']);

				}
			},
			error: function() {
				loader.fadeOut(300);
				alert('Неизвестная ошибка');
			}
		});

	},


	// Инициализация
	init: function() {

		// Запустим таймер
		this.initTimer();

		// Отправка формы
		$('.b-actionFreeRights .go').click(this.submitForm);

	}


}
$(function() {
	if ($('.b-actionFreeRights').length) actionFreeRights.init();
});



/* Уравнивание высоты колонок */
$(function(){
if (!$('.l-left').length || !$('.l-right').length || !$('.b-sideBanners').length) return;
	
	left_h = $('.l-left').outerHeight();
	right_h = $('.l-right').outerHeight();
	dif = right_h - left_h;
	console.log(dif);
	console.log($('.b-sideBanners LI:visible').length);
	while (dif>0 && $('.b-sideBanners LI:visible').length>1) {
		console.log(dif);
	console.log($('.b-sideBanners LI:visible').length);
		$('.b-sideBanners LI:visible:last').hide();
		dif = dif - 164;
	}
	
});
