
var aSearchBlocks = {
	'novo_msk' : {'left_top':'metro', 'center_top':'flat_set', 'right_top':'price_kvm',
								'left_bottom':'rayon', 'center_bottom':'square_kvm', 'right_bottom':'state'},

	'novo_podm' : {'left_top':'cities', 'center_top':'flat_set', 'right_top':'price_kvm',
								'left_bottom':'mkad', 'center_bottom':'square_kvm', 'right_bottom':'state'},

	'cottage' : {'left_top':'highway', 'center_top':'square_house', 'right_top':'price_obj',
							'left_bottom':'mkad', 'center_bottom':'square_land', 'right_bottom':'state'},

	'countryside_zhk' : {'left_top':'highway', 'center_top':'flat_set', 'right_top':'price_kvm',
											'left_bottom':'mkad', 'center_bottom':'square_kvm', 'right_bottom':'state'},

	'ubp_settlement' : {'left_top':'highway', 'center_top':'price_100',
											'left_bottom':'mkad', 'center_bottom':'square_land'}
};

var pls = [
	'однушка в Бирюлево',
	'загородные жк',
	'двухкомнатная квартира в Москве',
	'купить однушку на Алексеевской',
	'трешка в Царицыно',
	'коттедж на Минском шоссе',
	'купить таунхаус на новой риге',
	'купить землю на Дмитровке',
	'квартиры в Балашихе',
	'земельные участки на ярославском шоссе',
	'новостройка в Апрелевке',
	'жк Москвы',
	'таунхаусы Алтуфьевское',
	'купить таун на калужке',
	'новостройки в Подмосковье',
	'четырехкомнатная квартира в Подольске',
	'купить коттедж на Киевском шоссе',
	'купить участок на Горьковском направлении',
	'квартиры в Измайлово',
	'однушки в Домодедово',
	'квартиры в Железнодорожном',
	'купить однушку в Ивантеевке',
	'квартиры в Видном',
	'коттеджи на Симферопольском шоссе',
	'новостройки в Люберцах'
];

var obj_types = {
	'novo_msk' :			'Новостройки Москвы',
	'novo_podm':			'Новостройки Подмосковья',
	'cottage':				'Коттеджные посёлки',
	'townhouse':			'Посёлки таунхаусов',
	'countryside_zhk':		'Загородные ЖК',
	'ubp_settlement':		'Участки без подряда'
};

var speed = 3000;
var timer_id = '';
var is_placeholder = false;

function startPl(){
	timer_id = self.setInterval("rotatePl()",speed);
}

function rotatePl(){
	i = randomNumber(0, pls.length - 1);
	$('.search_input').val(pls[i]).addClass('placeholder');
	is_placeholder = true;

}

function stopPl() {
	clearInterval(timer_id);
	is_placeholder = false;
	$('.search_input').val('').removeClass('placeholder');
}

function randomNumber (m,n) {
	m = parseInt(m);
	n = parseInt(n);
	return Math.floor( Math.random() * (n - m + 1) ) + m;
}

$(document).ready(function(){

	$('a').click(function(){
		var href = $(this).attr('href');
		if(href.indexOf('#') === 0 && $('a[name="'+cut_href+'"]').size()) {
			var cut_href = href.substring (1, href.length); ;
			$("html,body").animate({scrollTop: $('a[name="'+cut_href+'"]').offset().top}, 1000);
			return false;
		}else{
			return true;
		}
	});

	if (placeholder) {
		rotatePl();
		startPl();
	}

	$('.search_input').focus(function() {
		if (is_placeholder) {
			stopPl();
		}
	}).blur(function(){
		if($(this).val() == ''){
			is_placeholder = true;
			rotatePl();
			startPl();
		}
	});

	setEvents();

	/*$(window).resize(function() {
		setCompareWidth();
	});*/
	
	//checkComparedId();
	//setCompareWidth();

	var aButtons = [ 'google', 'facebook','vkontakte','odnoklassniki','mail','twitter','feedback'];
	$('#socialshit').social({buttons: aButtons, pageUrl : encodeURIComponent('http://www.realsearch.ru/')});
});

function setCompareWidth() {
	$('#checker_box').hide();
	var width = $('#compare_box').width();
	$('#checker_box').show().width(width);
}

function setMetroMap(arr){
	names = [];

	$(".item_list[rel='metro'] a").each(function(){
		$(this).removeClass('selected');
		if(in_array($(this).attr('rel'), arr)){
			names[names.length] = $(this).html();
			$(this).addClass('selected');
		}
	});

	$('#items_metro').val('['+implode(',', arr)+']');
	$('.items_metro').html(implode(', ', names));
}

