function airports_initExec() {
	xjs_mode = '';
	Airports	= buildAirports();
	AirportsResidents = buildAirportsResidents();
	AirportsFamNum = buildAirportsFamNum();
	AirportsSubmode = buildAirports_submode();
	AirportsConnection = buildAirportsConnection();
	AirportsCheckin = buildAirportsCheckin();
	returnArrayAirportsThirdCompanyGroup = buildAirportsThirdCompany(true);
	returnArrayAirportsThirdCompanyNoGroup = buildAirportsThirdCompany(false);
	AirportsThirdCompanyGroup = returnArrayAirportsThirdCompanyGroup[0]; 
	CompanyAirportsThirdCompany = returnArrayAirportsThirdCompanyGroup[1];
	AirportsThirdCompanyNoGroup = returnArrayAirportsThirdCompanyNoGroup[0]; 

	AirportsThirdCompany = AirportsThirdCompanyGroup.concat(AirportsThirdCompanyNoGroup); 
	
	SortedTranslationArray =  getSortedTranslationArray();

	if (AirportsThirdCompany.length>0){		
		Airports = Airports.concat(AirportsThirdCompanyNoGroup);
		Airports = trimSortObjArray(Airports);
		AirportsThirdCompanyGroup = trimGroupNoGroupArray(AirportsThirdCompanyGroup);

		AirportsThirdCompanyGroup = deleteDuplicates(Airports,AirportsThirdCompanyGroup);
		
	}
}

	function trimGroupNoGroupArray(airports){
	    var arrTexts = new Array();
		var partialList= new Array();
		var fullList= new Array();
		var oldValues=new Array();
		var j=0;
		for(var i=0;i<airports.length;i++){
			arrTexts[i] = airports[i].name;
			//busca si hay aeropuertos con acentos y los quita para poder ordenar correctamente.
			if (searchAccent(arrTexts[i])){
				oldValues[j]=arrTexts[i];
				j++;				
				arrTexts[i]=changeAccent(arrTexts[i]);				
			}
			if(partialList[ arrTexts[i]]==null){
				partialList[ arrTexts[i]]=airports[i];
			}
			else{
				partialList[ arrTexts[i]].dests=mergeTrimArrays(partialList[ arrTexts[i]].dests,airports[i].dests);
			}
		}
		arrTexts.sort();
		
	    for(var i=0;i<arrTexts.length;i++){
				fullList.push(partialList[arrTexts[i]]);
		}
		return fullList;
	}
	
	function deleteDuplicates(airports,airportsthirdgroup){
		var fullList= new Array();
	    for(var i=0;i<airportsthirdgroup.length;i++){
			var found = false;
			for(var j=0;j<airports.length;j++){
				if(airports[j].code == airportsthirdgroup[i].code){
					found = true;
					j=airports.length;
				}
			}
			if (found == false){
				fullList.push(airportsthirdgroup[i]);
			}			
		}
	   return fullList;
	}
	
	function trimSortObjArray(airports){
		var arrTexts = new Array();
		var partialList= new Array();
		var fullList= new Array();
		var oldValues=new Array();
		var j=0;
		for(var i=0;i<airports.length;i++){
			if(airports[i]!=null){
				arrTexts[i] = airports[i].name;
				if (searchAccent(arrTexts[i])){
					oldValues[j]=arrTexts[i];
					j++;				
					arrTexts[i]=changeAccent(arrTexts[i]);				
				}
				if(partialList[ arrTexts[i]]==null){
					partialList[ arrTexts[i]]=airports[i];
				}
				else{
					partialList[ arrTexts[i]].dests=mergeTrimArrays(partialList[ arrTexts[i]].dests,airports[i].dests);
				}
			}
		}
		arrTexts.sort();
		for(var i=0;i<arrTexts.length;i++){			
			if( i>0 && arrTexts[i] == arrTexts[i-1]){
			}
			else{
				fullList.push(partialList[arrTexts[i]]);
			}
		}
		return	fullList;
	}

	function trimSortObjArrayConn(orig,airports){
		
		if (typeof order_connections_conf == 'undefined') order_connections_conf = 1;
		var order_connections = 1; //Sort airports separately or together.
		var arrTexts = new Array();
		var arrTextsConn = new Array();
		var arrTextsAll = new Array();
		var partialList= new Array();
		var fullList= new Array();
		var oldValues=new Array();
		var j=0;
		var k=0;
		for(var i=0;i<airports.length;i++){
			if(airports[i]!=null){
				
				//Sort airports together
				if (order_connections == 1)
				{
					var connection_str = getAirportFlagConnection( orig , airports[i].code );
					if (connection_str)
					{
						arrTextsConn[k] = airports[i].name;
						if (searchAccent(arrTextsConn[k])){
							oldValues[j]=arrTextsConn[k];
							j++;				
							arrTextsConn[k]=changeAccent(arrTextsConn[k]);				
						}
						if(partialList[ arrTextsConn[k]]==null){
							partialList[ arrTextsConn[k]]=airports[i];
						}
						else{
							partialList[ arrTextsConn[k]].dests=mergeTrimArrays(partialList[ arrTextsConn[k]].dests,airports[i].dests);
						}
						k++;
					}
					else
					{
						arrTexts[i] = airports[i].name;
						if (searchAccent(arrTexts[i])){
							oldValues[j]=arrTexts[i];
							j++;				
							arrTexts[i]=changeAccent(arrTexts[i]);				
						}
						if(partialList[ arrTexts[i]]==null){
							partialList[ arrTexts[i]]=airports[i];
						}
						else{
							partialList[ arrTexts[i]].dests=mergeTrimArrays(partialList[ arrTexts[i]].dests,airports[i].dests);
						}
					}
				}
				//Sort airports separately
				else
				{
					arrTextsAll[i] = airports[i].name;
					if (searchAccent(arrTextsAll[i])){
						oldValues[j]=arrTextsAll[i];
						j++;				
						arrTextsAll[i]=changeAccent(arrTextsAll[i]);				
					}
					if(partialList[ arrTextsAll[i]]==null){
						partialList[ arrTextsAll[i]]=airports[i];
					}
					else{
						partialList[ arrTextsAll[i]].dests=mergeTrimArrays(partialList[ arrTextsAll[i]].dests,airports[i].dests);
					}
				}
			}
		}
		
		//Sort airports together
		if (order_connections == 1)
		{
			arrTexts.sort();
			arrTextsConn.sort();
			
			for(var i=0;i<arrTexts.length;i++){	
				if( i>0 && arrTexts[i] == arrTexts[i-1]){
				}
				else{
					fullList.push(partialList[arrTexts[i]]);
				}
			}
			for(var i=0;i<arrTextsConn.length;i++){	
				if( i>0 && arrTextsConn[i] == arrTextsConn[i-1]){
				}
				else{
					fullList.push(partialList[arrTextsConn[i]]);
				}
			}
		}
		//Sort airports separately
		else
		{
			arrTextsAll.sort();
			
			for(var i=0;i<arrTextsAll.length;i++){	
				if( i>0 && arrTextsAll[i] == arrTextsAll[i-1]){
				}
				else{
					fullList.push(partialList[arrTextsAll[i]]);
				}
			}
		}
		
		return	fullList;
	}

	function changeAccent(t){	
	       à='a';ä='a';â='a';á='a';
		   é='e';ê='e';ë='e';è='e';	   
		   í='i';ï='i';î='i';ì='i';
		   ó='o';ô='o';ö='o';ò='o';	   
		   ú='u';û='u';ù='u';
		   ñ='n';
		   ç='c';
	       accent = /[áâäàéêëèíïîìóôöòúûùñç]/g;
	       return t.replace(accent, function($1){
	               return eval($1)
	       })
	}
	function mergeTrimArrays(tmpArray1,tmpArray2){
		mergedArray=tmpArray1.concat(tmpArray2);
		tmpArray = new Array();
		finalArray = new Array();
		for (var i in SortedTranslationArray){
			for(var j=0;j<mergedArray.length;j++){
				if (i==mergedArray[j]){					
					finalArray.push(mergedArray[j]);
					j = mergedArray.length
				}
			}
		} 
		return finalArray;
	}
	function searchAccent(input)
	//Verifica si la cadena que se le envio tiene caracteres especiales
	{
	        accent = /[áâäàéêëèíïîìóôöòúûùñç]/g;
	       var re = new RegExp(accent);
	       if (input.match(re)) {
	               return true;
	       } else {
	               return false;
	       }
	}
	function airportThirdCompany(m, c, n, d,ao)
	{
		this.mac			= m;
		this.code			= c;
		this.name			= n;
		this.dests			= d;
		this.activeOrigin	= ao;
		this.display	= function ()
		{
			var msg		=  "Airport: "
						+ "\n   mac: " + this.mac
						+ "\n   code: " + this.code
						+ "\n   name: " + this.name
						+ "\n   activeOrigin: " + this.activeOrigin
						+ "\n   dests: ";
			for (var i=0; i < this.dests.length; i++)
			{
				msg		+= "'" + this.dests[i][0] + "', ";
			}
			alert( msg );
		};
	}
	
	function airport(m, c, n, d)
	{
		this.mac		= m;
		this.code	= c;
		this.name	= n;
		this.dests	= d;
		this.display	= function ()
		{
			var msg		=  "Airport: "
						+ "\n   code: " + this.code
						+ "\n   name: " + this.name
						+ "\n   dests: ";
			for (var i=0; i < this.dests.length; i++)
			{
				msg		+= "'" + this.dests[i] + "', ";
			}
			alert( msg );
		};
	}
	
	function airportConnection(c, s, m ,n)
	{
		this.code	= c;
		this.stop	= s;
		this.time_max	= m;
		this.time_min	= n;
		this.display	= function ()
		{
			var msg		=  "Airport connection: "
						+ "\n   code: " + this.code
						+ "\n   stop: " + this.stop
						+ "\n   time_max: " + this.time_max
						+ "\n   time_min: " + this.time_min
			alert( msg );
		};
	}
	function airportResidents(m, c, n, d)
	{
		this.mac		= m;
		this.code	= c;
		this.name	= n;
		this.dests	= d;
		this.display	= function ()
		{
			var msg		=  "Airport: "
						+ "\n   code: " + this.code
						+ "\n   name: " + this.name
						+ "\n   dests: ";
			for (var i=0; i < this.dests.length; i++)
			{
				msg		+= "'" + this.dests[i] + "', ";
			}
			alert( msg );
		};
	}

	function airport_submode(m, c, n, d)
	{
		this.mac	= m;
		this.code	= c;
		this.name	= n;
		this.dests	= d;

		this.display	= function ()
		{
			var msg		=  "Airport: "
						+ "\n   code: " + this.code
						+ "\n   name: " + this.name
						+ "\n   dests: ";
			for (var i=0; i < this.dests.length; i++)
			{
				msg		+= "'" + this.dests[i] + "', ";
			}
			alert( msg );
		};
	}


	function airportFamNum(m, c, n, d)
	{
		this.mac		= m;
		this.code	= c;
		this.name	= n;
		this.dests	= d;
		this.display	= function ()
		{
			var msg		=  "Airport: "
						+ "\n   code: " + this.code
						+ "\n   name: " + this.name
						+ "\n   dests: ";
			for (var i=0; i < this.dests.length; i++)
			{
				msg		+= "'" + this.dests[i] + "', ";
			}
			alert( msg );
		};
	}

	function getAirport( code )
	{
		var air;
		for (var i=0; i < Airports.length; i++)
		{			
			if ( Airports[i].code == code )
			{
				air		= Airports[i];
				break;
			}
		}
		return air;
	}
	function getAirportResidents( code )
	{
		var air;
		for (var i=0; i < AirportsResidents.length; i++)
		{
			if ( AirportsResidents[i].code == code )
			{
				air		= AirportsResidents[i];
				break;
			}
		}
		return air;
	}
	function getAirportFamNum( code )
	{
		var air;
		for (var i=0; i < AirportsFamNum.length; i++)
		{
			if ( AirportsFamNum[i].code == code )
			{
				air		= AirportsFamNum[i];
				break;
			}
		}
		return air;
	}
function getAirportSubmode( code )
	{
		var air;
		for (var i=0; i < AirportsSubmode.length; i++)
		{
			if ( AirportsSubmode[i].code == code )
			{
				air		= AirportsSubmode[i];
				break;
			}
		}
		return air;
	}
 function getAirportThirdCompanyGroup( code )
    {
		var air;
		for (var i=0; i < AirportsThirdCompanyGroup.length; i++)
		{

			if ( AirportsThirdCompanyGroup[i].code == code )
			{
				air		= AirportsThirdCompanyGroup[i];
				break;
			}
		}
		return air;
    }	

