$(document).ready(function() {	
	//
	// Popunjavanje liste drzava, saveznih drzava i gradova
	//
	//
	
	//$('.pretraga .avio-karte .iz, .pretraga .avio-karte .za').attr('autocomplete', 'off');
	
	
	var code, name, result, acomplete;
	result = '';
	for(i=0; i<c_values.length; i++) {
		
		code = c_values[i].substring(0,2);
		name = c_values[i].substring(3);
		
		// proverimo da li postoji niz sa aerodromima ili saveznim drzavama
		if($.isArray(a_values[code +':All']) || $.isArray(s_values[code])) {
			result += '<option value="'+code+'">'+name+'</option>';
		}
		
	}
	$('.avio_counties').html(result);
	
	//
	// Punjenje gradova, tj aerodroma
	//
	function fill_cities(key) {
		result = '';
		for(i=0; i<a_values[key].length; i++) {
			code = a_values[key][i].substring(0,3);
			name = a_values[key][i].substring(4);
			result += '<option value="'+ code +'">'+ name +' ('+ code +')</option>';
		}
		$('.select_city').html(result);
	}
	
	//
	// Punjenje saveznih država
	//
	function fill_states(key) {
		result = '';
		for(i=0; i<s_values[key].length; i++) {
			result += '<option value="'+ key +':'+ s_values[key][i] +'">'+ s_values[key][i] +'</option>';
		}
		$('.avio_state').html(result);
	}
	//
	// Kada promenim country napuni gradove (i savezne drzave)
	//
	function onchange_country(key) {
		// Ukoliko postoji niz sa gradovima, sakrij savezne države i prikaži samo gradove
		if($.isArray(a_values[key +':All'])) {
			fill_cities(key +':All');  
			$('#aviostate').hide();
			return true;
		}
		
		// ... postoji savezna država
		var country = key.substring(0,2);
		var state = key.substring(3);

		if(state.length > 1) {
			fill_cities(country +':'+state);
		} else {
			fill_states(country);
			fill_cities(country +':'+ s_values[country][0]);
		}
		$('#aviostate').show();
	}
	$(".avio_counties option[value='DE']").attr('selected', 'selected');
	onchange_country('DE');
	// 
	// Otvaranje popupa za izbor aerodroma
	//
	
	var za_input;
	var otvori_opet = true;
	function open_select() {
		// sakrij ga prvo ako je otvoren
		//if($('#avio_cities').is(':visible')) {$('#avio_cities').hide();}
		
		// Zbog vraćanja focusa na select input
		if(!otvori_opet) {
			otvori_opet = true;
			return false;
		}
		// otkrij izbor države
		$("#avio_cities").children(':eq(0)').show();
		// Ukoliko je selektovano nešto u inputu, prođi kroz niz
		if($(".avio_countries").val() != 'DE') {
			$(".avio_counties option[value='DE']").attr('selected', 'selected');
			onchange_country('DE');
		}
		var position = za_input.offset();
		$("#avio_cities").css("top", position.top+32);
		$("#avio_cities").css("left", position.left+5);
		$("#avio_cities").slideDown('fast', function() {
			$(document).click(function(e) {
				if($('#avio_cities').is(':visible')) {
					var $clicked=$(e.target);
					if(!($clicked.is('#avio_cities') || $clicked.parents().is('#avio_cities'))){
						$('#avio_cities').hide();
					}
				}
			});									
		});
	}
	
	$('.pretraga .avio-karte .iz, .pretraga .avio-karte .za').click(function() {
		
		za_input = $(this);

		open_select();
		return false;
	});
	
	// Kada izaberem državu, popuni input i sakrij avio karte
	$('.select_city').click(function() {
		//otvori_opet = false;
		za_input.val($(this).val()).focus();
		$('#avio_cities').hide();
		return false;
	});
	
	// Ako krenem da kucam otvori autosuggest
	$('.pretraga .avio-karte .iz, .pretraga .avio-karte .za').keydown(function(e) {
		
		// ako je esc zatvori popup
		if(e.keyCode ==27) {
			$('#avio_cities').hide();
			otvori_opet = false;
			return false;
			
		}
		
		
		// ako je tab, uzmi value iz select_city i nastavi...
		if(e.keyCode == 9) {
			
			if($('.select_city').val() != null){
				za_input.val($('.select_city').val());
			}
			$('#avio_cities').hide();
			
			if($(this).hasClass('.pretraga .avio-karte .iz')) {
				za_input = $('.pretraga .avio-karte .za');
				open_select();
			}
			return true;
		}
		
		// ako je enter uzmi value iz select_city i prekini
		if(e.keyCode == 13) {
			if($('.select_city').val() != null){
				za_input.val($('.select_city').val());
			}
			$('#avio_cities').hide();
			otvori_opet = false;
			return false;
		}							   
											   
	});
	
	
	$('.pretraga .avio-karte .iz, .pretraga .avio-karte .za').keyup(function(e) {
		if($('#avio_cities').is(':hidden')) {
			za_input = $(this);
			open_select();
		}
		// enter
		if(e.keyCode == 13 || e.keyCode == 9 || e.keyCode ==27) {return false;}
											 
		// Ako je strelica na gore/dole biraj grad
		if(e.keyCode == 40 || e.keyCode==38){
			var sel = $('.select_city option:selected');
			var pos;
			if(sel.length >0) {
				if(e.keyCode == 40) {
					if(sel.next().length >0) {
						sel.removeAttr('selected');
						sel.next().attr('selected', 'selected');
						pos = sel.next();
					}
				}
				else {
					if(sel.prev().length >0) {
						sel.removeAttr('selected');
						sel.prev().attr('selected', 'selected');
						pos = sel.prev();
					}
				}
			}
			// selektuj prvi
			else { 
				$('.select_city option:first').attr('selected', 'selected'); 
				pos = $('.select_city option:first');
			}
			//za_input.val(pos.val());
			return false;
		}
		
		
		// za ostale karaktere uradi autocomplete
		var val = $(this).val().toLowerCase();
		
		if(val.length > 0) {
			// sakrij izbor drzave i state
			$("#avio_cities").children(':eq(0), :eq(1)').hide();
			$('.select_city').empty();
			// prolazimo kroz niz i nalazimo ono što je ukucano
			var i, j, a, pos;
			var sel = false;
			var result = '';
			var k=0;
			for (i in a_values ) {
				for(j=0; j<a_values[i].length; j++) {
					a = a_values[i][j];
					pos = a.toLowerCase().indexOf(val)
					if(pos > -1) {
						if(pos == 0 && !sel) {
							sel=true;
							$('.select_city').prepend('<option value="'+ a.substring(0,3) +'" selected="selected">'+ a.substring(4) +' ('+ a.substring(0,3) +')</option>');
						} else {
							$('.select_city').append('<option value="'+ a.substring(0,3) +'">'+ a.substring(4) +' ('+ a.substring(0,3) +')</option>');
						}
						k++;
					}
					// Prikazujemo samo prvih 10 rezultata, ubrzava stvar.
					if(k > 10) {
						k=0;
						sel=false;
						return true;
					}
				}
				
			}
			if(k == 1) {
					$('.select_city option').attr('selected', 'selected');
				}
		} else {
			$("#avio_cities").children(':eq(0)').show();
			onchange_country($('.avio_counties').val());
		}
	});
	
	// kada se promeni drzava, promeni gradove
	$(".avio_counties").change(function() { 
		onchange_country($(this).val()); 
		return false;
	});
	$(".avio_state").change(function() { 
		fill_cities($(this).val()); 
		return false;
	});
	// provera unetih polja
	$('#avio').click(function() {
            if($('#iz').val().length == 0 || $('#za').val().length == 0) {
			var up=$('#warn').text();
                        alert(up);
			return false;
		}
	});
	$(".zatvori").click(function() {
		$('#avio_cities').hide();
		otvori_opet = false;	
		return false;
	});
});