function getSelectedMetro(){
	var metro_str = $('#items_metro').val();
	metro_str = metro_str.substring (1, metro_str.length);
	metro_str = metro_str.substring (0, metro_str.length - 1);

	if(metro_str.length > 0){
		return metro_str.split(',');
	}else{
		return false;
	}
}

function getSelectedRoad(){
	var metro_str = $('#items_highway').val();
	metro_str = metro_str.substring (1, metro_str.length);
	metro_str = metro_str.substring (0, metro_str.length - 1);

	if(metro_str.length > 0){
		return metro_str.split(',');
	}else{
		return false;
	}
}

function setRoadMap(arr) {

	names = [];

	$(".item_list[rel='highway'] a").each(function(){
		$(this).removeClass('selected');
		if(in_array($(this).attr('rel'), arr)){
			names[names.length] = $(this).html();
			$(this).addClass('selected');
		}
	});
	$('#items_highway').val('['+implode(',', arr)+']');
	$('.items_highway').html(implode(', ', names));

	if(names.length > 0) {
		$('#clear_selected_highway').show();
	}else{
		$('#clear_selected_highway').hide();
	}

}

function in_array(need, arr){
	for(var i = 0, l = arr.length; i < l; i++)  {
		if(arr[i] == need) {
			return true;
		}
	}
	return false;
}

function setMetroMapLink(){
	$('#openMetro').metromap({ 'maxMetro': 100, 'anchor': '#metro_anchor', 'callBack': 'setMetroMap', 'preCall': 'getSelectedMetro'});
}

function setSearchMapLink() {
	$('#msearch').mSearch({width: 960, height: 600, input: '#mbounds', area: '#msearcharea'});
}

function setRoadMapLink(){
	$('#openRoad').roadmap({ 'anchor': '#road_anchor', 'callBack': 'setRoadMap', 'preCall': 'getSelectedRoad'});
}


function checkSfrom (el){
	var rel = $(el).attr('rel');
	var unit = (rel == 'square_land')? "соток" : "кв.м.";
	checkDiapason( '#' + rel + '_from', '#' + rel + '_to', 'items_' + rel, unit, rel);
}

function checkSto (el){
	var rel = $(el).attr('rel');
	var unit = (rel == 'square_land')? "соток" : "кв.м.";
	checkDiapason('#' + rel + '_from', '#' + rel + '_to', 'items_' + rel, unit, rel);
}

function checkPfrom (el){
	var rel = $(el).attr('rel');
	var currency = $("#" + rel + "_currency option:selected").text();
	checkDiapason('#' + rel + '_from', '#' + rel + '_to','items_' + rel, currency, rel);
}

function checkPto (el){
	var rel = $(el).attr('rel');
	var currency = $('select[rel="' + rel + '"] option:selected').text();
	checkDiapason('#' + rel + '_from', '#' + rel + '_to', 'items_' + rel, currency, rel);
}

