var onSelect = false;
var map;
$(document).ready(function(){
	/* Ajax-отправка формы */
	$('.submit').click(function()
	{
		var form = $("#" + $(this).attr("rel"));
		$('.error').html('');
		$.post(
			form.attr("action"),
			form.formSerialize(),
			function(results) {
			if (results.result == 'success') {
				if(results.redirect)
				{
					window.location = results.redirect;
				}
				else if(results.msg)
				{
					$('#error').html(results.msg);
					form.find('textarea').val('');
					form.find('input[type=text]').val('');
				}
				else if(results.comment)
				{
					$('.comments').append(results.comment);
					form.find('textarea').val('');
				}
				if(results.hide)
				{
					form.after($('#error').clone());
					form.hide();
				}
			} else {
				var first = false;
				$.each(results.errors, function(index, value) { 
					$('#' + 'error-' + index).html(value);
					if(! first)
					{
						$('#' + 'error-' + index).parents('.label').find('input:first').focus();
						first = true;
					}
				});
				if(results.captcha)
				{
					$('#captcha-id').val(results.captcha.id);
					$('#captcha-input').html(results.captcha.html);
				}
			}
		});
	    return false;
	});
	var options = { dataType: 'json',
		resetForm: true,
		success:function(results){
			$.each(results.errors, function(index, value) { 
				$('#' + 'error-' + index).html(value);
			});
		}
	};

	$('.ajax_form').submit(function() {
		$('.error').html('');
		$(this).ajaxSubmit(options);
		return false;
	});

	/* увеличение изображения */
	$(".image a[rel^='prettyPhoto'], .edit_anketa a[rel^='prettyPhoto']").prettyPhoto({theme:'facebook'});

	$('.review-action').live('click', function(){
		if($(this).parents('.comments').attr("nopaid"))
		{
			$(this).parents('.comments').html('<div>'+$(this).parents('.comments').attr("nopaid")+'</div>');
			return false;
		}
		var comment_id = $(this).attr("comment_id");
		$.ajax({
			type: "POST",
			data: ({comment_id : comment_id})
		});
		if($(this).text() == 'скрыть')
		{
			$(this).text('показать');
			$(this).parents('.review').removeClass('review').addClass('review-hide');
		}
		else
		{
			$(this).text('скрыть');
			$(this).parents('.review-hide').removeClass('review-hide').addClass('review');
		}
		return false;
	});

	/* список метро Москвы и Питера на всех страницах */
	$('.metro').change(function()
	{
        window.location = ($(this).attr("name") == 'sankt-peterburg' ? '/'+$(this).attr("name") : '') + ($(this).val() ? '/metro/'+$(this).val()+'/' : '');
	});

	/* список городов на всех страницах */
	$('.city').change(function()
	{
        window.location = '/'+$(this).val()+'/';
	});

	/* расширенный поиск */
	$('#search').submit(function(){
		$('#search input[type=text]').each(function(th){
			if($(this).val() == "от" || $(this).val() == 'до' || $(this).val() == '')
			{
				$(this).removeAttr("name");
				$(this).removeAttr("value");
			}
		});
	});

	/* карта метро*/
	//выбираем метро
	$('map area').live('click', function(){
		var show = $('.metro_marker[metro_id='+$(this).attr("metro_id")+']').is('img');
		metro_on_map($(this), show ? false : true);
		return false;
	});

	//нажимаем на выбранный маркер метро
	$('.metro_marker').live('click', function(){
		var metro = $('map area[metro_id='+$(this).attr("metro_id")+']');
		metro_on_map(metro, false);
	});

	//субмит формы с картой метро
	$('.show_metro').live('submit', function(){
		$('.show_metro input[type=hidden]').each(function(){
			if($(this).val() == "")
			{
				$(this).remove();
			}
		});
		$('input[type=checkbox]').each(function(){
			if($(this).attr("name") == "rayon_id")
			{
				$(this).val('');
			}
		});
	});

	/* быстрый поиск */
	$(".sort-param a").live("click", function(e){
	    $.post(
		$(this).attr('href'),
		{},
		function(results) {
			$('.ajax-content').html(results.result);
			$('.count-anketa').text(results.count_anketa);
			$('.sort-param').html('');
			$(results.sort).appendTo(".sort-param");
		}
	    );
	    return false;
	});

	$(".sort-param .checkbox").live("click", function(e){
	    $.post(
		$(this).find('input').attr('rel'),
		{},
		function(results) {
			$('.ajax-content').html(results.result);
			$('.count-anketa').text(results.count_anketa);
			$('.sort-param').html('');
			$(results.sort).appendTo(".sort-param");
		}
	    );
	    return false;
	});

	/* постраничная навигация */
	$("#pages a").live('click', function() {
		$.post(
			$(this).attr('href'),
			function(results) {
				$('.ajax-content').html(results.result);
				$('.count-anketa').text(results.count_anketa);
			}
		);
		$(this).attr("href", '#1');
	});

	/* несистемные чекбоксы */
	$(".checkbox").live('click', function() {
		if($(this).find('input').attr("checked"))
		{
		    $(this).removeClass("selected");
		    $(this).find('input').attr("checked", false);
		}
		else
		{
		    $(this).addClass("selected");
		    $(this).find('input').attr("checked", true);
		}

		// если чекбокс выбирает район
		check_rayon(this);
		// если чекбокс выбирает округ
		check_okrug(this);
		return false;
	});

	/* несистемные списки */
	$(".select").each(function(){
		var val = $(this).find('select option:selected').text();
		if(! val)
		{
			val = $(this).find('select option:first').text();
		}
		$(this).find('select').hide();
		$(this).append('<span>'+val+'</span>');
	});

	$(".select").live('click', function(){
		// если этот список - метро на странице редактирования
		/*if($(this).is('.metro_edit'))
		{
			var city_id = $('.city_edit select').val();
			if(city_id)
			{
				$(this).prepend('<ul></ul>');
				var To = $(this).find('ul');
				$(this).find('select option[city_id='+city_id+']').each(function(){
					
					To.append('<li val="'+$(this).val()+'">'+$(this).text()+'</li>');
				});
			}
		}
		else
		*/
		if($(this).is('.metro_edit'))
		{
			var rel_metro_id = '';
			if($('.metro_edit select[name=metro_id]').val())
			{
				rel_metro_id = $('.metro_edit select[name=metro_id] option:selected').attr("rel_metro").split(',');
			}
			var name_this_select = $(this).find('select').attr('name');
			if(name_this_select != 'metro_id' && ! rel_metro_id)
			{
				alert('Выберите сначала первое метро');
				return false;
			}
			$(this).prepend('<ul></ul>');
			var To = $(this).find('ul');
			$(this).find('select option').each(function(){
				if(name_this_select == 'metro_id' || in_array($(this).val(), rel_metro_id) || ! $(this).val())
				{
					To.append('<li val="'+$(this).val()+'">'+$(this).text()+'</li>');
				}
			});
		}
		else
		if($(this).find('ul').length)
		{
			$(this).find('ul').remove();
		}
		else
		{
			$(this).prepend('<ul></ul>');
			var To = $(this).find('ul');
			$(this).find('select option').each(function(){
				To.append('<li val="'+$(this).val()+'">'+$(this).text()+'</li>');
			});
		}
	});
	$('body').click(function(){
		if(! onSelect)
		{
			$(".select").find('ul').remove();
		}
	});

	$(".select ul").live('mouseover', function(){
		onSelect = true;
	});
	
	$(".select ul").live('mouseout', function(){
		onSelect = false;
	});

	$(".select ul li").live('mouseover', function(){
		$(this).css('background-color', '#ccc');
	});
	
	$(".select ul li").live('mouseout', function(){
		$(this).css('background-color', '#fff');
	});
	
	$(".select ul li").live('click', function(){

		// если это список метро в верхней части сайта
		if($(this).parents('.select').find('select').is('.metro'))
		{
			var city = $(this).parents('.select').find('select').attr("name");
			window.location = (city == 'sankt-peterburg' ? '/'+city : '')+($(this).attr("val") ? '/metro/'+$(this).attr("val")+'/' : '');
		}
		// если это список городов в верхней части сайта
		else if($(this).parents('.select').find('select').is('.city'))
		{
			window.location = '/'+$(this).attr("val")+'/';
		}
		// если это список городов на yandex карте
		else if($(this).parents('.select').find('select').is('#city-map'))
		{
			$(this).parents('.select').find('span').text($(this).text());
			$(this).parents('.select').find('select').val($(this).attr("val"));
			select_city_on_map(this);
		}
		// если это список городов в расширенном поиске
		else if($(this).parents('.select').find('select').is('#city-block'))
		{
			// выбрали Москву
			if($(this).attr("val") == 174)
			{
				$('.metro-block').show();
				$('.rayon-block').show();
				$('.moskva_metro').show();
				$('.moskva_rayon').show();
				$('.piter_metro').hide();
				$('.piter_rayon').hide();
			}
			// выбрали Питер
			else if($(this).attr("val") == 403)
			{
				$('.metro-block').show();
				$('.rayon-block').show();
				$('.piter_metro').show();
				$('.piter_rayon').show();
				$('.moskva_metro').hide();
				$('.moskva_rayon').hide();
			}
			// выбрали другой город
			else
			{
				$('.metro-block').hide();
				$('.rayon-block').hide();
			}
			// убираем отмеченные метро
			$('.show_metro input[type=hidden]').each(function(th){
				if($(this).val() != "")
				{
					$(this).remove();
				}
			});
			// убираем отмеченные районы и округи
			$('.show_metro input[type=checkbox]').each(function(th){
				if($(this).attr("name") == "rayon_id[]")
				{
					$(this).attr('checked', false);
				}
			});
			$(this).parents('.select').find('span').text($(this).text());
			$(this).parents('.select').find('select').val($(this).attr("val"));
		}
		else
		{
			// если этот список - города на странице редактирования
			/* if($(this).parents('.select').is('.city_edit'))
			{
				if($(this).attr("val") && ($(this).attr("val") == 174 || $(this).attr("val") == 403))
				{
					$('.metro_edit').parents('.address_contaner').show();
					if(! $('.metro_edit select:first').val())
					{
						$('input[name=street]').parents('.address_contaner').hide();
					}
				}
				else
				{
					if($(this).attr("val"))
					{
						$('input[name=street]').parents('.address_contaner').show();
					}
					else
					{
						$('input[name=street]').parents('.address_contaner').hide();
					}
					$('.metro_edit').parents('.address_contaner').hide();
				}
			}
			else
			*/
			if($(this).parents('.select').is('.metro_edit'))
			{
				$('input[name=street]').parents('.address_contaner').show();
			}
			$(this).parents('.select').find('span').text($(this).text());
			if($(this).parents('.select').find('select').attr("name") == 'metro_id' && $(this).parents('.select').find('select').val() != $(this).attr("val"))
			{
				$('.metro_edit select[name=metro_id2], .metro_edit select[name=metro_id3]').val('');
				$('.metro_edit select[name=metro_id2], .metro_edit select[name=metro_id3]').parents('.select').find('span').html('&nbsp;');
			}
			$(this).parents('.select').find('select').val($(this).attr("val"));
			$(this).parents('ul').remove();
			return false;
		}
	});
	
	$('.input-phone input').keyup(function(){
		if($(this).val().length == $(this).attr("maxlength"))
		{
			$(this).next('input').focus();
		}
	});
	
	$('ul#files li').live('mouseover', function(){
		$(this).find('div').show();
	});

	$('ul#files li').live('mouseout', function(){
		$(this).find('div').hide();
	});
	
	$('input[name=autopay]').click(function(){
		$.post(
			"/user/autopay/" + $(this).attr('anketa_id') + "/",
			{act: ($(this).attr('checked') ? 1 : 0)}
		);
	});
});

