$(function(){

	howGetList();
	
	// Сгенерить форму добавления / редактирования
	for (var i = 0; i < 10; i++) {
		$('#modalHowEditFiltersItem').tmpl({
			no: i,
			filter: [
				'',
				'L',
				'R',
				'G',
				'B',
				'HA',
				'O3',
				'S2'
			]
		}).appendTo('#modalHowEditFilters');
	}
	
	
	// Динамика формы редактирования / добавления
	$('#modalHowEdit td.filter select').change(function(){
		$(this).parents('tr').find('td input').prop('disabled', !!($(this).val() == ''));		
	});
	$('#modalHowEdit input[type=number]').change(function(){
		if (parseInt($(this).val()) < parseInt($(this).attr('min'))) {
			$(this).val( $(this).attr('min') );
		}

		if (parseInt($(this).val()) > parseInt($(this).attr('max'))) {
			$(this).val( $(this).attr('max') );
		}
	})
	
	
	
	// Добавить новую стратегию - модалка с формой
	$('.how-add-button').click(function(e){
		e.preventDefault();
		
		$('#modalHowEdit .modal-title').html('Добавить стратегию съёмки');
		$('#modalHowEdit button[type=submit]').html('Добавить');
		
		$('#modalHowEdit input[type=text],select,textarea').val('');
		$('#modalHowEdit input[type=checkbox]').prop('checked', false);
		$('#modalHowEdit input[name=id]').val('0');
		$('#modalHowEdit input[type=number]')
			.val('1')
			.prop('disabled', true)
		;
		
		
		$('#modalHowEdit').modal('show');
	});
	
	
	// Отправка формы добавления / редактирования стратегии съёмки
	$('#modalHowEdit form').submit(function(e){
		e.preventDefault();
		
		var obj = {};
		
		$(this).find('input,textarea').each(function(){
			if ($(this).attr('name')) {
				obj[ $(this).attr('name') ] = $(this).val();
			}
		});
		obj.twilight = $(this).find('input[name=twilight]').is(':checked');
		
		obj.filters = [];
		
		$('#modalHowEdit table.filters tbody tr').each(function(){
			if ($(this).find('td.filter select').val() != '') {
			
				obj.filters[obj.filters.length] = {
					name:     $(this).find('td.filter select').val(),
					exposure: $(this).find('td.exposure input').val(),				
					bin:      $(this).find('td.bin input').val(),
					count:    $(this).find('td.count input').val()
				};
				
			}
		});
		
		
		$.post(
			(obj.id == '0') ? '/how/create' : '/how/'+ obj.id +'/update',
			JSON.stringify( obj ),
			function(data){
			
				$.notify({message:
					((obj.id == '0') ? 'Добавлена' : 'Сохранена') +
					' стратегия "'+ obj.name +'"'
				}, {type: 'success'});
				
				howGetList();
				
				$('#modalHowEdit').modal('hide');
			},
		'json');
	});

	
	// Удаление подтверждено
	$('#modalHowRemove button[type=submit]').click(function(e){
		e.preventDefault();
		
		$.post('/how/'+ $('#modalHowRemove input[name=id]').val() +'/remove', function(){
			$('.how-list tr[data-id='+ $('#modalHowRemove input[name=id]').val() +']').remove();
			
			$.notify(
				{message: 'Удалена стратегия съёмки "'+ $('#modalHowRemove .name').text().trim() +'"'},
				{type: 'success'}
			);

			$('#modalHowRemove').modal('hide');
		});
	});
	
});


// Загрузка Списка стратегий
function howGetList()
{
	$.get('/how', function(data){
		$('.how-list').html('');
		$('#taskHowSelect').html('');
		
		for (var i in data) {
			$('#templateHowItem').tmpl(data[i]).appendTo('.how-list');
			$('#templateTaskEditHow').tmpl(data[i]).appendTo('#taskHowSelect');
		}
		
		
		// Список. Модалка по клику на редактирование с подгрузкой инфо в форму
		$('.how-edit-button').click(function(e){
			e.preventDefault();
			
			$('#modalHowEdit .modal-title').html('Редактировать стратегию съёмки');
			$('#modalHowEdit button[type=submit]').html('Сохранить');
			
			$.get('/how/'+ $(this).parents('tr').data('id'), function(data){
				var $form = $('#modalHowEdit form');
				
				$form.find('input[name=name]').val( data.name );
				$form.find('input[name=twilight]').prop('checked', data.twilight );
				$form.find('input[name=id]').val( data.id );

				$form.find('input[type=number]')
					.val('1')
					.prop('disabled', true)
				;

				for (var i = 0; i < 10; i++) {
					if ( (typeof data.filters == 'undefined') ||  (typeof data.filters[i] == 'undefined') ){
						break;
					}
					
					var $tr = $form.find('table.filters tbody tr[rel='+ i +']');
					
					$tr.find('td.filter select').val(data.filters[i].name);
					$tr.find('td.exposure input').val(data.filters[i].exposure);
					$tr.find('td.bin input').val(data.filters[i].bin);
					$tr.find('td.count input').val(data.filters[i].count);
					
					$tr.find('input').prop('disabled', false);
				}
				
				$('#modalHowEdit').modal('show');
			}, 'json');
		});
		
		
		// Список. Удаление. Модалка с подтверждением 
		$('.how-remove-button').click(function(e){
			e.preventDefault();
			
			$('#modalHowRemove .obj').html( $(this).parents('tr').find('.name').text().trim() );
			$('#modalHowRemove input[name=id]').val( $(this).parents('tr').data('id') );
			
			$('#modalHowRemove').modal('show');
		});
		
	}, 'json');
}