document.observe('dom:loaded', function(event) {
	$$('.airline_selector_letter').each(function(elm) {
		elm.observe('click', function(event) {
			selectAirlineLetter(elm.innerHTML);
		});
		elm.observe('mouseover', function(event) {
			elm.addClassName('hover');
		});
		elm.observe('mouseout', function(event) {
			elm.removeClassName('hover');
		});
	});
	$$('.airline_selector_airline').each(function(elm) {
		elm.observe('click', function(event) {
			selectAirline(elm);
		}); 
	});
	$('airline_selector_container_close').observe('click', function(event) {
		$('airline_selector_container').setStyle('display: none');
	});
	$$('.airline_selector_airline_title').each(function(elm) {
		elm.observe('mouseover', function(event) {
			elm.addClassName('hover');
		});
		elm.observe('mouseout', function(event) {
			elm.removeClassName('hover');
		});
	});
});

var AIRLINE_SELECTOR_CURRENT_LETTER = '';

function selectAirlineLetter(l) {
	$('airline_selector_container').setStyle('display: block');
	if (AIRLINE_SELECTOR_CURRENT_LETTER != '') {
		$(AIRLINE_SELECTOR_CURRENT_LETTER).setStyle('display: none');
	}
	$('airline_selector_data_' + l).setStyle('display: block');
	var airlines = $$('#airline_selector_data_' + l + ' .airline_selector_airline');
	AIRLINE_SELECTOR_CURRENT_LETTER = 'airline_selector_data_' + l;
}

function selectAirline(e) {
	if (e) {
		var text = e.childElements()[0].innerHTML;
		var mover = $('airline_selector_mover');
    var al = $('search_airline');
    var pos = findPos(al);
    var start_pos = findPos(e);

		al.value=text;
		al.focus();
		mover.innerHTML=text;
    mover.style.top=(start_pos[1]+4)+'px';
    mover.style.left=(start_pos[0]+4)+'px';
		mover.show();
		$('airline_selector_container').setStyle('display: none');
    Effect.Queues.get('myscope').invoke('cancel');

    new Effect.Parallel([
      new Effect.Move(mover, { sync: true, x: pos[0]+4, y: pos[1]+4, mode: 'absolute' }), 
      new Effect.Highlight(mover, { sync: true, startcolor: '#ffff99', endcolor: '#cccccc' }),
      new Effect.Opacity(mover, { sync: true, from: 1, to: 0 })
      ], { 
      duration: 1.5, queue: { scope: 'myscope' }
    });
    new Effect.Parallel([
      new Effect.Move(mover, {sync: true, x: 0, y: 0, mode: 'absolute' }),
      new Effect.Highlight($('search_airline'), { sync: true, startcolor: '#ff99ff' } )
      ], {
      duration: 1.0, queue: { position: 'end', scope: 'myscope' }
    });
	  new Effect.Highlight($('search_departure_airport'), { startcolor: '#ff99ff', queue: { position: 'end', scope: 'myscope' } });
		$('search_departure_airport').focus();
	}
}

function findPos(obj) {
  var curleft = curtop = 0;
  if (obj.offsetParent) {
    do {
      curleft += obj.offsetLeft;
      curtop += obj.offsetTop;
    } while (obj = obj.offsetParent);
  return [curleft,curtop];
  }
}