// добавляет в избранное
function bookmark()
{
            var title = "Проститутки";
            var url = "http://www.dosugworld.com/";

            if (window.sidebar) {
                window.sidebar.addPanel(title, url, "");
            } else if(window.opera && window.print) {
                var elem = document.createElement('a');
                elem.setAttribute('href',url);
                elem.setAttribute('title',title);
                elem.setAttribute('rel','sidebar');
                elem.click();
            }else if(document.all) {
                window.external.AddFavorite(url, title);
            }else {
                alert("Попробуйте добавить в избранное вручную ");
            }

            return false;
}

// отмечаем район
function check_rayon(self)
{
	if($(self).find('input').attr("name") == "rayon_id[]")
	{
		if($('#sitemap_rayon').is('div'))
		{
			var hide_submit = true;
			$('#sitemap_rayon input[type=checkbox]').each(function(){
				if($(this).attr("checked")){
					hide_submit = false;
				}
			});
			if(hide_submit)
			{
				$('#sitemap_submit').hide();
			}
			else
			{
				$('#sitemap_submit').show();
			}
		}
		else
		{
			var metro = $('map area[rayon_id='+$(self).find('input').attr("value")+']');
			var show = $(self).find('input').attr("checked");
			metro.each(function(){metro_on_map($(this), show);});
		}
	}
}

