Skip to content

Instantly share code, notes, and snippets.

@sa2kasov
Created December 26, 2014 12:31
Show Gist options
  • Save sa2kasov/8026e911a6e22007d478 to your computer and use it in GitHub Desktop.
Save sa2kasov/8026e911a6e22007d478 to your computer and use it in GitHub Desktop.
//Получение класса [night | morning | afternoon | evening] в зав-сти от часа
function getDayClass(hour){
if(hour >= 0 && hour <= 4)
return '.night';
else if(hour >= 5 && hour <= 11)
return '.morning';
else if(hour >= 12 && hour <= 16)
return '.afternoon';
else if(hour >= 17 && hour <= 23)
return '.evening';
else
return false;
}
/*
* Фильтр для выбора рейсов
* !!!Вызывать только в момент полной загрузки страницы!!!
*/
function initFilter(){
var flightItems = $('.flightItem');
//Изначально отключаю все лейблы фильтра
$('#wagonType label').addClass('disabled');
$('#departure label').addClass('disabled');
$('#arrival label').addClass('disabled');
//Отключение пунктов фильтра
$('.flightItem').each(function(i, e){
//Тип вагона
//Места: Общий
if($(e).find('.commonplaces strong').length != 0)
$('#wagonType').find('.commonplaces').removeClass('disabled');
//Места: Сидячий
if($(e).find('.seating strong').length != 0)
$('#wagonType').find('.seating').removeClass('disabled');
//Места: Плацкартный
if($(e).find('.second-class strong').length != 0)
$('#wagonType').find('.second-class').removeClass('disabled');
//Места: Купе
if($(e).find('.coupe strong').length != 0)
$('#wagonType').find('.coupe').removeClass('disabled');
//Места: Мягкий
if($(e).find('.soft strong').length != 0)
$('#wagonType').find('.soft').removeClass('disabled');
//Места: Люкс
if($(e).find('.lux strong').length != 0)
$('#wagonType').find('.lux').removeClass('disabled');
//Отправление
var departure = new Date();
departure.setTime(Date.parse($(e).find('.DepartureDateTime').text()));
var departureClass = getDayClass(departure.getHours());
console.log(departureClass);
if(departureClass !== false)
$('#departure').find(departureClass).removeClass('disabled');
//Прибытие
var arrival = new Date();
arrival.setTime(Date.parse($(e).find('.ArrivalDateTime').text()));
var arrivalClass = getDayClass(arrival.getHours());
if(arrivalClass !== false)
$('#arrival').find(arrivalClass).removeClass('disabled');
});
}
//Обновление списка «Количества мест» при выборе мест в вагоне
function update_place_quantity($this){
var count_of_places = $($this).parent().children('.is_usel').length;
var select = $($this).parents('#scheme_block').find('#count_places_selector');
$(select).children('option').removeAttr('selected');
$(select).children('option[value="' + count_of_places + '"]').attr('selected', 'selected');
}
//Обработчик изменения списка «Количество мест»
var $update_places = function(){
var select = $(this);
//Значение выбранного option'a в списке «Количество мест»
var selected_places = select.find('option:selected').val();
//Объект с элементами мест
var places = select.parents('#scheme_block').children('.places_block');
//Выбранные места
var is_usel = $(places).children('div');
if(places.children('.is_usel').length > 0)
is_usel = $(places).children('.is_usel');
//Кол-во выбранных мест
var is_usel_count = 0;
if($(is_usel).length > 0)
is_usel_count = $(places).children('.is_usel').length;
//Если кол-во выбранных мест в select'e > кол-ва мест
if(is_usel_count > selected_places){
is_usel.each(function(i, e){
if(i + 1 > selected_places)
$(e).toggleClass('is_usel place_empty');
});
}
else if(is_usel_count < selected_places){
var difference = selected_places - is_usel_count;
var last_element = 0;
if($(is_usel).first().html() != 1)
last_element = $(is_usel).first().html();
var el = 0, reverse = false;
while(selected_places > is_usel_count){
el = $(places).children('div').eq(last_element);
if(el.hasClass('place_empty')){
el.toggleClass('place_empty is_usel');
is_usel_count++;
}
//Выбор мест в вагоне от посл. выбранного и до конца
if(last_element < 50 && !reverse)
last_element++;
//Если места закончились, до занятие места от посл. выбранного и до начала
else{
reverse = true;
last_element--;
}
}
}
};
$('#count_places_selector').live('change', $update_places);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment