$('document').ready(function(){
	var id_metro = $('#metro').val();
	var id_town = $('#town').val();
	var date = $('#date').val();
	var metro_changed = $('#metro_changed').val();
	
	$('#tso_metro_container').click(function(e){
		var $metro_container = $(this);
		if ($(e.target).hasClass('tso_row')){
			if (!$metro_container.hasClass('processing')){
				
				// на контейнер вешаем атрибут - обработка запроса
				$metro_container.addClass('processing');
				
				//ставим атрибут, что кликнули по метро
				$('#metro_changed').val('yes');
				
				// парсим id метро
				match = /\bid(\d+)s\b/.exec($(e.target).attr('class'));
				id_metro = match[1];
				
				// делаем запрос
				makeRequest();
		
				// устанавливаем выбранное метро
				$('#metro').val(id_metro);
				
				// сбрасываем выбранное метро/город
				flushSelectedPlace();
				
				$metro_container
					.find('.id'+id_metro+'s')
					.addClass('selected_metro')
					.each(function(){
						$selected_metro = $(this);
						if ($selected_metro.css('left') == 'auto'){
							x = ($metro_container.width() - parseFloat($selected_metro.css('right')) - $selected_metro.width()) + 'px';
						}else{
							x = $selected_metro.css('left');
						}
						$selected_metro.css({'background' : 'url(\'/images/metro/'+id_town+'_highlighted.gif\') no-repeat scroll -'+x+' -'+$selected_metro.css('top')+' transparent'});
					});
			}
		}
		
		return false;
	});
	
	// вешаем событие на список городов
	$('#tso_town_container').click(function(e){
		if ($(e.target).hasClass('tso_town_row')){
			if (!$('#tso_metro_container').hasClass('processing')){
			
				// на контейнер вешаем атрибут - обработка запроса
				$('#tso_metro_container').addClass('processing');
				
				//ставим атрибут, что кликнули по метро
				$('#metro_changed').val('yes');
				
				// парсим id метро
				match = /\bid(\d+)s\b/.exec($(e.target).attr('class'));
				id_metro = match[1];
				
				// делаем запрос
				makeRequest();
				
				// устанавливаем выбранное метро/город
				$('#metro').val(id_metro);
				
				// сбрасываем выбранное метро/город
				flushSelectedPlace();
				
				// устанавливаем выбранный город
				$(e.target).addClass('selected_town');
			}
		}
		
		return false;
	});
	
	$('#calendar_container').click(function(e){
		var $calendar_container = $(this);
		// клики по навигации
		if ($(e.target).hasClass('tso_nav')){
			
			if (!$('#tso_metro_container').hasClass('processing')){
				// на контейнер вешаем атрибут - обработка запроса
				$('#tso_metro_container').addClass('processing');
				
				// парсим дату
				match = /\bndate(\d{4,}-\d{2,}-\d{2,})s\b/.exec($(e.target).attr('class'));
				date = match[1];
				
				makeRequest();
				
				// устанавливаем выбранную дату
				$('#date').val(date);
			}
		// клик по дате календаря
		}else if ($(e.target).hasClass('tso_date')){
			
			if (!$('#tso_metro_container').hasClass('processing')){
				
				// на контейнер вешаем атрибут - обработка запроса
				$('#tso_metro_container').addClass('processing');
				
				// парсим дату
				match = /\bdate(\d{4,}-\d{2,}-\d{2,})s\b/.exec($(e.target).attr('class'));
				date = match[1];
				
				// если до этого выбирали метро, делаем запрос
				if (id_metro != 0)
				{
					// делаем запрос
					makeRequest();
					
					//если метро менялось, меняем календарь, навешиваем на него действия
					if ($('#metro_changed').val() == 'yes'){
						
					}
					
					//ставим атрибут, что метро не меняется
					$('#metro_changed').val('no');
				}else{
					$('#tso_metro_container').removeClass('processing');
				}
				
				// устанавливаем выбранную дату
				$('#date').val(date);
				
				// сбрасываем выбранный день
				sel = $calendar_container.find('td.selected_day').removeClass('selected_day');
				if (sel.hasClass('have_menus')){
					sel.removeClass('have_menus').addClass('have_menu');
				}else{
					sel.addClass('jast_day');
				}
				
				// подсвечиваем выбранный день
				sel_new = $calendar_container.find('a.date'+date+'s').parent('td').addClass('selected_day');
				if (sel_new.hasClass('have_menu')){
					sel_new.removeClass('have_menu').addClass('have_menus');
				}else{
					sel_new.removeClass('jast_day');
				}
			}
		}
		
		return false;
	});
	
	// событие на кнопках Город - Область
	$('#tso_area_header').find('a').click(function(){
		$(this).parent().parent('div').find('span').removeClass('tso_map_selected');
		$(this).parent('span').addClass('tso_map_selected');
		if ($(this).parent('span').hasClass('tso_metro_map'))
		{
			$('#tso_metro_container').show();
			$('#tso_town_container').hide();
		}else{
			$('#tso_town_container').show();
			$('#tso_metro_container').hide();
		}
		
		return false;
	});
	
	// делаем запрос
	function makeRequest(){
		// скрываем список с меню
		$('#list_sups_menu').slideUp('slow', function(){
			// прячем сообщение, что ничего не найдено
			$('#no_menus').hide();
			// показываем, что идет загрузка
			$('#tso_processing').show('fast');
			// делаем запрос
			$.getJSON("/js/request/ajax-list-sups-menu.php", {metro:id_metro, date:date}, function(data){

				if (id_metro != 0){
					if (data.quantity){
						
						var st = '';
						template = $('#tso_template').html();
						$.each(data.menus, function(i,val){
							st+= template
									.replace(/\[alias\]/ig, val.alias)
									.replace(/\[icons\]/ig, val.icons)
									.replace(/\[supplier_has_photos_icon\]/ig, val.supplier_has_photos_icon)
									.replace(/\[date_menu\]/ig, val.date_menu)
									.replace(/\[min_sum\]/ig, val.min_sum)
									.replace(/\[id\]/ig, val.id)
									.replace(/\[delivery_price\]/ig, val.delivery_price)
									.replace(/\[delivery_free_sum\]/ig, val.delivery_free_sum)
									.replace(/\[menu_id\]/ig, val.menu_id)
									.replace(/\[metro\]/ig, id_metro)
									.replace(/\[date_begin\]/ig, val.date_begin)
									.replace(/\[date_end\]/ig, val.date_end)
									.replace(/\[menu_date\]/ig, val.date)
									.replace(/\[best_supplier_text\]/ig, val.best_supplier_text)
									.replace(/\[date\]/ig, val.date);
						});
						// очищаем список с меню поставщиков, добавляем новый список
						$('#tso_list_sups_menu').html('').append(st);
						$('#tso_processing').hide('fast', function(){
							// показываем список с меню
							$('#list_sups_menu').slideDown('slow', function(){
								$('html, body').animate({scrollTop:$('#tso_sub_header').offset().top}, 'normal');
							});
						});
					}else{
						$('#tso_processing').hide('fast', function(){
							// показываем сообщение, что ничего не найдено
							$('#no_menus').show('fast', function(){
								$('html, body').animate({scrollTop:$('#tso_sub_header').offset().top}, 'normal');
							});
						});
					}
					
					// выводим название станции метро
					$('#tso_area').html(data.metro.metro_name);
	
					// показываем заголовок с выбранной станцией
					$('#tso_sub_header').slideDown('slow');
					
					$('#h1_addon').html(data.h1_addon);
				}else{
					$('#tso_processing').hide('fast');
				}

				// обновляем календарь
				$('#calendar_container').html(data.calendar)
				
				// запрос выполнился, убираем пометку
				$('#tso_metro_container').removeClass('processing');
			});
		});
	}
	
	// сброс выбранного метро/города
	function flushSelectedPlace(){
		// сбрасываем выбранное метро
		$('#tso_metro_container')
			.find('.selected_metro')
			.removeClass('selected_metro')
			.each(function(){
				$(this).css({'background' : ''});
			});
		// сбрасываем выбранный город
		$('#tso_town_container').find('a.selected_town').removeClass('selected_town');
	}
});
