FLYG.ready(function(){

	if (document.getElementById('outdepair')){

		var optSort=function(a){		// a private function to sort option objects by name
			return a.sort(function(a,b){
				if (a.name<b.name) return -1;
				if (a.name>b.name) return 1;
				return 0;
				});
			};
		
		var outdepair=new FLYG.FormControls.Link(new FLYG.FormControls.SelectBox('outdepair','From'),'change');
		var outarrair=new FLYG.FormControls.Link(new FLYG.FormControls.SelectBox('outarrair','To'),'change');
	
		outdepair.setSuccessor(outarrair);
	
		outdepair.activate=function(){
			var domestic=[];
			for (var x in routes) domestic.push(x);
			domestic=optSort(domestic.unique().map(function(z){
				return {name:airports[z] ? getAirportName(z,'longName') : '---',value:z||''};
				}));
			this.formControl.populate(domestic);
			};
		outdepair.handleSelection=function(){
			this.formControl.rename();
			var v=this.formControl.getValue();
			this.successor.clear();
			this.successor.activate();
			};
		
		outarrair.activate=function(){
			var v=this.collectValues(), list=[];
			if (routes[v.outdepair]) list=routes[v.outdepair];
			else{
				for (var x in routes){
					if (routes[x].indexOf(v.outdepair)>=0) list.push(x);
					}
				}
			this.formControl.populate(optSort(list.unique().map(function(x){
				return {name:getAirportName(x,'longName'),value:x};
				})));
			};
			
		outarrair.handleSelection=function(){
			this.formControl.rename();
			};
		
		outdepair.activate();
		
		}
		
	});