// отмечаем округ
function check_okrug(self)
{
	if($(self).parents('#sitemap_okrug').is('div') && ! $(self).attr("okrug_id"))
	{
		$('#sitemap_okrug div[okrug_id='+$(self).find('input').attr("value")+']').each(function(){
			var metro = $('map area[rayon_id='+$(this).find('input').attr("value")+']');
			if($(self).find('input').attr("checked"))
			{
			    $(this).addClass("selected");
			    $(this).find('input').attr("checked", true);
			    metro.each(function(){metro_on_map($(this), true);});
			}
			else
			{
			    $(this).removeClass("selected");
			    $(this).find('input').attr("checked", false);
			    metro.each(function(){metro_on_map($(this), false);});
			}
		});
		if($('#sitemap_rayon').is('div'))
		{
			var hide_submit = true;
			$('#sitemap_rayon input[type=checkbox]').each(function(){
				if($(this).attr("checked")){
					hide_submit = false;
				}
			});
			if(hide_submit)
			{
				$('#sitemap_submit').hide();
			}
			else
			{
				$('#sitemap_submit').show();
			}
		}
	}
}

// отмечаем метро на карте
function metro_on_map(self, show)
{
	var metro_id = self.attr("metro_id");
	if(! metro_id)
	{
		return false;
	}
	if(show)
	{
		$('.example').after($('.example').clone(true).val(metro_id).removeClass('example'));
		$('.example_img').after(
					$('.example_img').clone(true)
					.show()
					.css({'top': self.attr("position_top")+'px', 'left': self.attr("position_left")+'px'})
					.removeClass('example_img')
					.addClass('metro_marker')
					.attr('metro_id', metro_id)
					.attr('title', self.attr("title"))
					.attr('alt', self.attr("title"))
					);
	}
	else
	{
		$('img[metro_id='+metro_id+']').remove();
		$('.show_metro input[type=hidden][value='+metro_id+']').remove();
	}
	
	if($('.hide_button').is('input'))
	{
		if($('.metro_marker').is('img'))
		{
			$('.show_metro input.hide_button').show();
		}
		else
		{
			$('.show_metro input.hide_button').hide();
		}
	}
}

// выбираем город на yandex-карте
function select_city_on_map(self)
{
	var sel = $(self).parents('.select').find('select option:selected');
	map.setCenter(new YMaps.GeoPoint(sel.attr("ya_x"), sel.attr("ya_y")), sel.attr("ya_m"));
}

function in_array(needle, haystack, strict) {
	var found = false, key, strict = !!strict;

	for (key in haystack) {
		if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
			found = true;
			break;
		}
	}

	return found;
}
