//стартовые аргументы отправляемые запросом
var data = {
    country : "", 
	date: "", 
	srok: "", 
	chena: "",
	tour: 1,
	type: 1, 
	star: "",
	jsonUrl: "",
	kurort: ""
}
jQuery(document).ready(function(){
    //submit формы
	$('#sorting').submit(function(){
	    $('#page').attr('myVal','1'); //сброс страницы на первую
	    
	    //изменение аргументов в соответствии изменений формы
	    data.country = $('#country').val();
	    data.date = $('#data').val();
	    data.srok = $('#srok').val();
	    data.chena = $('#chena').val();
	    data.star = $('.star-rating-on').length;
	    
	    //сброс типов и туров в фильтре 
	    data.tour = 1;
	    data.type = 1;
	    $('#filter a').removeClass();
	    $('#tour li:first a').addClass("active");
	    $('#type li:first a').addClass("active");
	    
	    //вызов ajax запроса
		sortTours(false);
		return false;	
	});
	$('#filter a').click(function(){
	    $('#page').attr('myVal','1');//сброс страницы на первую
	    
	    //изменение типов и туров в фильтре
	    if($(this).parent().parent().attr('id')=="tour"){
	        $('#filter #tour a').removeClass();
	        data.tour = $('#tour .active').attr('myVal');
	    } 
	    else {
	        $('#filter #typeTour a').removeClass(); 
	        data.type2 = $('#typeTour .active').attr('myVal');
	    }
	    $(this).addClass("active");
	    
	    //вызов ajax запроса
	    sortTours(false);
		return false;  
	}); 
	$('#page').click(function(){
	    //изменение номера страницы
	    $('#page').attr('myVal',(parseInt($('#page').attr('myVal'))+1)); 
	    
	    //вызов ajax запроса
	    sortTours(true);
		return false;  
	}); 
	
	//изменение типа тура на странице "country"
	$('#typeTour a').click(function(){
		
		//изменение типов в фильтре
		$('#typeTour a').removeClass(); 
	    data.type = $('#typeTour .active').attr('myVal');
		
		$(this).addClass("active");
		$('#page').attr('myVal',1);
		
		//вызов ajax запроса
	    sortTours();
		return false; 
	});
	
	//показываем все курорты
	$('#showResorts').click(function(){
		//скрываем кнопку
		$(this).css("visibility", "hidden");
		
		//вызов ajax запроса
		addResort()
		return false;	
	});
	
	//показываем инфо отеля
	$('#aboutHotel a').click(function(){
	    $('#hotelMain').css('height', $('#hotelMain').height());
        $("#" + $("#aboutHotel .active").attr("myVal")).css("display","none");
        $("#" + $(this).attr("myVal")).css("display","block");
        $('#hotelMain').animate({height: $("#" + $(this).attr("myVal")).height()+10}, 1000);
        
        //изменение типов в фильтре
		$('#aboutHotel a').removeClass(); 
		$(this).addClass("active");
			
		return false;	
	});
	
	//изменение селектов на странице поиска
	$('#country').change(function(){
		changeSelect($(this));	
	});
});

//определение селекта на странице поиска
function changeSelect(activeSelect){
	if(activeSelect.attr('id')=='country'){
		loadSelect(activeSelect.find('option:selected').val(), $("#city"));
	}
}
// выгрузка селекта
function unloadSelect(obj){
	obj.attr('disabled','disabled');
	obj.empty();
	obj.append('<option value="0">не имеет значения</option>')
}