function setEvents()
{
	// для площадей
	$('.s_from').live('keyup', function(){ checkSfrom(this);})
				.live('blur', function(){ checkSfrom(this);});

	$('.s_to')	.live('keyup', function(){ checkSto(this);})
				.live('blur', function(){ checkSto(this);});

	// для цен
	$('.p_from').live('keyup', function(){ checkPfrom(this);})
				.live('blur', function(){ checkPfrom(this);});

	$('.p_to')	.live('keyup', function(){ checkPto(this);})
				.live('blur', function(){ checkPto(this);});

	$('.dropdown li a').live('click', function(){
		changeType(this);
		$('.active_type').removeClass('opened');
		return false;
	});

	$('.active_type').live('click', function(){
		if(is_placeholder){
			stopPl();
		}
		if($('.dropdown ul').css('display') != 'none'){
			$('.dropdown ul').hide();
			$(this).removeClass('opened');
		}else{
			$('.dropdown ul').show();
			$(this).addClass('opened');
		}
	});

	$('.clear_search').live('click', function(){
		clearInterval(timer_id);
		$('.search_input').val('');
		var index = $(this).attr('rel');
		$('.search_input').eq(index).focus();
		return false;
	});

	$('.advanced_search').live('click', function(){
		staticheight = $('.advanced_links').height();

		$('.dropdown ul').hide();
		var index = $(this).attr('rel');
		toggleForm(index);

		return false;
	});

	$('.close_advanced_form').live('click', function(){
		$(this).css('position', 'static');
		var index = $(this).attr('rel');
		toggleForm(index);
		return false;
	});

	$('.reset_advanced_form').live('click', function(){
		$('#mbounds').val('');
		$('#msearcharea').html('Область поиска не выбрана');
		$('.item_list a').removeClass('selected');
		$('.clear_selected').hide();
		$('.selected_items span').html('');
		$('.selected_items input').val('');
		$('.p_from').val('');
		$('.p_to').val('');
		$('.s_from').val('');
		$('.s_to').val('');
		$.cookie('saved_form_values', null, cookie_settings);
		return false;
	});


	$('a.advanced_search_link').live('click', function(){
		var type = $(this).attr('abbr');

		var index = $(this).parent().parent().attr('rel');
		$(".sub_geo li a[rel='" + type + "']").click();
		toggleForm(index);

		return false;
	});

	$('.form_item span').live('click', function(){
		$(this).toggleClass('opened');
		var p = $(this).parent('.form_item');
		p.find('.item_list').eq(0).toggleClass('hidden');
		p.find('.clear_subform').eq(0).toggleClass('hidden');

		var rel = $(this).attr('rel');
		var status = (p.find('.item_list').eq(0).hasClass('hidden'))? 'hidden' : 'showed';

		$.cookie('switch_' + rel, status, cookie_settings);
	});

	$('.clear_subform a').live('click', function(){
		clearByType($(this).attr('rel'));
		return false;
	});

	$('.item_list a').live('click', function(){
		var type = $(this).parent('.item_list').attr('rel');

		$(this).toggleClass('selected');

		onListClick(type);

		return false;
	});

	$('.sub_geo li a').live('click', function(){

		var rel = $(this).attr('rel');
		$('#object_type').val(rel);

		$('.sub_geo li a').removeClass('active');
		$(this).addClass('active');

		$(".search_block_ph").each(function(index){
			var contains = $(this).attr('abbr');

			if(contains!='') {
				var div = $(".search_block[rel='"+contains+"']");
				div.html($(this).html());
				$(this).html('');
				$(this).attr('abbr', '');
			}
		});

		// в aSearchBlocks тауны и коттеджи имеют одни параметры поиска
		if(rel == 'townhouse')
				rel = 'cottage';

		$.each(aSearchBlocks[rel], function(index, value) {
			var td = $(".search_block_ph[headers='"+index+"']");
			td.attr('abbr', value);
			var div = $(".search_block[rel='"+value+"']");

			var status = $.cookie('switch_' + value);
			var list = div.find('.item_list');
			var clear = div.find('.clear_subform');
			var span = div.find('span').eq(0);

			if (status == 'hidden') {
				list.addClass('hidden');
				clear.addClass('hidden');
				span.removeClass('opened');
			}

			if (status == 'showed') {
				list.removeClass('hidden');
				clear.removeClass('hidden');
				span.addClass('opened');
			}

			td.html(div.html());
			div.html('');
		});

		// для разных типов объектов список стадий должен быть разным
		if(rel == 'novo_msk' || rel == 'novo_podm' || rel == 'countryside_zhk')
		{
			$('div[rel="state"] a[rel="2"]').hide();
			$('div[rel="state"] a[rel="9"]').hide();
		}
		else if(rel == 'cottage')//коттеджи и тауны - одно и то же для стадий
		{
			$('div[rel="state"] a[rel="2"]').show();
			$('div[rel="state"] a[rel="9"]').show();
		}
		onListClick('state');

		setMetroMapLink();
		setRoadMapLink();
		setSearchMapLink();

		return false;
	});


	$('.clear_selected').live('click', function(){
		var type = $(this).attr('rel');
		clearByType(type);
	}).live('mouseover', function(){
		$(this).parent().css('background','#720000');
	}).live('mouseout', function(){
		$(this).parent().css('background','transparent');
	});
	/*
	$('.close_compare_item').click(function(){
		var id = $(this).attr('rel');
		var type = $(this).attr('abbr');

		$('.row_' + id).remove();
		var ids = getCompareIds(type);

		ids = deleteFromArray(id, ids);
		$.cookie('compare_' + type, implode(",",ids), cookie_settings);
		if(ids.length == 0) {
			$('#compare_table').hide();
			$('#noidea').show();
		}
		return false;
	});
	*/
}

function toggleForm(index) {
	if($('#params_form'+index).css('display') == 'none'){
		$('.close_advanced_form').css('position', 'relative');
		$('#params_form'+index).show();
		$('.advanced_links').hide();
		$.cookie('show_advanced_form', 1, cookie_settings);
	}else{
		$('#params_form'+index).hide();
		$('.advanced_links').show();
		$.cookie('show_advanced_form', 0, cookie_settings);
	}
}

