// {{{ Page initialization
var baseurl = $.plURL('search/');
-var address_types = new Array('country', 'administrative_area_level_1', 'administrative_area_level_2', 'administrative_area_level_3', 'locality', 'sublocality');
+var address_types = new Array('country', 'administrative_area_level_1', 'administrative_area_level_2', 'locality', 'postal_code');
+var address_types_count = address_types.length;
function load_advanced_search(request)
{
- $('.autocompleteTarget').hide();
+ $('.autocomplete_target').hide();
$('.autocomplete').show().each(function() {
- targeted = $('../.autocompleteTarget', this)[0];
-
- if (targeted && targeted.value) {
- me = $(this);
-
- $.get(baseurl + 'list/' + targeted.name + '/' + targeted.value, {}, function(textValue) {
- me.attr('value', textValue);
- me.addClass('hidden_valid');
- });
- }
-
$(this).autocomplete(baseurl + 'autocomplete/' + this.name, {
selectOnly: 1,
formatItem: make_format_autocomplete(this),
field: this.name,
onItemSelect: select_autocomplete(this.name),
matchSubset: 0,
- width: $(this).width()}
- );
+ width: $(this).width()
+ });
});
$('.autocomplete').change(function() { $(this).removeClass('hidden_valid'); });
if (request['country']) {
- $("[name='country']").parent().load(baseurl + 'list/country', function() {
- $("select[name='country']").attr('value', request['country']);
- });
setAddress(0, 1, new Array(request['country'],
request['administrative_area_level_1'],
request['administrative_area_level_2'],
- request['administrative_area_level_3'],
request['locality'],
- request['sublocality'])
+ request['postal_code'])
);
} else {
- for (var i = 1; i < 6; ++i) {
- $('tr#' + address_types[i] + '_list').hide();
+ for (var i = 1; i < address_types_count; ++i) {
+ $('tr#' + address_types[i]).hide();
}
}
- $(".autocomplete[name='schoolTxt']").change(function() { changeSchool('', ''); });
+ $(".autocomplete[name='school_text']").change(function() { changeSchool('', ''); });
changeSchool(request['school'], request['diploma']);
- $(".autocompleteToSelect").each(function() {
- var fieldName = $(this).attr('href');
+ $(".autocomplete_to_select").each(function() {
+ var field_name = $(this).attr('href');
- $(this).attr('href', baseurl + 'list/' + fieldName).click(function() {
- var oldval = $("input.autocompleteTarget[name='" + fieldName + "']")[0].value;
+ if ($(".autocomplete_target[name='" + field_name + "']").val()) {
+ display_list(field_name);
+ }
- $(".autocompleteTarget[name='" + fieldName + "']").parent().load(baseurl + 'list/' + fieldName, {}, function(selectBox) {
- $(".autocompleteTarget[name='" + fieldName + "']").remove();
- $(".autocomplete[name='" + fieldName + "Txt']").remove();
- $("select[name='" + fieldName + "']").attr('value', oldval);
- });
+ $(this).attr('href', baseurl + 'list/' + field_name).click(function() {
+ if ($(this).attr('title') == 'display') {
+ display_list(field_name);
+ } else {
+ var value = $("select[name='" + field_name + "']").val();
+ var text_value = $("select[name='" + field_name + "'] option:selected").text();
+ $('#' + field_name + '_list').html('');
+ $(".autocomplete[name='" + field_name + "_text']").show();
+ $('#' + field_name + '_table').attr('title', 'display');
+ if (value) {
+ $(".autocomplete_target[name='" + field_name + "']").val(value);
+ $(".autocomplete[name='" + field_name + "_text']").val(text_value).addClass('hidden_valid');
+ }
+ }
return false;
});
- }).parent().find('.autocomplete').change(function() {
- // If we change the value in the type="text" field, then the value in the 'integer id' field must not be used,
- // to ensure that, we unset it
- $(this).parent().find('.autocompleteTarget').val('');
});
$('#only_referent').change(function() { changeOnlyReferent(); });
+
+ $('.delete_address_component').click(function() {
+ var field_name = $(this).attr('href');
+ var hide = false;
+ var remove = false;
+
+ for (var i = 1; i < address_types_count; ++i) {
+ if (field_name == address_types[i]) {
+ hide = true;
+ }
+ if (hide) {
+ if (field_name != address_types[i]) {
+ remove = true;
+ }
+ delete_address_component(address_types[i], remove);
+ }
+ }
+
+ return false;
+ });
+}
+
+function display_list(field_name)
+{
+ var value = $("input.autocomplete_target[name='" + field_name + "']").val();
+
+ $('#' + field_name + '_list').load(baseurl + 'list/' + field_name, {}, function(selectBox) {
+ $(".autocomplete_target[name='" + field_name + "']").val('');
+ $(".autocomplete[name='" + field_name + "_text']").hide().val('').removeClass('hidden_valid');
+ $("select[name='" + field_name + "']").val(value);
+ $('#' + field_name + '_table').attr('title', 'hide');
+ });
}
// }}}
{
$(".autocomplete[name='" + field + "']").removeClass('hidden_valid').val('').focus();
if (typeof(realfield) != 'undefined') {
- $(".autocompleteTarget[name='" + realfield + "']").val('');
+ $(".autocomplete_target[name='" + realfield + "']").val('');
}
return;
}
// when choosing autocomplete from list, must validate
function select_autocomplete(name)
{
- nameRealField = name.replace(/Txt$/, '');
-
- // nothing to do if field is not a text field for a list
- if (nameRealField == name) {
- return null;
- }
+ var field_name = name.replace(/_text$/, '');
- // When changing country or locality, open next address component.
- if (nameRealField == 'country' || nameRealField == 'locality') {
+ // just display field as valid if field is not a text field for a list
+ if (field_name == name) {
return function(i) {
- nameRealField = name.replace(/Txt$/, '');
- if (i.extra[0] < 0) {
- cancel_autocomplete(name, nameRealField);
- i.extra[1] = '';
- }
- $("[name='" + nameRealField + "']").parent().load(baseurl + 'list/' + nameRealField, function() {
- $("select[name='" + nameRealField + "']").attr('value', i.extra[1]);
- });
- changeAddressComponents(nameRealField, i.extra[1]);
+ $(".autocomplete[name='" + name + "']").addClass('hidden_valid');
}
}
- if (nameRealField == 'school')
+ // When changing country, locality or school, open next address component.
+ if (field_name == 'country' || field_name == 'locality' || field_name == 'school') {
return function(i) {
if (i.extra[0] < 0) {
- cancel_autocomplete('schoolTxt', 'school');
+ cancel_autocomplete(name, field_name);
i.extra[1] = '';
}
- changeSchool(i.extra[1], '');
+
+ if (field_name == 'school') {
+ changeSchool(i.extra[1], '');
+ } else {
+ changeAddressComponents(field_name, i.extra[1]);
+ }
+
+ $(".autocomplete_target[name='" + field_name + "']").attr('value', i.extra[1]);
+ $(".autocomplete[name='" + name + "']").addClass('hidden_valid');
}
+ }
// change field in list and display text field as valid
return function(i) {
- nameRealField = this.field.replace(/Txt$/, '');
if (i.extra[0] < 0) {
- cancel_autocomplete(this.field, nameRealField);
+ cancel_autocomplete(this.field, field_name);
return;
}
- $(".autocompleteTarget[name='"+nameRealField+"']").attr('value',i.extra[1]);
- $(".autocomplete[name='"+this.field+"']").addClass('hidden_valid');
+ $(".autocomplete_target[name='" + field_name + "']").attr('value', i.extra[1]);
+ $(".autocomplete[name='" + name + "']").addClass('hidden_valid');
}
}
var next_type = address_types[j];
var next_list = next_type + '_list';
- if (j == 3) {
- $('tr#locality_text').hide()
- $("select[name='localityTxt']").attr('value', '');
- }
-
- $("[name='" + next_type + "']").parent().load(baseurl + 'list/' + next_type, { previous:prev_type, value:values[i] }, function() {
+ $('#' + next_list).load(baseurl + 'list/' + next_type, { previous:prev_type, value:values[i] }, function() {
if ($("select[name='" + next_type + "']").children("option").size() > 1) {
- $("tr#" + next_list).show();
+ $("tr#" + next_type).show();
$("select[name='" + next_type + "']").attr('value', values[j]);
- if (j < 6) {
+ if (next_type == 'locality') {
+ $('tr#locality_text').hide();
+ $("select[name='locality_text']").attr('value', '');
+ }
+ if (j < address_types_count) {
setAddress(j, j + 1, values);
}
} else {
- $("tr#" + next_list).hide();
+ $("tr#" + next_type).hide();
$("select[name='" + next_type + "']").attr('value', '');
- if (j < 6) {
+ if (j < address_types_count) {
setAddress(i, j + 1, values);
}
}
var next_type = address_types[j];
var next_list = next_type + '_list';
- if (j == 3) {
+ if (next_type == 'locality') {
$('tr#locality_text').hide();
- $("select[name='localityTxt']").attr('value', '');
+ $("select[name='locality_text']").attr('value', '');
}
- $("[name='" + next_type + "']").parent().load(baseurl + 'list/' + next_type, { previous:prev_type, value:value }, function() {
+ $('#' + next_list).load(baseurl + 'list/' + next_type, { previous:prev_type, value:value }, function() {
$("select[name='" + next_type + "']").attr('value', '');
if ($("select[name='" + next_type + "']").children('option').size() > 1) {
- $('tr#' + next_list).show();
+ $('tr#' + next_type).show();
} else {
- $('tr#' + next_list).hide();
- if (j < 6) {
+ $('tr#' + next_type).hide();
+ if (j < address_types_count) {
displayNextAddressComponent(i, j + 1, value);
}
}
function changeAddressComponents(type, value)
{
- var i = 0, j = 0;
+ var i = 0;
- while (address_types[i] != type && i < 6) {
+ while (address_types[i] != type && i < address_types_count) {
++i;
}
- j = i + 1;
- while (j < 6) {
- $("select[name='" + address_types[j] + "']").attr('value', '');
- $('tr#' + address_types[j] + '_list').hide();
- ++j;
+ for (var j = i + 1; j < address_types_count; ++j) {
+ delete_address_component(address_types[j], true);
}
- if (value != '' && i < 5) {
+ if (value != '' && i < address_types_count) {
$("select[name='" + type + "']").attr('value', value);
displayNextAddressComponent(i, i + 1, value);
}
}
+function delete_address_component(field_name, remove)
+{
+ if (remove || field_name == 'locality') {
+ $('tr#' + field_name).hide();
+ $('#' + field_name + '_list').html('');
+
+ if (field_name == 'locality') {
+ $("input[name='locality_text']").val('');
+ $('tr#locality_text').show();
+ }
+ } else {
+ $("select[name='" + field_name + "']").val('');
+ $("input[name='" + field_name + "']").val('');
+ }
+}
+
// when changing school, open diploma choice
function changeSchool(schoolId, diploma)
{
$(".autocompleteTarget[name='school']").attr('value', schoolId);
if (schoolId) {
- $(".autocomplete[name='schoolTxt']").addClass('hidden_valid');
+ $(".autocomplete[name='school_text']").addClass('hidden_valid');
} else {
- $(".autocomplete[name='schoolTxt']").removeClass('hidden_valid');
+ $(".autocomplete[name='school_text']").removeClass('hidden_valid');
}
$("[name='diploma']").parent().load(baseurl + 'list/diploma/', { school:schoolId }, function() {
function searchForJobTerm(treeid, jtid, full_name)
{
$(".term_tree").remove();
- $("input[name='jobtermTxt']").val(full_name).addClass("hidden_valid").show();
+ $("input[name='jobterm_text']").val(full_name).addClass("hidden_valid").show();
$("input[name='jobterm']").val(jtid);
}