<\/div><\/form>\n"};
$( function() {
$('.search-advanced-filter').html( filters_html.html );
});
function validate_advanced_search_form(event) {
var form_this = this;
hide_errors();
var q_empty = true;
$("input.q").each( function() {
if( $(this).val() != '' ) q_empty = false;
} );
validate_adv_location(form_this, function(loc_valid) {
if( q_empty ) {
show_error( 'Please enter some search keywords' );
$('input.q').addClass('error');
}
if( ( ! q_empty ) && ( loc_valid ) ) {
console.log('Submit adv search form');
$(form_this).unbind('submit');
$(form_this).submit();
return true;
}
});
event.preventDefault();
}
function validate_adv_location(form_this, callback) {
if( window.jn_location_valid ) {
callback(true);
return true;
}else {
var lookup_location = $('.typeahead-location', form_this ).val();
$.get( '/rpc/location_valid/'+encodeURIComponent( lookup_location ) ,
function( data ) {
if( data.valid ) {
$('.typeahead-location', this ).val( data.fixed );
console.log('Location is valid');
callback( true );
return true;
} else {
invalid_location_adv( lookup_location , data.fixed );
callback( false );
}
} );
}
}
function invalid_location_adv( orig, suggestion ) {
$('.search-advanced-filter .location-alert').remove(); // remove existing
var suggestion_msg = (suggestion.length > 0) ? 'Maybe you mean
'+suggestion+' ?' : '';
$('.search-advanced-filter').prepend( '
Location "'
+orig+'" not found. '+suggestion_msg+'
');
}
function show_error( msg ) {
var alert_node = "
"+msg+"
";
$(".search-advanced-filter").prepend( alert_node );
}
function hide_errors( ) {
$(".search-advanced-filter .alert").remove();
}
function set_form_location_adv( loc ) {
$('.typeahead-location').val( loc );
$('.search-advanced-filter .btn').focus();
return false;
}
$( function() {
$('.search-advanced-filter input.loc').val( $('.typeahead-location').val() );
$('.search-advanced-filter input.loc').typeahead( { name:'locations',
remote: '/rpc/location_typeahead/%QUERY',
limit: 20 } );
$('form.advanced-search-form').submit( validate_advanced_search_form );
});