//загрузка селекта
function loadSelect(activeValue, obj){
	
	if(activeValue==0) unloadSelect(obj); 
	else {
		obj.removeAttr("disabled");
		obj.empty();
	    obj.append('<option value="">не имеет значения</option>')
		
		try {
			//отправка запроса серверу вывод ответа в селект
			jQuery.ajax({
				url: obj.parent().attr('myVal'),//строку запроса забираем из атрибута myVal родителя селекта	
				timeout: 5000,
				data: "param="+activeValue,
				success: function(msg){
					obj.append(msg);
				},
				error: function(XMLHttpRequest){
					// действие при возникновении ошибки
					alert("При попытке отправить сообщение произошла неизвестная ошибка. \n Попробуй еще раз через несколько минут.");
					unloadSelect(obj);
				}
			});	
		}
		catch(e){
			alert("При попытке отправить сообщение произошла неизвестная ошибка. \n Попробуй еще раз через несколько минут.");
			unloadSelect(obj);
		}
	}
	return false;	
}
//функция выводиn весь список курортов страны
function addResort(){
	try {
		jQuery.ajax({
			url:$('#showResorts').attr('url'),	
			timeout: 5000,
	 		type: "POST",
			data: "country="+data.country,
			dataType: "json",
			beforeSend: function (XMLHttpRequest) {
				$('#resorts')
					.css('height', $('#resorts').height())
				    .append("<div id='preloader'><img src='images/preloader.gif' alt='' /></div>");	
			},
			success: function(msg){
			
			    //удаление прелоадера
			    $('#resorts #preloader').remove();
			    
			    //определение параметров для изменения высоты списка курортов
			    var heightBaner = $('#resorts .sity:first').height()+39;
			    var countBaner = $('#resorts .sity').length;
			    
	 		    //загрузка галереи ответом сервера
	 		    $('#resorts') 
	 		        .css('overflow', 'hidden')
				    .append(msg.code)
					.animate({height: (($('#resorts .sity').length-countBaner)*heightBaner)+$('#resorts').height()}, 500);//изменение высоты списка курортов
				},
			error: function(XMLHttpRequest){
			    
			    // действие при возникновении ошибки
			    $('#resorts #preloader').remove();
				$('#showResorts').css("visibility", "visible");
	 		    alert("При попытке отправить сообщение произошла неизвестная ошибка. \n Попробуй еще раз через несколько минут.");
	 		}
		});	
	}
	catch(e){
		alert("При попытке отправить сообщение произошла неизвестная ошибка. \n Попробуй еще раз через несколько минут.");
	}	
	return false;
}

//функция отправляет данные фильтра и сортировки серверу, и выводит результат операции в галерею
function sortTours(isAddButton){// isAddButton - определяет нажатие кнопки "показать еще"
	try {
		jQuery.ajax({
			url: data.jsonUrl,//в качестве url запроса используем action формы
	 		timeout: 5000,
	 		type: "POST",
			data: "country="+data.country+
					"&date="+data.date+
					"&srok="+data.srok+
					"&chena="+data.chena+
					"&tour="+$('#tour .active').attr('myVal')+
					"&type="+data.type+
					"&type2="+$('#typeTour .active').attr('myVal')+
					"&page="+$('#page').attr('myVal')+
					"&star="+data.star+
					"&kurort="+data.kurort,
		    dataType: "json",
		    
		    //загрузка preloader
			beforeSend: function (XMLHttpRequest) {
				if(!isAddButton){
					$('#galery')
						.css('height', $('#galery').height())
						.empty()	
						.append("<div id='preloader'><img src='/images/preloader.gif' alt='' /></div>");
				}
				else{
					$('#galery')
						.append("<div id='preloader' class='mini'><img src='/images/preloader.gif' alt='' /></div>")
						.css('height', $('#galery').height());
				}
			},
	 		success: function(msg){
	 		    //загрузка галереи ответом сервера
				if(!isAddButton){
					$('#galery')
						.empty()  
						.append(msg.code)
						.css('height', 'auto');
				}
				else {
					$('#preloader').remove();
					$('#galery')
						.append(msg.code)
						.css('height', 'auto');	
				}
				//отображение или скрытие кнопки "показать еще" в зависимости от ответа
				if (msg.page == 0) $('#page').css('display','none');
				else $('#page').css('display','block');
			},
			error: function(XMLHttpRequest){
			    // действие при возникновении ошибки
			    $('#galery')
					.empty()
					.css('height', 'auto');
			    $('#page').css('display','none');
	 		    alert("При попытке отправить сообщение произошла неизвестная ошибка. \n Попробуй еще раз через несколько минут.");
	 		}
		});
	}
	catch(e){
		alert("При попытке отправить сообщение произошла неизвестная ошибка. \n Попробуй еще раз через несколько минут.");
	}	
	return false;
}
