var TripPlanner = {};

var options = {
  centerLat: itinerariesCenterLat,
  centerLng: itinerariesCenterLng,
  placesZoomThresholdMax: itinerariesPlacesZoomThresholdMax,
  stopAreasZoomThresholdMax: itinerariesStopAreasZoomThresholdMax,
  zoomThresholdMax: itinerariesZoomThresholdMax,
  zoomThresholdMin: itinerariesZoomThresholdMin,
  zoom: itinerariesZoomDefault,
  markersAsNumberOrLetters: itinerariesMakersAsNumberOrLetters,
  mapType: itinerariesMapType
};

var init_search = function () {
  TripPlanner.controller = new SearchMapController();
  TripPlanner.mapView = new MapView("map", options);
  TripPlanner.formView = itinerariesMapDisplayDepArr ? new MapBindedFormView(TripPlanner.mapView) : new FormView();
  TripPlanner.controller.setMapView(TripPlanner.mapView);
  TripPlanner.controller.setLayer(options);

  if ( typeof(overlayMarkersPath) != 'undefined') {
    options[ 'overlayMarkersPath'] = overlayMarkersPath;
    TripPlanner.cluster_controller = new SearchMapClusterController();
    TripPlanner.cluster_controller.setMapView(TripPlanner.mapView);
    TripPlanner.cluster_controller.setLayer(options);
  }

}

var init_result = function () {
  TripPlanner.controller  = new ResultsMapController();
  TripPlanner.resultsView = new ResultsListView('route_select_box', TripPlanner.controller);
  TripPlanner.controller.setTrips(itinerary.trips);
  TripPlanner.tripsDetailViews = [];
  $$('.trip').each(function(element) {
    TripPlanner.tripsDetailViews.push(new DetailsView(element, TripPlanner.controller));
  });
  TripPlanner.mapView = new MapView("map", options);
  TripPlanner.formView = itinerariesMapDisplayDepArr ? new MapBindedFormView(TripPlanner.mapView) : new FormView();
  TripPlanner.controller.setMapView(TripPlanner.mapView);
  TripPlanner.controller.setLayer(options);
  TripPlanner.controller.displayTrip(0);
}

document.observe('dom:loaded', function() {
  if (page_has_results) {
    init_result();
  } else {
    init_search();
  }
});

