var geo = {
    cities : {

    },
    top_cities : {

    },
    airlines : {

    },
    airports : {

    },
    regions : {

    },
    countries : {

    },
    routes : {

    },
    subregions : {

    }
};


// -=Methods=- //

// -=Airports=- //
// -=city by airport=- //
geo.airports.in_city = function (id) {
console.group('geo.airports.in_city()');

    console.info('Looking for airports in city '+id);

    airports = new Array();

    for (var i in geo.airports) {
        if (typeof(geo.airports[i]) == 'object' && geo.airports[i].city_id == id) {
            airports[i] = geo.airports[i];
        }
    }


console.groupEnd('geo.airports.in_city()');
return airports;
}


geo.cities.having_airport = function (id) {
console.group('geo.cities.having_airport');

console.info('Looking for parent city for airport '+id);
console.groupEnd('geo.cities.having_airport');

return geo.cities[geo.airports[id].city_id];
}



geo.routes.by_airport_from = function( airport_id ) {
console.group('geo.routes.by_airport_from('+airport_id+')');

    var all_routes = geo.routes[gm.routemap.airline];
    var routes = [];

    $.each( all_routes, function(i) {
        if (typeof(all_routes[i]) == 'object') {
            if (all_routes[i].from && all_routes[i].to) {
                if ( all_routes[i].from == airport_id ) {
                    routes.push( all_routes[i] );
                }
            }
            else
            {
                console.error('broken route found '+'geo.routes['+i+']')
            }
        }
    })

console.groupEnd('geo.routes.by_airport_from('+airport_id+')');
return routes;
}



geo.routes.by_airport = function( airport_id ) {
console.group('geo.routes.by_airport('+airport_id+')');

    var all_routes = geo.routes[gm.routemap.airline];
    var routes = [];

    $.each( all_routes, function(i) {
        if (typeof(all_routes[i]) == 'object') {
            if (all_routes[i].from && all_routes[i].to) {
                if ( all_routes[i].from == airport_id || all_routes[i].to == airport_id ) {
                    routes.push( all_routes[i] );
                }
            }
            else
            {
                console.error('broken route found '+'geo.routes['+i+']')
            }
        }
    })

console.groupEnd('geo.routes.by_airport('+airport_id+')');
return routes;
}



geo.routes.having_city = function( city_id ) {

    airline = ui.current_routemap;
    routes = geo.routes[airline];
    routes.length = routes.length || '?';
    console.info('drawing routes for airline '+airline+', city '+city.name+'. '+routes.length+' routes found');

    var routes = geo.routes[airline_id];

    $.each( routes, function(i) {
        if (typeof(routes[i]) == 'object') {
            if (routes[i].from && routes[i].to) {
                if ( geo.airports[routes[i].from].city_id == city.id || geo.airports[routes[i].to].city_id == city.id ) {
                    gm.drawLine( geo.airports[routes[i].from], geo.airports[routes[i].to] );
                }
            }
            else
            {
                console.error('broken route found '+'geo.routes['+i+']')
            }
        }
    })


}