ViewManager = {};
ViewManager.steps = ['',
					 '<span>Step 1 of 5</span>: Search for a destination above',
					 '<span>Step 2 of 5</span>: From results, add destinations to your dream list',
					 '<span>Step 3 of 5</span>: Use your dream list to map out a trip',
					 '<span>Step 4 of 5</span>: Pick places to go and get directions',
					 '<span>Step 5 of 5</span>: &quot;Save route/print directons&quot; before you hit the road!'
					];
ViewManager.markers = {};
ViewManager.prompted = false;
ViewManager.promptedFrom = null;
ViewManager.backToSearchFrom = function(from) {
	gm.restoreMarkers(ViewManager.markers.search).setType(G_PHYSICAL_MAP);
	document.getElementById('tripBuilderLink').onclick = function() {
		ViewManager.tripBuilderFrom();
	 	return false;
	};
	if (from == 'premadeTrips') {
		$('#preMadeTrips').hide();
		ViewManager.hideAnimated('#premadeTripList', '#search');
		Trip.reset();
	}
	else {
		$('#tripBuilderCol1').hide();
		$('#tripBuilderCol2').hide();
		$('#directionInstructions').hide();
	}
	if ((destinations.getListCount('pending') + destinations.getListCount('completed')) > 0) {
		$('#userDestinations').show();
	}
	else {
		$('#listInstructions').show();
	}
	ViewManager.showStep(3);
	$('#searchbox').show();
	ViewManager.hideTripDetails();
	Filter.enable();
	ViewManager.search.show();
};
ViewManager.premadeTrips = function(animated) {
	ViewManager.showStep(0);
	ViewManager.markers.search = gm.getMarkers();
	document.getElementById('tripBuilderLink').onclick = function() {
		ViewManager.tripBuilderFrom('premadeTrips');
	 	return false;
	};
	
	if (animated) {
		ViewManager.showAnimated('#search', '#premadeTripList', function() {
			$('#premadeTripList a.title:first').click();
			$('#preMadeTrips').show();
			ViewManager.search.hide();
			$('#searchbox').hide();
		});
	}
	else {
		$('#searchbox').hide();
		$('#search').hide();
		$('#premadeTripList').show();
		$('#preMadeTrips').show();
		ViewManager.search.hide();
		$('#premadeTripList a.title:first').click();
	}
};
ViewManager.backToPremadeTrips = function() {
	gm.restoreMarkers(ViewManager.markers.premadeTrips).setType(G_PHYSICAL_MAP);
	$('#preMadeTrips').show();
	if ((destinations.getListCount('pending') + destinations.getListCount('completed')) > 0) {
		$('#userDestinations').show();
	}
	else {
		$('#listInstructions').show();
	}
	$('#tripBuilderCol1').hide();
	$('#tripBuilderCol2').hide();
	$('#directionInstructions').hide();
	ViewManager.showStep(0);
	ViewManager.hideTripDetails();
	Filter.enable();
};
ViewManager.tripBuilderFrom = function(from, tripId) {
	ViewManager.showStep(4);
	if (ViewManager.promptForLogin(from, tripId)) {
		function linkArrow(text) {
			return text;
		}
		if (from == 'premadeTrips') {
			ViewManager.markers.premadeTrips = gm.getMarkers();
			document.getElementById('backFromTripBuilderLink').onclick = function() {
				ViewManager.backToPremadeTrips();
				$('#backFromTripBuilderLink').hide();
				return false;
			};
			$('#backFromTripBuilderLink').html(linkArrow('Back to Premade Trips'));
			$('#backFromTripBuilderLink').show();
			$('#preMadeTrips').hide();
		}
		else {
			ViewManager.markers.search = gm.getMarkers();
			document.getElementById('backFromTripBuilderLink').onclick = function() {
				ViewManager.backToSearchFrom('tripBuilder');
				$('#backFromTripBuilderLink').hide();
				return false;
			};
			$('#backFromTripBuilderLink').html(linkArrow('Back to Results'));
			$('#backFromTripBuilderLink').show();

			document.getElementById('tripBuilderLink').onclick = function() {
				ViewManager.tripBuilderFrom();
			};
			ViewManager.search.hide();
			pageTracker._trackPageview('/itinerary_builder/build_trip_now_step1.html');
		}
		gm.setType(G_NORMAL_MAP);
		destinations.setupBuilder();

		if (tripId) {
			var tripDestinations = destinations.getDestinationsFromPreMadeTrip(tripId);
			for (var i in tripDestinations) {
				destinations.getDestinationFrom(tripDestinations[i].getId(), 'pendingTrip').addToTrip();
			}
		}
		$('#userDestinations').hide();
		$('#tripBuilderCol1').show();
		$('#searchbox').hide();
		Filter.disable();
	}
};
ViewManager.promptForLogin = function(from, tripId) {
	if ($('body').hasClass('loggedIn') || ViewManager.prompted) {
		return true;
	}
	else {
		ViewManager.prompted = true;
		ViewManager.promptedFrom = from;
		ViewManager.tripId = tripId;
		$('#promptForLoginContainer').show();
		return false;
	}
};
ViewManager.continueToTripBuilder = function() {
	ViewManager.tripBuilderFrom(ViewManager.promptedFrom, ViewManager.tripId);
	ViewManager.prompted = true;
	$('#promptForLoginContainer').hide();
};
ViewManager.search = {}
ViewManager.search.show = function() {
	if (destinations.getListCount('search') > 0) {
		ViewManager.showStep(3);
		$('#searchDestinationWrapper').show();
	}
	else {
		$('#searchInstructions').show();
	}
}
ViewManager.search.hide = function() {
	if (destinations.getListCount('search') > 0) {
		$('#searchDestinationWrapper').hide();
	}
	else {
		$('#searchInstructions').hide();
	}
}

ViewManager.hideTripDetails = function() {
	$('#tripDetailsContainer').hide();
}
ViewManager.showAnimated = function(from, to, completeFunction) {
	var from = $(from);
	var to = $(to);
	from.css('float', 'left');
	to.css({'float':'left', 'position':'absolute', 'left':0, 'top':0});
	onComplete = function() {
		to.css({'float':'none', 'position':'static'});
		from.css({'float':'none'}).hide();
		if (typeof(completeFunction) == 'function') {
			completeFunction();
		}
	}
	to.show('slide', {'direction': 'left'}, null, onComplete);
}
ViewManager.hideAnimated = function(from, to) {
	var from = $(from);
	var to = $(to);
	from.css({'float':'left', 'position':'absolute', 'left':0, 'top':0});
	to.css('float', 'left').show();
	onComplete = function() {
		to.css({'float':'none'});
		from.css({'float':'none', 'position':'static'}).hide();
	}
	from.hide('slide', {'direction': 'left'}, null, onComplete);
}

ViewManager.showStep = function(currentStep) {
	$('#currentStep').html(ViewManager.steps[currentStep]);
}