// вынесено в отдельную функцию из-за разных Готовностей для разных типов объектов
function onListClick(type)
{
	$('.items_' + type).html('');
	var names = [];
	var ids = [];

	// Готовность разная для некоторых типов объектов, будет сбиваться, поэтому :visible
	var a = $('div.item_list[rel="'+type+'"]').children('a');

	a.each(function(index, el){
		if($(el).hasClass('selected') && $(el).css('display') != 'none'){
			names[names.length] = $(this).html();
			ids[ids.length] = $(this).attr('rel');
		}
	});

	$('.items_' + type).append(implode(', ', names));
	$('#items_' + type).val('['+implode(',', ids)+']');
	if(names.length > 0){
		$('#clear_selected_' + type).show();
	}else{
		$('#clear_selected_' + type).hide();
	}
}

function checkDiapason (from_el, to_el, target, after, type)
{
	var str = '';
	var af = after || '';

	var from = $(from_el).val();
	from = from.replace(/[а-я]+/i, '');//потому что мы всё еще на 1251
	from = from.replace(/[^\d\s\.]+/i, '');
	var to = $(to_el).val();
	to = to.replace(/[а-я]+/i, '');
	to = to.replace(/[^\d\s\.]+/i, '');

	if(from != ''){
		str += 'от ' + from + ' ';
	}

	if(to != ''){
		str += 'до ' + to + ' ';
	}

	if(af != '' && (from!='' || to!='')){
		str += ' ' + af;
	}

	$('.'+target).html(str);

	if(from != '' || to != ''){
		$('#clear_selected_' + type).show();
	}else{
		$('#clear_selected_' + type).hide();
	}

	if(from == '') from = '-1';
	if(to == '') to = '-1';

	to = to.replace(/\s/gi, '');
	from = from.replace(/\s/gi, '');
	$('#'+target).val('['+from+','+to+']');
}

function clearByType(type){
	$(".item_list[rel='" + type + "'] a").removeClass('selected');
	$('.items_' + type).html('');
	$('#'+type+'_from').val('');
	$('#'+type+'_to').val('');
	$('#items_' + type).val('');
	$('#clear_selected_' + type).hide();
}

function changeType(el){
	var type = $(el).attr('rel');
	var val = $(el).html();

	$('.dropdown li a').removeClass('active');
	$(el).addClass('active');

	$('.active_type').html(val);
	$('.dropdown ul').hide();

	var index = $(el).parent('li').parent('ul').attr('rel');
	$('.search_input').eq(index).focus();

	$('#search_area').val(type);
}

function implode( glue, pieces ) {
	return ( ( pieces instanceof Array ) ? pieces.join ( glue ) : pieces );
}

function decode_mail(el) {
	var mailto = el.rel;
	mailto += '@';
	mailto += el.id +'.';
	mailto += el.name;
	el.href = "mailto:" + mailto;
	el.innerHTML = mailto;
	return true;
}

var TipTimer;

function showTip(el, text) {
	removeTips();
	stopTipsTimer();

	var type = $(el).attr('abbr');
	var ids = compareTotal(type);

	if(ids && ids >= 2) {
		var span = $("<div>").html(text);
		var tip = $("<div>").addClass('compare_tip').append(span);
		$('html').append(tip);

		var top = $(el).offset().top;
		var left = $(el).offset().left;
		var height = parseInt(tip.height()/2 - 7);
		var width = parseInt(tip.width() + 10);
		var offsetTop = parseInt(top - height);
		var offsetLeft = parseInt(left - width);

		tip.css({top: offsetTop, left: offsetLeft});
		startTipsTimer();

		tip.mouseover(function(){
			stopTipsTimer();
		}).mouseout(function(){
			startTipsTimer();
		});
	}
}

function startTipsTimer() {
	TipTimer = window.setInterval(removeTips,10000);
}

function stopTipsTimer() {
	clearInterval(TipTimer);
}

function removeTips(){
	$('.compare_tip').remove();
}

function closeTips() {
	removeTips();
	stopTipsTimer();
}

function compareTotal(type) {
	var ids = $.cookie('compare_' + type );
	if(ids) {
		return ids.split(',').length;
	}else{
		return false;
	}
}

