//Pone las ciudades del array ciudades en el elemento s
function putCities(ciudades, s) {
var NUM_FILAS = 11;
//Creamos una tabla con las ciudades
var t = $('
').attr('id', 'ciudadesSelect');
//Creamos un array de filas. Montamos esto porque queremos que el orden de colocación de los elementos sea de arriba a abajo y no de izquierda a derecha
filas = new Array();
for (var i = 0; i');
var num_fila = 0;
$.each(ciudades.cities, function(code, city) {
var td = $('
');
td.append(city.name + " (" + code + ")");
td.addClass('ciudadSelect');
td.attr('code', code);
//Acción al seleccionar la ciudad
td.click(function(){
cerrar_selector(s);
if (s == SORIGEN) putOriginCity(city);
else putDestinationCity(city)
});
//Acción al hacer hover de ciudad
td.hover(
function(){$(this).addClass('selected');},
function(){$(this).removeClass('selected');}
);
filas[num_fila].append(td);
if (num_fila < NUM_FILAS - 1) num_fila++;
else num_fila = 0;
});
//Añadimos las filas a la tabla
for (var i = 0; i').click(function() {
cerrar_selector(s);
});
//Usamos el plugin bgiframe para evitar que los selectores se muestren por debajo de los widgets select en IE.
$(SORIGEN).bgiframe();
$(SDESTINO).bgiframe();
}
//Pone el código de la ciudad seleccionada en el campo oculto y el nombre entero en el campo visual
function ponerCiudad(ciudad, market) {
var s = 'input#city' + market;
if (ciudad == '') {
$(s).val('');
if (market == 1) $(s + 'View').val(searchText.originText);
else $(s + 'View').val(searchText.destinationText);
}
else {
$(s).val(ciudad.code);
$(s + 'View').val(ciudad.name + " (" + ciudad.code + ")");
}
}
//Abre el selector de ciudades
function abrir_selector(s) {
//Marcamos en la lista la ciudad que ya está seleccionada al abrir el selector
if (s == SORIGEN) {
var cs = $('input#city1').val();
$('input#city1View').select();
}
else {
var cs = $('input#city2').val();
$('input#city2View').select();
}
if (cs != '') {
$('td.ciudadSelect').each(function() {
if (cs == $(this).attr('code')) $(this).addClass('selected2');
else $(this).removeClass('selected2');
});
}
$(s).css('display', 'inline');
$(document).bind('mousedown', checkMouse);
}
//Cierra el selector de ciudades
function cerrar_selector(s) {
$(s).css('display', 'none');
$(document).unbind('mousedown', checkMouse);
}
//Función para hacer bind del click del mouse. La usamos para que se cierre el selector al picar fuera del mismo
function checkMouse(e) {
var el = e.target;
var sel1 = $(SORIGEN)[0];
var sel2 = $(SDESTINO)[0];
while (true){
if (el == sel1 || el == sel2) {
return true;
}
else if (el == document) {
cerrar_selector(SORIGEN);
cerrar_selector(SDESTINO);
return false;
}
else {
el = $(el).parent()[0];
}
}
}