var C={

	//поскольку зимняя и летняя карты переключаются автоматически, понадобилось вынести параметры карт за пределы js-файла
	//map_wh: [3810, 3248],//размер карты
	//map_cr: [15, 14],//кол-во фрагментов в сетке карты (cols, rows)
	//map_slice_separator: '_', // у зимней и летней карты отличаются разделители координат в названиях файлов
	//map_folder: 'moscow',//папка с картинками
	mapdrag: false,//флаг перетаскивания карты
	mapismoving: false,//флаг перетаскивания карты с небольшой задержкой окончания
	mapdrag_clientxy: [],//прежние координаты мыши карты
	mapredraw_timer: null,//таймер запуска перерисовки карты
	objects_data: [],//массив данных по объектам на карте
	htmltag: null,
	nav_wh: [200,170],//размеры навигатора
	zone_wh: [],//размеры зоны навигатора
	navdrag: false,//флаг перетаскивания зоны навигатора
	navdrag_clientxy: [],//прежние координаты мыши навигатора
	//navredraw_timer: null,//таймер запуска перерисовки зоны навигатора
	vlg_id: null,//id поселка
	filter_types: null,//массив id типов в порядке их следования
	from_map_click: false,//флаг клика по ссылке с карты
	pictures: {},//данные по прикрепленным к объекту фотографиям
	pitcure_current_index: null, //индекс текущей превьюшки

	// dl
	tooltip_text: '',

	_init_: function(){
		//инициализируем jquery.history
		jQuery.historyInit(C.pageload);
		//подключаем shadowbox
		Shadowbox.init({handleLgImages:'drag',skipSetup:true})
		//определяем размеры окна перед добавление карты на страницу
		C.setBodyWH();
		//добавляем таблицу с тенью;
		C.createShadow();
		//добавляем на страницу таблицу с картой
		C.createMap();
		//определяем размеры карты
		C.mapApplyStyles();
		//определяем события по ресайзу окна
		window.onresize=function(){
			if(!C.resize_timer){
				C.resize_timer=setTimeout('C.doResize()',500);
			}
		}
		//сразу же запускаем функцию обработки ресайза
		C.resetBodyWH(false);
		//подцепляем события перетаскивания карты
		C.mapAddEvents();
		//создаем подсказки при наведении на шоссе
		C.mapPutRoads();
		//расставляем объекты на карте
		C.mapPutObjects();
		//меняем ссылки на якоря
		C.changeLinks();
		//запускаем функцию отрисовки карты с небольшой задержкой, чтобы не глючил Safari
		setTimeout('C.mapRedraw()',1000);
	},

	doResize: function(){
		//пересчитываем размер окна
		C.resetBodyWH(true);
		//перерисовываем navzone
		C.navzoneRedraw();
		//перерисовываем карту
		C.mapRedraw();
		//перерисовываем скроллбары
		C.redrawScrollbars();
		//передергиваем #vlgInfo для эксплорера
		C.msieDebug();
		//сбрасываем таймер
		C.resize_timer=null;
	},

	pageload: function(url){
		//обработка поиска ЖК по названию выполняется
		if(url.indexOf('q=')>=0){return;}
		//переопределяем url
		var url=location.hash.substr(1);
		if(location.search){
			url+=location.search;
		}
		// dl for tooltip
		//в самом начале пытаемся показать blur
		C.try2showBlur(url);
		$('#tooltip').css('z-index', 1500);
		if(url=='map/'||url=='#map/') {
			C.hide_tooltip("tooltip");
		} else {
			var expr = /\d/gi;
			if (url.match(expr)) {
				$('#blur').hide();
			} else {
				C.hide_tooltip("tooltip");
				C.try2showBlur(url);
			}
			var expr = /bld/gi;
			if (url.match(expr)) {
				$('#tooltip').css('z-index', 150);
				C.try2showBlur(url);
			}
			var expr = /proposition/gi;
			if (url.match(expr)) {
				$('#tooltip').css('z-index', 150);
				C.try2showBlur(url);
			}
		}
		// end of dl
		//в случае, если клик произошел по одному из пунктов меню поиска поселка,
		//не нужно делать запрос к серверу, потому что все данные уже имеются в html-коде
		if(C.isPoselokMenuClick(url)){return;}
		//в самом начале пытаемся показать blur
		C.try2showBlur(url);
		//меняем курсор на wait
		$('body').addClass('wait');
		//вытаскиваем content
		//alert('getJSON ulr='+url)
		$.getJSON(url, {ajax:2}, function(json){
			C.pageloadStart(json,url)
		});
	},

	pageloadStart: function(json,url){
		if(json.error==''){
			//заменяем контент
			$('#contentBox').empty().append(json.content);
			//заменяем заголовок
			document.title=json.title;
			//добавляем события в меню поиска поселка (направление, расстояние от МКАД итд)
			//меняем ссылки на якоря
			//стилизуем скроллбары
			C.pageloadMid(url);
			$('#ofh').append('<div id="tooltip" class="ttip"><span class="tooltip"><span class="top"></span><span class="close"></span><span class="middle"><div id="tooltiptext"></div></span><span class="bottom"></span></span></div>');
			//меняем курсор на обычный
			//если мы зашли на карту, создаем навигатор, иначе убираем
			//пытаемся скрыть blur
			C.pageloadEnd(url);
			//если на странице есть форма поиска ЖК по названию, вешаем обработчик
			C.findHouseEvents();
			//если это страница отдельного здания или ЖК, скрываем характеристики
			C.house.init();
			//в самом конце пытаемся активировать счетчик
			var counter_image=new Image();
			var _url=escape(location.protocol)+'//'+escape(location.hostname)+'/'+escape(url);
			var _url2='http://'+escape(location.hostname)+'/'+escape(url);
			//counter_image.src='http://counter.yadro.ru/hit?t44.1;r'+escape(document.referrer)+((typeof(screen)=='undefined')?'':';s'+screen.width+'*'+screen.height+'*'+(screen.colorDepth?screen.colorDepth:screen.pixelDepth))+';u'+_url+';'+escape(document.title.substring(0,80))+";"+Math.random();
			$('#lastDiv').append('<iframe id="gan" width="1" height="1" style="display: none;"/>');
			$('#gan').attr('src', _url2+'?googleanalytics');

			//counter_image.src='/_scripts/counter_log.php?url='+_url+'&'+Math.random();
		}else{
			//alert(404)
		}
	},

	pageloadMid: function(url){
		//добавляем события в меню поиска поселка (направление, расстояние от МКАД итд)
		C.poselokSearchMenuEvents();
		//изменяем меню и ссылку на главную с логотипа, важно сделать это до C.changeLinks()
		C.menuChange(url);
		//меняем ссылки на якоря
		C.changeLinks();
		//стилизуем скроллбары
		C.drawScrollbars();
	},

	pageloadEnd: function(url){
		//меняем курсор на обычный
		$('body').removeClass('wait');
		//если мы зашли на карту, создаем навигатор, иначе убираем
		C.ajaxMapAddEvents(url);
		//если мы зашли на страницу поселка, пытаемся показать фотографии
		C.vlgPreviewsInit();
		//если мы зашли на страницу поселка, то добавляем обработку клика по ссылке "добавить в избранное"
		C.favoritesAddEvents();
		//в самом конце пытаемся скрыть blur
		C.try2hideBlur(url)
	},

	menuChange: function(url){
		var $logo=$('#logo');
		if(url){
			//делаем ссылку на главную страницу
			if($logo.find('a').length==0){
				$logo.empty().append(
					$('<a></a>').attr({href:'/'}).addClass('no-change')
				);
			}
		}else{
			//убираем ссылку на главную страницу
			$logo.empty();
		}
		//скрываем предыдущий активный пункт
		var $li=$('#menu1 b').parent();
		if($li.length){
			var $b=$li.children('b');
			$li.empty().removeClass('active').append(
				$('<a></a>').attr({href:location.protocol+ '//'+ location.host+ $b.attr('rel')}).html($b.html())
			);
		}

		//находим пункт меню, по которому был клик
		$('#menu1 a').each(function(){
			var href=$(this).attr('href');
			if(href=='/#'+url || href=='/'+url){
				var $li=$(this).parent();
				var $a=$li.children('a');
				$li.empty().append(
					$('<b></b>').attr({rel:'/'+url}).html($a.html())
				);
			}
		})
	},

	changeLinks: function(){
		//alert('call changelinks')
		/*
			меняем у всех ссылок атрибут href
			каждая ссылка может быть адресована
			- на другую страницу
			- на мыло
			- на якорь
			- на файл
			нам нужно поменять только ссылки на другие страницы
		*/
		var url_prefix1=location.protocol+ '//'+ location.host;
		var url_prefix2=url_prefix1 + '/u/';
		var url_prefix3=url_prefix1 + '/img/';
		var url_prefix4=url_prefix1 + location.pathname + '#';
		$('a, area').not($('a.no-change')).each(function(){
			var $this=$(this);
			if(
				this.href.search(url_prefix1)==0
				&& this.href.search(url_prefix2)==-1
				&& this.href.search(url_prefix3)==-1
				&& this.href.search(url_prefix4)==-1
			){
				//если текущая страница была загружена по ссылке с карты (C.from_map_click==true)
				//то ссылки class="cross" нужно переадресовать назад на карту
				if(C.from_map_click){
					$('a.cross').attr('href','/map/');
					C.from_map_click=false;
				}
				//вытаскиваем путь
				if(this.href.search('#')==-1){
					var hash=this.href.substr(url_prefix1.length+1);
					//меняем путь на якорь
					$this.attr('href','/#'+ hash).addClass('no-change');
				}else{
					var hash=this.hash.substr(1);
				}
				//добавляем обработчик клика
				$this.click(function(){
					if(!C.mapismoving){
						//в случае, когда кликаем по иконке или по дороге на карте нужно установить флажок C.from_map_click
						if(this.tagName=='AREA' || this.parentNode.className.indexOf('mapobject')>=0){
							C.from_map_click=true;
						}
						$.historyLoad(hash);
					}
					return false;
				});
			}
		});
	},

	poselokSearchMenuEvents: function(id){
		if(!$('#districtBox').length){return;}
		//поскольку функция может быть вызвана после анимации меню поиска с переданным параметром id,
		//то в этом случае нужно сделать привязку только одного обработчика
		var ids=(id || 'districtBox,streetsBox,metroBox,houseBox').split(',');
		for(var i in ids){
			$('#'+ids[i]+' h4 a').unbind('click').bind('click',function(event){
				event.preventDefault();
				//$.historyLoad('apartments/'+C.poselokSearchGetUriByDiv(id)+'/');
				var id=$(this).parent().parent().parent().parent().attr('id');
				C.poselokSearchMenuAnimate(id);
			});
		}
	},

	poselokSearchMenuAnimate: function(id){//получаем id блока, контент которого нужно показать
		if(C.menu_animate_process){return;}
		C.menu_animate_process=true;
		//скрываем блоки с описанием поселка и со списком поселков, если они есть
		//инициализируем переменную hash, которая будет хранить данные о скрываемом и показываемом блоках
		var hash={tohide:{},toshow:{}};
		//определяем какой из блоков показывается в данный момент (нам нужно будет его скрыть)
		hash.tohide.$el=$('#l20 div.head h3').parent().parent().next().children();
		if(hash.tohide.$el.length){
			hash.tohide.h=hash.tohide.$el[0].offsetHeight;
		}

		//определяем высоту блока, который нужно будет показать. для этого делаем блоку {visibility:'hidden',position:'absolute',display:'block'}
		hash.toshow.$el=$('#'+id+'>div.content>div.bg');
		hash.toshow.h=hash.toshow.$el.css({visibility:'hidden',position:'absolute',height:'',display:'block'})[0].offsetHeight;

		//анимируем
		hash.toshow.$el.css({visibility:'',position:'',height:0,display:'none'}).animate({height: hash.toshow.h},'fast','linear',function(){
			hash.toshow.$el.css({height:''});
			var $parent=hash.toshow.$el.parent().parent();
			var $head_bg=$parent.find('div.head>div.bg');
			var $span_node=$head_bg.find('h4 a span').clone();
			$head_bg.empty().append(
				$('<h3></h3>').append($span_node)
			).append(
				$('<span></span>').addClass('pulldown').html('&nbsp;')
			);
			C.menu_animate_process=false;
		});
		if(hash.tohide.$el.length){
			hash.tohide.$el.animate({height:0},'fast','linear',function(){
				var $parent=hash.tohide.$el.parent().parent();
				var $head_bg=$parent.find('div.head>div.bg');
				var span_node=$head_bg.find('h3 span').clone();
				var id=$parent.attr('id');
				$head_bg.empty().append(
					$('<h4></h4>').append(
						$('<a></a>').attr({href:location.protocol+ '//'+ location.host+ '/apartments/'+C.poselokSearchGetUriByDiv(id)+'/'}).addClass('dot').append(span_node)
					)
				);
				C.poselokSearchMenuEvents(id);
				C.changeLinks();
			});
		}
	},

	findHouseEvents: function(){
		var $form=$('#houseBox form');
		if($form.length){
			$form.bind('submit',function(event){
				event.preventDefault();
				var url=$form.attr('action');
				var q=$('#houseBox form').find('input[name=q]')[0].value;
				location.hash='apartments/house/?q='+q;
				$.getJSON(url, {ajax:2,q:q}, function(json){
					C.pageloadStart(json,url);
				});
			})
		}
	},

	poselokSearchGetUriByDiv: function(id){
		switch(id){
			case 'districtBox':
				return 'district';
			case 'streetsBox':
				return 'streets';
			case 'metroBox':
				return 'metro';
			case 'extraBox':
				return 'extra';
			case 'houseBox':
				return 'houses';
		}
	},

	poselokSearchGetDivByUri: function(url){
		switch(url){
			case 'apartments/':
			case 'apartments/district/':
				return 'districtBox';
			case 'apartments/streets/':
				return 'streetsBox';
			case 'apartments/metro/':
				return 'metroBox';
			/*
				этот бокс является прямой ссылкой (у него отсутствует подменю)
				поэтому его нужно исключить из case
			case 'apartments/extra/':
				return 'extraBox';
			*/
			case 'apartments/houses/':
				return 'houseBox';
		}
	},

	isPoselokMenuClick: function(url){
		//в случае, если клик произошел по одному из пунктов меню поиска поселка,
		//не нужно делать запрос к серверу, потому что все данные уже имеются в html-коде
		//но нужно скрыть другие окна, если они есть на странице
		//и также нужно убрать span.next, если имеется
		if($('#districtBox').length){
			var id=C.poselokSearchGetDivByUri(url);
			if(id){
				if($('#l200').length){
					$('#l200,#l380,#l560').remove();
					$('#l20 span.next').remove();
					C.poselokSearchMenuAnimate(id);
					C.menuChange(url);
				}
				return true;
			}
		}
	},

	try2showBlur: function(url){
		if(url!='map/'){
			//если мы пришли не на карту, то показываем блюр
			$('#blur').show();
			//также устанавливаем z-index для ContentBox=600, чтобы поместить его над картой
			$('#contentBox').css('zIndex','600').show();
			//также скрываем нафик mapdrag, потому что с ним тормозит
			$('#mapdrag').hide();
		}
	},

	try2hideBlur: function(url){
		//если мы пришли на карту, то скрываем блюр
		if(url=='map/'){
			$('#blur').hide();
			//также устанавливаем z-index для ContentBox=0, чтобы спрятать его под карту
			$('#contentBox').css('zIndex','0').hide();
			//показываем mapdrag
			$('#mapdrag').show();
		}
	},

	mapApplyStyles: function(){
		$('#map, #mapdrag').width(C.map_wh[0]).height(C.map_wh[1]);
		$('#mapTable td').width(parseInt(C.map_wh[0]/C.map_cr[0])).height(parseInt(C.map_wh[1]/C.map_cr[1]));
	},

	createMap: function(){
		$('#mapdrag').attr({ width: C.map_wh[0], height: C.map_wh[1] });
		var tds='';
		for(var j=0; j<C.map_cr[0]; j++){
			tds+='<td class="loader"></td>';
		}
		var trs='';
		for(var i=0; i<C.map_cr[1]; i++){
			trs+='<tr>'+tds+'</tr>';
		}
		var table='<table id="mapTable">'+trs+'</table>';
		$('#map').append(table);
	},

	createShadow: function(){
		$('#map').append(
			$('<div></div>').attr({id:'mapShadow'}).append(
				$('<table></table>').append(
					$('<tr></tr>').append($('<td></td>').addClass('lt')).append($('<td></td>').addClass('t')).append($('<td></td>').addClass('rt'))
				).append(
					$('<tr></tr>').append($('<td></td>').addClass('l')).append($('<td></td>').addClass('m').append($('<div></div>').html('&nbsp;'))).append($('<td></td>').addClass('r'))
				).append(
					$('<tr></tr>').append($('<td></td>').addClass('lb')).append($('<td></td>').addClass('b')).append($('<td></td>').addClass('rb'))
				)
			)
		)
	},

	createNavigator: function(){
		var $navigator=$('#navigator');
		if($navigator.length){
			$navigator.show();
			return;
		}
		var nav='<div id="navigator" style="width:'+C.nav_wh[0]+'px;height:'+C.nav_wh[1]+'px;background: url(/img/map/'+C.map_folder+'/navigator.jpg) no-repeat;">'
					+ '	<div class="rel">'
					+ '		<a class="close" href="javascript:C.navShowHide()"></a>'
					+ '		<span class="zone"></span>'
					+ '	</div>'
					+ '</div>';
		$('#ofh').append(nav);
		//скрываем навигатор, если он был скрыт перед этим
		if($.cookies.get('nav_shown')=='0'){
			$navigator.find('.zone').css('visibility','hidden');
			$navigator.css({width:12,height:12});
			$navigator.find('a').attr('class','open');
		}
	},

	createFilter: function(){
		var $filter=$('#filter');
		if($filter.length){
			$filter.show();
			return;
		}
		var types='';
		if(C.filter_types.length){
			for(var i=0; i<C.filter_types.length; i++){
				types+='<span class="type'+C.filter_types[i][0]+'" rel="'+C.filter_types[i][1]+'"><i>&nbsp;</i></span>';
			}
		}
		var filter='<div id="filter">'
					+ '	<div class="bg"></div>'
					+ '	<div class="abs">'
					+ types
					+ '	</div>'
					+ '	<div class="helper"><div>'
					+ '</div>';
		var $filter=$(filter).appendTo('#ofh');
		$filter.find('span').each(function(i){
			var type=$(this).attr('class');
			type=parseInt(type.substr(4));
			var text=$(this).attr('rel');
			var left=i*19 + 4;
			$(this).mousedown(function(){
				C.filterType($filter,type);
			})
			$(this).mouseover(function(){
				var width=$filter.children('div.helper').text(text).css({
					left:left,
					right:'auto',
					visibility:'visible',
					display:'block'
				}).get(0).offsetWidth;
				//если левая координата подсказки + ширина больше ширины фильтра, то перепозиционируем подсказку,
				//прикрепляя ее к правой границу
				if(left+width > $filter[0].offsetWidth){
					$filter.children('div.helper').css({
						left:'auto',
						right:'0',
						visibility:'visible'
					})
				}else{
					//иначе показываем подсказку на прежнем месте
					$filter.children('div.helper').css({visibility:'visible'})
				}

			})
			$(this).mouseout(function(){
				$filter.children('div.helper').hide();
			})
		})
	},

	filterType: function($filter,type_id){
		if($filter.find('span.type'+type_id+' b').length){
			//осветляем иконку и показываем объекты соответствующего типа
			$filter.find('span.type'+type_id).html('<i>&nbsp;</i>');
			$('#map div.type'+type_id).show();
		}else{
			//затемняем иконку и скрываем объекты соответствующего типа
			$filter.find('span.type'+type_id).html('<b>&nbsp;</b>');
			$('#map div.type'+type_id).hide();
		}
	},

	navzoneRedraw: function(){
		var $navigator=$('#navigator')
		if(!$navigator.length){return;}
		//определяем размеры и позицию span.zone
		var zone={
			w:(C.nav_wh[0]/C.map_wh[0])*C.htmltag.w - 2,//убираем пару пикселов
			h:(C.nav_wh[1]/C.map_wh[1])*C.htmltag.h - 2,//в счет бордера
			l:(C.nav_wh[0]/C.map_wh[0])*$('#map').get(0).offsetLeft * -1,
			t:(C.nav_wh[1]/C.map_wh[1])*$('#map').get(0).offsetTop * -1
		}
		$navigator.find('.zone').width(zone.w).height(zone.h).css('left',zone.l).css('top',zone.t);
		C.zone_wh=[zone.w,zone.h];
	},

	navShowHide: function(){
		var $navigator=$('#navigator')
		if($navigator.width()==12){
			$.cookies.set('nav_shown',1,24*90);
			var w=C.nav_wh[0];
			var h=C.nav_wh[1];
			var cls='close';
			$navigator.find('.zone').css('visibility','visible');
		}else{
			$.cookies.set('nav_shown',0,24*90);
			var w=12;
			var h=12;
			var cls='open';
			$navigator.find('.zone').css('visibility','hidden');
		}
		$navigator.animate({width:w,height:h},'fast','linear',function(){
			$navigator.find('a').attr('class',cls);
		});
	},

	setBodyWH: function(){
		var body=$('body')[0];
		var html=$('html')[0];
		C.htmltag={
			w:C.max(body.scrollWidth,html.scrollWidth),
			h:C.max(body.scrollHeight,html.scrollHeight)
		}
	},

	resetBodyWH: function(resize){
		var body=$('body')[0];
		var html=$('html')[0];
		if(resize){
			$('#ofh').css({width:'',height:''});
			C.htmltag={
				w:C.max(body.scrollWidth,html.scrollWidth),
				h:C.max(body.scrollHeight,html.scrollHeight),
				l:C.max(body.scrollLeft,html.scrollLeft),
				t:C.max(body.scrollTop,html.scrollTop)
			}
		}else{
			C.htmltag.l=C.max(body.scrollLeft,html.scrollLeft);
			C.htmltag.t=C.max(body.scrollTop,html.scrollTop);
		}
		if(C.htmltag.w<1000){
			$('#ofh').width(1000);
			C.htmltag.w=1000;
		}else{
			$('#ofh').width('100%');
		}
		if(C.htmltag.h<600){
			$('#ofh').height(600);
			C.htmltag.h=600;
		}else{
			$('#ofh').height('100%');
		}
		//изменяем размер #mapShadow td.m
		$('#mapShadow td.m div').width(C.htmltag.w - 2*112).height(C.htmltag.h - 2*112);
	},

	mapAddEvents: function(){
		if($.browser.msie){
			$('body').bind('selectstart', function(){
				if(!C.isMap()){return;}
				return false;
			})
		}
		$('#mapdrag').mousemove(function(evt){
			evt.preventDefault();
		});
		$('#mapdrag').mousedown(function(evt){//привязываем событие к #mapdrag, потому что перетаскивать его можно только по клику именно по этому слою
			evt.preventDefault();
			if(!C.isMap()){return;}
			try{
				C.mapChangeCursor('fist');//кулак
				C.disableSelect();
				C.mapdrag=true;
				C.mapdrag_clientxy=[evt.clientX,evt.clientY]
			}catch(e){}
		});
		$(document).mouseup(function(){//привязываем событие к document, потому что нам не важны координаты
			if(!C.isMap()){return;}
			C.mapChangeCursor('palm');//ладошка
			C.mapStopDrag();
			C.navStopDrag();
		});
		$('body').mouseout(function(evt){//привязываем событие к body чтобы правильно отследить координаты курсора
			if(!C.isMap()){return;}
			try{
				if(C.mapdrag && C.mouseOutOfWindow(evt)){
					C.mapStopDrag();
					C.mapRedraw();
					return;
				}
			}catch(e){}
		});
		$(document).mousemove(function(evt){
			if(!C.isMap()){return;}
			try{
				if(C.mapdrag){
					C.mapismoving=true;
					if(!C.mapredraw_timer){
						C.mapredraw_timer=setTimeout('C.mapRedraw()',100);
					}
					var delta=[
						evt.clientX-C.mapdrag_clientxy[0],
						evt.clientY-C.mapdrag_clientxy[1]
					];
					var map=$('#map').get(0);
					var new_lt=[
						map.offsetLeft+delta[0],
						map.offsetTop+delta[1]
					];
					//преобразуем новые координаты так, чтобы карта не показвыала свой край
					new_lt=C.mapCheckOutOfBorder(map,new_lt);
					//перепозициорируем карту
					$('#map').css('left',new_lt[0]).css('top',new_lt[1]);
					C.mapdrag_clientxy=[evt.clientX,evt.clientY];
					//пересчитываем зону навигатора
					C.navzoneRedraw();
				}
			}catch(e){}
		});
	},

	ajaxMapAddEvents: function(url){
		//если мы зашли на карту, то единожды создаем навигатор и фильтр, иначе пытаемся их скрыть
		if(url=='map/'){
			C.mapChangeCursor('palm');//ладошка
			//добавляем на страницу навигатор
			C.createNavigator();
			//добавляем на страницу фильтр
			C.createFilter();
			//пересчитываем "зону" навигатора
			C.navzoneRedraw();
			//подцепляем события перетаскивания навигатора
			C.navigatorAddEvents()
		}else{
			$('#navigator, #filter').hide();
		}
	},

	navigatorAddEvents: function(){
		$('#navigator .zone').mousedown(function(evt){
			try{
				C.navdrag=true;
				C.mapChangeCursor('fist','navigator');//кулак
				C.disableSelect();
				C.navdrag_clientxy=[evt.clientX,evt.clientY]
			}catch(e){}
		})
		$(document).mousemove(function(evt){
			try{
				if(C.navdrag){
					if(!C.mapredraw_timer){
						C.mapredraw_timer=setTimeout('C.mapRedraw()',20);
					}
					var delta=[
						evt.clientX-C.navdrag_clientxy[0],
						evt.clientY-C.navdrag_clientxy[1]
					];
					var new_lt=[
						parseInt($('#navigator .zone').get(0).offsetLeft)+delta[0],
						parseInt($('#navigator .zone').get(0).offsetTop)+delta[1],
					]
					//преобразуем новые координаты так, чтобы зона не вылезала за край
					new_lt=C.navCheckOutOfBorder(new_lt);
					//перепозициорируем зону
					$('#navigator .zone').css('left',new_lt[0]).css('top',new_lt[1]);
					C.navdrag_clientxy=[evt.clientX,evt.clientY];
					//высчитываем новые координаты карты
					var map=$('#map').get(0);
					var map_lt=[
						parseInt(C.map_wh[0]/C.nav_wh[0])*new_lt[0] * -1,
						parseInt(C.map_wh[1]/C.nav_wh[1])*new_lt[1] * -1
					]
					//преобразуем новые координаты так, чтобы карта не показвыала свой край
					map_lt=C.mapCheckOutOfBorder(map,map_lt);
					//перепозициорируем карту
					$('#map').css('left',map_lt[0]).css('top',map_lt[1]);
				}			}
			catch(e){/*alert(e)*/}
		})
	},

	drawScrollbar: function($box,box_maxheight){
		if($box.length && box_maxheight){
			//var box_height=$box.removeClass('scroll-pane')[0].offsetHeight;
			var box_height=$box[0].offsetHeight;
			if(box_height > box_maxheight){
				$box.height(box_maxheight).jScrollPane({
					scrollbarWidth: 11,
					scrollbarMargin: 14,
					showArrows: true,
					arrowSize: 12,
					animateTo:true
					//,animateInterval: 25
				});
			}
		}
	},

	drawScrollbars: function(){
		//сперва высчитываем и ограничиваем по высоте нужные блоки
		//определяем максимальную высоту контент-зоны
		var content_maxheight=Math.round(C.htmltag.h - 115 - 26 - 100);//отнимаем меню, заголовочную шапку контент-блока, копирайты
		if(C.htmltag.h>750){
			content_maxheight-=Math.round((C.htmltag.h * 0.2));//отнимаем 20% высоты окна браузера
			var content_maxheight_notebooks=Math.round(750 - 115 - 26 - 100);//высота контента для маленьких экранов (не более 750 пикселов)
			if(content_maxheight < content_maxheight_notebooks){
				content_maxheight=content_maxheight_notebooks;
			}
		}

		//критерии выбора дома (гармошка)
		var $l20=$('#l20');
		if($l20.children('div.thin').length){
			//подсчитываем кол-во критериев
			var cryterias_count=$l20.find('div.head').length
			//подсчитываем максимальную высоту содержимого критерия
			var cryteria_maxheight=content_maxheight - cryterias_count*25;
			//делаем бокс невидимым
			$l20.css('visibility','hidden');
			//пробегаемся по всем div.bg
			$l20.find('div.content>div.bg').each(function(){
				var $this=$(this);
				if(this.offsetHeight){
					var hide_after_decorate=false;
				}else{
					//разворачиваем прочие критерии
					$this.removeClass('invsbl').css({height:''});
					var hide_after_decorate=true;
				}
				//если высота $this больше допустимой, заворачиваем в scroll-pane
				if(this.offsetHeight > cryteria_maxheight){
					//декорируем (включаем и отключаем overflow для msie6)
					$this.children('div.pad').addClass('scrollPad').children('ul').css({overflow:'scroll'}).height(cryteria_maxheight).jScrollPane({
						scrollbarWidth: 11,
						scrollbarMargin: 4,
						showArrows: true,
						arrowSize: 12
						//,animateInterval: 25
					}).css({overflow:'visible'});
				}
				//
				if(hide_after_decorate){
					$this.css({height:0});
				}
			})
			//делаем бокс видимым
			$l20.css('visibility','visible');
		}

		//анонсы новостей и аналитики
		var $announces=$l20.find('div.announces div.scroll-pane');
		if($announces.length){
			C.drawScrollbar($announces,(content_maxheight-2*21-1));// с учетом паддингов и clear
		}

		//описание квартиры или проекта
		//убрал прорисовку скроллбара у квартиры (#house div.scroll-pane),
		//потому что из-за него третья колонка переносится на вторую строку
		var $box=$('#oneProject div.scroll-pane');
		if($box.length){
			C.drawScrollbar($box,(content_maxheight-2*19-35));// с учетом паддингов
		}else{
			//список районов
			//новости, аналитика, описание направления, описание поселка
			//описание ЖК в целом
			//проекты
			$('#l200 div.scroll-pane, #l380 div.scroll-pane, #l560 div.scroll-pane, #centered div.scroll-pane').each(function(){
				C.drawScrollbar($(this),(content_maxheight-2*19));// с учетом паддингов
			})
			//описание ЖК текстовое
			$description=$('#vlgInfo div.description');
			if($description.length){
				var maxheight=$description.parent().children('div.properties').height();//плашка "добавить в избр. распечатать"
				var $preview=$('#vlgPreview');
				if($preview.length){
					maxheight-=$preview[0].offsetHeight;
				}
				if(maxheight<80){
					maxheight=120;
				}
				C.drawScrollbar($description.children('blockquote.scroll-pane'),maxheight);
			}
		}
	},

	redrawScrollbars: function(){
		$('#contentBox div.jScrollPaneContainer').each(function(){
			var $this=$(this);
			$this.parent().append($this.children().eq(0).attr({style:''}));
			$this.remove();
		})
		C.drawScrollbars();
	},

	msieDebug: function(){
		//в msie6 происходит глюк - при прокрутке блок остается на месте и нижний текст на него наползает
		//этот прием лечит глюк
		if(!$.browser.msie){return;}
		$description=$('#vlgInfo div.description');
		if($description.length){
			$description.css('display','none').css('display','block');
		}
		/*
		if($.browser.msie){
			if($after[0].offsetHeight==0){
				$after.css({display:'block'}).css({display:'none'});
			}else{
				$after.css({display:'none'}).css({display:'block'});
			}
		}
		*/
	},

	favoritesAddEvents: function(){
		$('#fv01 a').click(function(evt){
			$.getJSON(evt.target.href,{ajax:2},function(json){
				var href=$('#fv01 a').attr('href');
				if(json.fv=='1'){//true||false
					$('#fv01 a').addClass('active');
					href=href.replace(/fvadd\.html$/,'fvremove.html');
				}else{
					$('#fv01 a').removeClass('active');
					href=href.replace(/fvremove\.html$/,'fvadd.html');
				}
				$('#fv01 a').attr('href',href);
			})
			return false;
		})
	},

	mapPutRoads: function(){
		$('#mapRoads area').each(function(){
			$(this).mousemove(function(evt){
				if($.browser.msie){C.mapChangeCursor();}
				var offset=C.getMapOffsets();
				var tmp_arr=$(this).attr('rel').split('|');
				var hash={
					status: 1,
					header: tmp_arr[0],
					text: tmp_arr[1],
					xy: [evt.clientX - offset[0], evt.clientY - offset[1]]
				}
				C.helper(hash);
			})
			$(this).mouseout(function(evt){
				if($.browser.msie){C.mapChangeCursor((C.mapdrag)?'fist':'palm')}
				var hash={status: 0}
				C.helper(hash);
			})
		});
	},

	getMapOffsets: function(){
		var elem=$('#map')[0];
		var map_offsets=[0,0];
		while(elem){
			map_offsets[0]+=elem.offsetLeft-elem.scrollLeft;
			map_offsets[1]+=elem.offsetTop-elem.scrollTop;
			elem=elem.offsetParent;
		}
		return map_offsets;
	},

	mapPutObjects: function(){
		//if(!C.isMap()){return;}
		for(var i=0; i<C.objects_data.length; i++){
			var obj=C.objects_data[i];

			var $div=$('<div></div>').addClass('mapobject type'+obj.type).css({left:obj.x,top:obj.y});

			var $title=$('<span></span>').text(obj.title);
			if(obj.type==21 || obj.type==25){
				$div.append(
					$('<a></a>').attr({
						href: '/apartments/district/bld'+obj.ap+'.html'
					}).append(
						$('<span></span>').text(obj.title)
					)
				);
			}else{
				$div.append(
					$('<span></span>').text(obj.title)
				);
			}
			$div.appendTo('#map').mouseover(function(evt){
				C.mapObjectOver(evt.target,obj.type)
			}).mouseout(function(evt){
				C.mapObjectOut(evt.target)
			});
		}
	},

	mapObjectOver: function(el){
		var header='';
		if(el.tagName=='A'){
			header='Жилой комплекс';
		}else{
			var type_index=el.className.indexOf('type');
			var type=parseInt(el.className.substr(type_index+4));
			switch(type){
				case 3:header='Метро';break;
				//case 4:header='Административные объекты';break;
				//case 9:header='Спорт';break;
				case 7:header='Клуб';break;
				case 10:header='Парк';break;
				//case 11:header='Красота и здоровье';break;
				case 6:header='Цирк';break;
				case 1:header='Вокзал';break;
				case 2:header='Гостиница';break;
				case 5:header='Театр';break;
				case 12:header='Ресторан';break;
				case 13:header='Памятник';break;
				case 14:header='Кладбище';break;
				case 15:header='Монастырь';break;
				case 16:header='Выставка';break;
				case 17:header='Церковь';break;
				case 18:header='ВУЗ';break;
				case 19:header='Школа';break;
				case 20:header='Кинотеатр';break;
				//case 21:header='Жилой комплекс';break;
				case 22:header='Десткий сад';break;
				case 23:header='Магазин';break;
				//case 24:header='Музыка';break;
				case 25:header='Жилой комплекс с предложениями';break;
			}
		}
		var hash={
			status: 1,
			header: header,
			text: $('span', el).get(0).innerHTML,
			xy: (el.tagName=='A')
				?[el.parentNode.offsetLeft, el.parentNode.offsetTop]//если это иконка деревни, то xy будет определяться через parentNode
				:[el.offsetLeft, el.offsetTop]
		};
		C.helper(hash);
	},

	mapObjectOut: function(el){
		var hash={status: 0};
		C.helper(hash);
	},

	mapStopDrag: function(){
		C.mapdrag=false;
		C.mapdrag_clientxy=[];
		C.enableSelect();
		setTimeout('C.mapismoving=false',10);//откладываем C.mapismoving=false чтобы не отрабатывался click
	},

	navStopDrag: function(){
		C.navdrag=false;
		C.navdrag_clientxy=[];
		C.enableSelect();
	},

	enableSelect: function(){
		$('body').removeClass('dontselect');
	},

	disableSelect: function(){
		$('body').addClass('dontselect');
	},

	mapChangeCursor: function(cursor){
		if($.browser.opera){return;}
		if(cursor=='palm'){
			$('#mapdrag').css('cursor','url(/admin/fw/decor/img/palm.cur), default');
			$('#navigator').css('cursor','url(/admin/fw/decor/img/palm.cur), default');
		}else if(cursor=='fist'){
			$('#mapdrag').css('cursor','url(/admin/fw/decor/img/fist.cur), move');
			$('#navigator').css('cursor','url(/admin/fw/decor/img/fist.cur), move');
		}else{
			$('#mapdrag').css('cursor','');
			$('#navigator').css('cursor','');
		}
	},

	mapRedraw: function(){
		//положение #map относительно body с учетом прокрутки
		var map=[
			$('#map').get(0).offsetLeft - C.htmltag.l,
			$('#map').get(0).offsetTop - C.htmltag.t
		];
		//если ресайз увеличил область видимости карты, то карта могла показать свой край,
		//и этонужно проверить
		if(C.htmltag.w-map[0] > C.map_wh[0]){
			map[0]=C.htmltag.w-C.map_wh[0];
			$('#map').css('left',map[0]);
		}
		if(C.htmltag.h-map[1] > C.map_wh[1]){
			map[1]=C.htmltag.h-C.map_wh[1];
			$('#map').css('top',map[1]);
		}
		var img_wh=[
			C.map_wh[0]/C.map_cr[0],
			C.map_wh[1]/C.map_cr[1]
		]
		//пробегаемся по всем ячейкам таблицы
		var server;
		if(!window.test_safari){
			window.test_safari=[];
		}
		window.map=map;
		$('#mapTable tr').each(function(i){
			$('td', this).each(function(j){
				if(true || $(this).attr('class')=='loader'){
					var td=$(this).get(0);
					//проверяем, видна ли ячейка пользователю
					if(true
						&& map[0]+td.offsetLeft+td.offsetWidth > 0
						&& map[0]+td.offsetLeft < C.htmltag.w
						&& map[1]+td.offsetTop+td.offsetHeight > 0
						&& map[1]+td.offsetTop < C.htmltag.h
					){
						//window.test_safari.push(['i='+i+';j='+j+'',(map[0]+td.offsetLeft+td.offsetWidth > 0),(map[0]+td.offsetLeft < C.htmltag.w),(map[1]+td.offsetTop+td.offsetHeight > 0),(map[1]+td.offsetTop < C.htmltag.h),'\n'])
						window.test_safari.push('i='+i+' j='+j+'')
						window.test_safari.push('map[1]+td.offsetTop='+(map[1]+td.offsetTop)+' C.htmltag.h='+C.htmltag.h+'\n')
						//$(td).removeClass('loader').css('backgroundColor','green');
						//server='http://img'+(1+(i+j)%3)+'.vipposelok.ru';
						server='';
						$(td).removeClass('loader').css('backgroundImage','url('+server+'/img/map/'+C.map_folder+'/'+ (i+1)+ C.map_slice_separator + (j+1)+ '.jpg)');
						/*
						var img=new Image();
						img.src='/img/map/'+C.map_folder+'/'+ (i+1)+ '-'+ (j+1)+ '.jpg';
						$(td).removeClass('loader').append('<img src="/img/map/'+C.map_folder+'/'+ (i+1)+ '-'+ (j+1)+ '.jpg" width="'+img_wh[0]+'" height="'+img_wh[1]+'">');
						*/
					}
				}
			})
		})
		C.mapredraw_timer=null;
	},

	mouseOutOfWindow: function(evt){
		if(false
			|| evt.clientX <= 0
			|| evt.clientX >= C.htmltag.w
			|| evt.clientY <= 0
			|| evt.clientY >= C.htmltag.h
		){
			return true;
		}else{
			return false;
		}
	},

	mapCheckOutOfBorder: function(map_element,map_lt){
		if(map_lt[0] > 0){
			map_lt[0]=0;
		}else if(C.htmltag.w-C.map_wh[0] > map_lt[0]){
			map_lt[0]=C.htmltag.w-C.map_wh[0];
		}
		if(map_lt[1] > 0){
			map_lt[1]=0;
		}else if(C.htmltag.h-C.map_wh[1] > map_lt[1]){
			map_lt[1]=C.htmltag.h-C.map_wh[1];
		}
		return map_lt;
	},

	navCheckOutOfBorder: function(nav_lt){
		if(nav_lt[0] < 0){
			nav_lt[0]=0;
		}else if(C.nav_wh[0]-C.zone_wh[0]-2 < nav_lt[0]){
			nav_lt[0]=C.nav_wh[0]-C.zone_wh[0]-2;
		}
		if(nav_lt[1] < 0){
			nav_lt[1]=0;
		}else if(C.nav_wh[1]-C.zone_wh[1]-2 < nav_lt[1]){
			nav_lt[1]=C.nav_wh[1]-C.zone_wh[1]-2;
		}
		return nav_lt;
	},

	helper: function(hash){
		if(hash.status){
			var xy=[
				hash.xy[0]+17,
				hash.xy[1]+30
			]
			// dl for tooltip
			if (hash.istooltip) {
				C.create_tooltip('tooltip', xy[0]-35, xy[1]-5, hash.text, 5000, hash.prefix, hash.istooltip);
			} else {
				$('#helper span.header').empty().append(hash.header);
				$('#helper span.text').empty().append(hash.text);
				$('#helper').css('left',xy[0]).css('top',xy[1]).show();
			}
		}else{
			$('#helper').hide();
		}
	},

	hide_tooltip: function(name) {
		try {
			document.getElementById(name).style.display='none';
		}
		catch(err) {
			// no handles
		}
	},
	
	create_tooltip: function(name, pos_x, pos_y, text, msecs, prefix, link) {
		document.getElementById(name+'text').innerHTML = '<a href="/apartments/'+prefix+'/bld'+link+'.html">'+text+'<br><b style="text-decoration: underline; font-size: 10px;">Подробнее</b></a>';
		$('#'+name).css('left',pos_x+$('#map').get(0).offsetLeft).css('top',pos_y+$('#map').get(0).offsetTop).css('cursor', 'pointer').show();
		C.tooltip_text = '';
		C.changeLinks();
		// trick to show the map, but not let drag it
		$('#blur').hide();
	},

	move_to_center: function(bldId) {
		// ищем объект, на который надо встать
		var new_lt=[
			-1000,
			-500
		];
		var ppref = '';
		var expr = /apartments\/streets/gi;
		if (document.location.href.match(expr)) {
			ppref='streets';
		}
		expr = /apartments\/district/gi;
		if (document.location.href.match(expr)) {
			ppref='district';
		}
		expr = /apartments\/metro/gi;
		if (document.location.href.match(expr)) {
			ppref='metro';
		}
		expr = /apartments\/houses/gi;
		if (document.location.href.match(expr)) {
			ppref='houses';
		}
		var wasfound = false;
		for(var i=0; i<C.objects_data.length; i++){
			var obj=C.objects_data[i];
			if (obj.ap==bldId) {
				wasfound = true;
				var width_screen = document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
				var height_screen = document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
				new_lt=[
					// минимальная ширина экрана, при которой все нормально отображается
					Math.max(Math.round(3 * width_screen / 4) - 100 - obj.x, 750 - obj.x),
					Math.max(Math.round(height_screen / 2) - 100 - obj.y, 300 - obj.y)
				];
				obj.width=40;
				if (obj.x < 1 || obj.y < 1) {
					wasfound = false;
				}
			}
		}
		if (!wasfound) {
			document.location.href='/apartments/'+ppref+'/bld'+bldId+'.html';
			return;
		}
		//скроллим карту, чтобы поселок был виден
		if(!C.mapredraw_timer){
			C.mapredraw_timer=setTimeout('C.mapRedraw()',100);
		}
		var map=$('#map').get(0);
		//преобразуем новые координаты так, чтобы карта не показывала свой край
		new_lt=C.mapCheckOutOfBorder(map,new_lt);
		//перепозициорируем карту
		$('#map').css('left',new_lt[0]).css('top',new_lt[1]);
		//пересчитываем зону навигатора
		C.navzoneRedraw();
		//подписываем
		for(var i=0; i<C.objects_data.length; i++){
			var obj=C.objects_data[i];
			if (obj.ap==bldId) {
				// dl for tooltip
				var hash={
					status: 1,
					header: "Апартаменты",
					text: obj.title,
					xy: [obj.x+17-17, obj.y-30],
					istooltip: bldId,
					prefix: ppref
				};
				// если это повторный клик - переход!
				if ($('#tooltip').css('display') == 'block') {
					if ($('#tooltiptext')[0].innerHTML == '<b>'+hash.header+'</b><br>'+hash.text) {
						document.location.href='#apartments/'+ppref+'/bld'+bldId+'.html';
					}
				}
				C.helper(hash);
				C.tooltip_text = 'Апартаменты<br>'+obj.title;
			}
		}
	},

	vlgPreviewsInit: function(){
		//если это страница с #vlgPreview
		if($('#vlgPreview').length){
			//создаем кнопки вперед-назад
			$('#vlgPreview').append(
				$('<a></a>').attr({href:'#'}).addClass('prev no-change').bind('click',function(event){
					event.preventDefault();
					C.vlgNextPreview(-1);
					this.blur();
				})
			).append(
				$('<a></a>').attr({href:'#'}).addClass('next no-change').bind('click',function(event){
					event.preventDefault();
					C.vlgNextPreview(1);
					this.blur();
				})
			);
			//вытаскиваем список фотографий и запоминаем его в глобальную переменную
			C.pictures=$('#vlgPreview').attr('rel');
			//строим теги <span> содержащие одну картинку и остальные заглушки,
			//чтобы не качать лишнего и не грузить сервер
			var pictures_pairs=C.pictures.split('|');
			var image_tag;
			if(pictures_pairs.length){
				var $span=$('<span></span>');
				C.pitcure_current_index=0;
				for(var i=0; i<pictures_pairs.length; i++){
					$span.addClass('image').append(C.vlgPreviewCode(i))
				}
				$('#vlgPreview>div').append($span);
				Shadowbox.clearCache();
				Shadowbox.setup();
			}
		}
	},

	vlgNextPreview: function(shift){//анимируем показ следующей превьюшки
		//определяем индекс текущей превьюшки
		var index=C.pitcure_current_index;
		if(false
			|| typeof index=='undefined' //индекс не найден
			|| index+shift==-1//пытаемся прокрутить левее первой картинки
			|| index+shift==C.pictures.length//попытка прокрутить правее последней картинки
		){return;}
		//пересчитываем index
		index=index+shift;
		//изменяем src картинки если нужно
		var $img2show=$('#pictindex'+index+' img');
		if($img2show.length){
			if($img2show.attr('src').indexOf('void.gif')>=0){
				$img2show.attr({
					src: C.pictures.split('|')[index].split(':')[0]
				})
			}
			//анимируем
			var left=-165*(index);
			$('#vlgPreview span.image').animate({left:left},'fast','linear');
			//переназначаем
			C.pitcure_current_index=index;
		}
	},

	vlgPreviewCode: function(index){
		var $image_tag, preview_src;
		var picture_pair=C.pictures.split('|')[index];
		if(index>0){
			preview_src='/img/void.gif';
		}else{
			preview_src=picture_pair.split(':')[0];
		}
		$image_tag=$('<a></a>').attr({
			href: picture_pair.split(':')[1],
			target: '_blank',
			rel: 'shadowbox[object]',
			id: 'pictindex'+index
		}).append(
			$('<img></img>').attr({
				src: preview_src,
				width: 160,
				height: 120
			})
		);
		return $image_tag;
	},

	favoritesSendForm: function(){

		var es=document.forms['applicationForm'].elements;
		var hash={ajax:2,send:'yes'};
		var fields='name,phone,email,comments,objects,projects,level,levels,rooms,square_from,square_to,life_square_from,life_square_to,kitchen_square_from,kitchen_square_to,price_from,price_to,hypothec'.split(',');
		for(var i=0; i<fields.length; i++){
			if (typeof es['applications['+fields[i]+']'] != 'undefined') {
				hash['applications['+fields[i]+']']=es['applications['+fields[i]+']'].value;
			}
		}
		var action=$('#applicationForm').attr('action');
		$.postJSON(action, hash, function(json){
			//заменяем контент на странице
			$('#contentBox').empty().append(json.content);
			//меняем ссылки на якоря
			C.changeLinks();
		});
		return false;
	},

	isMap: function(){
		if(location.pathname=='/' && location.hash=='#map/'){
			return true;
		}else{
			return false;
		}
	},

	arrayFind: function(array,value){
		for(var i=0; i<array.length; i++){
			if(array[i]==value){
				return i;
			}
		}
		return -1;
	},

	max: function(v1,v2){
		return ((v1>v2)?v1:v2);
	},

	house: {
		init: function(){
			//C.house.properties();
			C.house.description();
			C.house.actualpropo();
		},

		properties: function(){
			var $optional_props=$('#vlgInfo div.properties div.optional');
			if($optional_props.length){
				$optional_props.parent().append(
					$(document.createElement('p')).addClass('toggleProps').append(
						$(document.createElement('a')).attr({href:'#'})
					)
				)
				$optional_props.parent().find('p.toggleProps a').click(function(){
					var link_text=($optional_props.eq(0)[0].offsetHeight)?'Показать все характеристики':'Свернуть';
					$(this).text(link_text);
					$optional_props.slideToggle('fast',function(){C.doResize()});
					return false;
				}).trigger('click');
			}
		},

		description: function(){
			$after=$('#vlgInfo div.description p span.after');
			if($after.length){
				//добавляем ссылку
				$after.parent().after(
					$(document.createElement('p')).addClass('toggleText').append(
						$(document.createElement('a')).attr({href:'#'})
					)
				);
				$after.parent().parent().find('p.toggleText a').click(function(){
					var link_text=($after[0].offsetHeight)?'Читать полностью':'Свернуть';
					$(this).html('&nbsp;');
					$after.slideToggle();
					C.doResize();
					$(this).text(link_text);
					return false;
				}).trigger('click');
			}
		},

		actualpropo: function(){
			var $pane=$('div.scroll-pane').eq(0);
			//$pane.jScrollPane({animateTo:true});
			$('#vlgInfo p.actualPropo').click(function(){
				$pane[0].scrollTo('h5');
				return false;
			})
		}
	}
}

if(!window.console){
	window.console={
		log: function(str){
			window.__log__=str+ '...'+ window.__log__;
		}
	}
	window.__log__='';
	setInterval('windowstatusinterval()', 1000);
}

window.console.dir=function(hash){
	for(var i in hash){
		console.log([i,hash[i]])
	}
}

function windowstatusinterval(){
	window.status=window.__log__
}

// Удобная штука с visualjquery.com
$.postJSON = function(url, data, callback) {
	$.post(url, data, callback, "json");
};