function toggleObjectCompare(el, id) {
	var type = $(el).attr('abbr');
	var selected = compareTotal(type);

	if(selected == 5 && !$(el).hasClass('fav_icon_selected')) {
		showTip(el, '<font color=red>Вы можете сравнивать<br>не более 5 объектов.</font><Br><a href="/object/compare/'+type+'">Сравнить выбранные</a>');
		return false;
	}

	$(el).toggleClass('fav_icon_selected');
	$('#row_' + id).toggleClass('selected');
	prepareFormForCompare(type);

	showTip(el, '<b>' + obj_types[type] + '</b><br>Выбрано объектов: ' + compareTotal(type) + '<br><a href="/object/compare/'+type+'">Сравнить объекты</a>');
	return false;
}

function getCompareIds(type){
	var ids = $.cookie('compare_' + type);
	return (ids)? ids.split(',') : new Array;
}

function toggleObjectCompareSingle(el, id) {
	var type = $(el).attr('abbr');
	var ids = getCompareIds(type);

	if($(el).hasClass('fav_icon_selected')) {
		$(el).removeClass('fav_icon_selected');
		ids = deleteFromArray(id, ids);
	} else {
		$(el).addClass('fav_icon_selected');
		if(!in_array(id, ids)){
			ids[ids.length] = id;
		}
	}

	$.cookie('compare_' + type, implode(',', ids), cookie_settings);

	showTip(el, '<b>' + obj_types[type] + '</b><br>Выбрано объектов: ' + compareTotal(type) + '<br><a href="/object/compare/'+type+'">Сравнить объекты</a>');
	return false;
}

/*
function compareAllObjectsInPage(el) {
	var selected_class = 'fav_icon_selected';

	if($(el).hasClass(selected_class)){
		$("table.results tr[id^='row']").removeClass('selected');
		$('.fav_icon').removeClass(selected_class);
	} else {
		$("table.results tr[id^='row']").addClass('selected');
		$('.fav_icon').addClass(selected_class);
	}
	prepareFormForCompare();
	return false;
}
*/

function prepareFormForCompare(type) {
	ids = [];
	$('tr.selected').each(function(index, el){
		ids[ids.length] = $(el).attr('rel');
	});

	var commed_ids = implode(',', ids);

	$('#compare_ids').val('['+commed_ids+']');

	$.cookie('compare_' + type, commed_ids, cookie_settings);

	return false;
}

function checkComparedId(){
	var ids = getCompareIds($('#obj_type').val());

	if(ids){
		$('table.results tr').each(function(index, el){
			var id = $(el).attr('rel');
			if(in_array(id, ids)) {
				$(el).addClass('selected');
				$(el).find('.fav_icon').addClass('fav_icon_selected');
			}
		});

		$('.fav_single').each(function(index, el){
			var rel = $(el).attr('rel');
			if(in_array(rel, ids)){
				$(el).addClass('fav_icon_selected');
			}
		});
	}
}

function clearCompareSelected(type, el) {
	$.cookie('compare_' + type, '', cookie_settings);
	$('#compare_table').hide();
	$('#noidea').show();
	$(el).remove();
}


function v(taV) {
  alert(getProps(taV));
}

/**
 * возвращает список атрибутов объекта и значения
 * @param {Element/Object} toObj - ссылка на объект
 * @param {String} tcSplit - строка разделитель строк
 * @return {String} - строку со списком атрибутов объекта
 * и значениями атрибутов
 */
function getProps(toObj, tcSplit) {
	if (!tcSplit) tcSplit = '\n';
	var lcRet = '';
	var lcTab = '    ';

	for (var i in toObj) // обращение к свойствам объекта по индексу
		lcRet += lcTab + i + " : " + toObj[i] + tcSplit;

	lcRet = '{' + tcSplit + lcRet + '}';

	return lcRet;
}

function deleteFromArray(v, arr){
	var new_arr = new Array();
	for(var i = 0; i < arr.length; i++){
		if(arr[i] != v && arr[i]) {
			new_arr[new_arr.length] = arr[i];
		}
	}
	return new_arr;
}

function initStateCarousel(state) {
	$('#state_carousel li').removeClass('active');
	$('#state_' + state).addClass('active');
	$('#state_img').attr('src', '/img/states/' + $('#state_img').attr('rel') + '/' + state + '.jpg');
}

function sendCurseToDevelopers(query_log_id) {
	var ans = prompt('Уточните, пожалуйста, что именно вас не устраивает в результатах поиска:');

	if (ans)
	{
		$.post('/search/blameFuckingDevelopers/',
			{
				'id' : query_log_id,
				'comment' : encodeURIComponent(ans)
			}, 
			function(data) {
				$('div[rel=\"blameCanada\"]').remove();
				alert('Жалоба отправлена программистам. Ваш запрос разберут отдельно. \r\nСпасибо вам за помощь в совершенствовании нашего интеллектуального поиска.\r\n\r\n');
			}
		);
	}
}
