//make sure we submit the login form on enter keypress
function submitenter(myfield,e){
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
   {
	logIn();
   return false;
   }
else
   return true;
}

function logIn(loginUsername,loginPassword,cancelRedirect){ //TODO: is there a security flaw here? Should we use the action of the form instead?
	var formParams = $('login_form').serialize(true); //prototype.js code to turn all search_form fields into params
	if (loginUsername && loginPassword){ //for sign up auto login
		formParams.username = loginUsername;
		formParams.password = loginPassword;
	}
	//send query via prototype.js AJAX request
	new Ajax.Request('execute/Login',
	  {
	    method:'post',
		parameters: formParams,
		onSuccess: function(transport){
			//alert(transport.responseText);
			var login = transport.responseText.evalJSON();
			if(login.success) {
				var user = login.user;
				$('login_form').remove();
				$('signUpLinkContainer').remove();
				$('welcomeBackUserName').innerHTML = user.id;
				$('welcomeBackCredits').innerHTML = user.credits;
				$('loggedIn').style.display = 'block';
				$('listTab').style.visibility = 'visible';
				if (user.defaultVehicle.reservation!=null){
					//TODO: combine into function 
					var headerReservation = 'Your <b>reservation</b>: <a href="#" onClick="showReservationDetails(\'' + user.defaultVehicle.reservation.address + '\',\'' + user.defaultVehicle.reservation.borough + '\',\'' + user.defaultVehicle.reservation.reserveTime + '\',\'' + user.defaultVehicle.reservation.date + '\',\'' + user.defaultVehicle.reservation.giver.year + '\',\'' + user.defaultVehicle.reservation.giver.make + '\',\'' + user.defaultVehicle.reservation.giver.model + '\',\'' + user.defaultVehicle.reservation.giver.color + '\',\'' + user.defaultVehicle.reservation.giver.info + '\',\'' + user.defaultVehicle.reservation.lat + '\',\'' + user.defaultVehicle.reservation.lon + '\',\'' + user.defaultVehicle.reservation.metered + '\',\'' + user.defaultVehicle.reservation.fullDay + '\',\'' + user.defaultVehicle.reservation.nextDay + '\',\'' + user.defaultVehicle.reservation.notes + '\')">' + user.defaultVehicle.reservation.address + ', ' + user.defaultVehicle.reservation.borough + ' at ' + user.defaultVehicle.reservation.reserveTime + ' on ' + user.defaultVehicle.reservation.date + '</a>';
					$('headerReservation').innerHTML = headerReservation;
					$('reservationListing').style.display='block';
				}

				if (user.defaultVehicle.reservation!=null && user.defaultVehicle.listing!=null){
					headerReservation = headerReservation + "<br/>";
					$('headerReservation').innerHTML = headerReservation;
				}
				
				if (user.defaultVehicle.listing!=null){
					//var headerListing = "Your current <b>listing</b>: " + user.defaultVehicle.listing.address + ", " + user.defaultVehicle.listing.borough + " at " + user.defaultVehicle.listing.reserveTime + " on " + user.defaultVehicle.listing.date;

					if (user.defaultVehicle.listing.taker!=null){
						//var headerListing = "Your current <b>listing</b>: " + user.defaultVehicle.listing.address + ", " + user.defaultVehicle.listing.borough + " at " + user.defaultVehicle.listing.time + " on " + user.defaultVehicle.listing.date;
						var headerListing = 'Claimed <b>listing</b>: <a href="#" onClick="showListingDetails(\'' + user.defaultVehicle.listing.address + '\',\'' + user.defaultVehicle.listing.borough + '\',\'' + user.defaultVehicle.listing.time + '\',\'' + user.defaultVehicle.listing.date + '\',\'' + user.defaultVehicle.listing.waitFor + '\',\'' + user.defaultVehicle.listing.lat + '\',\'' + user.defaultVehicle.listing.lon + '\',true,\'' + user.defaultVehicle.listing.taker.year + '\',\'' + user.defaultVehicle.listing.taker.make + '\',\'' + user.defaultVehicle.listing.taker.model + '\',\'' + user.defaultVehicle.listing.taker.color + '\',\'' + user.defaultVehicle.listing.taker.info + '\');return false;">' + user.defaultVehicle.listing.address + ', ' + user.defaultVehicle.listing.borough + " at " + user.defaultVehicle.listing.time + " on " + user.defaultVehicle.listing.date + '</a><br>';
					} else {
						var headerListing = 'Your <b>listing</b>: <a href="#" onClick="showListingDetails(\'' + user.defaultVehicle.listing.address + '\',\'' + user.defaultVehicle.listing.borough + '\',\'' + user.defaultVehicle.listing.time + '\',\'' + user.defaultVehicle.listing.date + '\',\'' + user.defaultVehicle.listing.waitFor + '\',\'' + user.defaultVehicle.listing.lat + '\',\'' + user.defaultVehicle.listing.lon + '\',false);return false;">' + user.defaultVehicle.listing.address + ', ' + user.defaultVehicle.listing.borough + " at " + user.defaultVehicle.listing.time + " on " + user.defaultVehicle.listing.date + '</a><br>';
					}
										
					$('headerListing').innerHTML = headerListing;
					$('reservationListing').style.display='block';
				}
				
				// get user vehicles
				var vehicle = user.defaultVehicle;
				var vehicleId = vehicle.id;
				var label = vehicle.label;
				var plate = vehicle.plate;
				var pstate = vehicle.PState;
				// etc.
				document.search_form.spacePlate.value = vehicle.PState + plate;
				document.list_form.listPlate.value = vehicle.PState + plate;

				// get user listings
				listFormRef = $('listInfo'); //this is a global var for swapping the list form and the list info
				var listing = user.defaultVehicle.listing;
				if (listing) {
					var lat = listing.lat;
					var lon = listing.lon;
					var address = listing.address;
					var borough = listing.borough;
					var date = listing.date;
					var time = listing.time;
					var wait = listing.waitFor;
					$('listingAddress').innerHTML = address;
					$('listingBorough').innerHTML = borough;
					$('listingTime').innerHTML = time;
					$('listingDate').innerHTML = date;
					$('listingWait').innerHTML = wait + ' minutes';
					listFormRef = $('list_form').replace($('listInfo'));
					$('listInfo').style.display = 'block';
				}
				//NEW CODE FOR SECURE PAGE
				//NEW CODE FOR SECURE PAGE
				if (cancelRedirect){
					return;
				}
				returnToMap();
				//NEW CODE FOR SECURE PAGE
				//NEW CODE FOR SECURE PAGE
			} else {
				openResponseMsgWin(login);
			}
		},
		//this assumes a failure to retrieve data from the server
		onFailure: function(){
			openMsgWin('ERROR');
		}
	});
}

function showForm(formToShow){
	if (formToShow=='listForm'){
		document.getElementById('listForm').style.visibility='visible';
		document.getElementById('searchResultsDisplay').style.visibility='hidden';
		document.getElementById('listTab').style.borderBottom='1px solid #CCFFCC';
		document.getElementById('searchTab').style.borderBottom='1px solid green';
		document.getElementById('resultsTab').style.borderBottom='1px solid green';
		//document.search_form.searchList.value='list';
		document.getElementById('searchLink').style.color='#999999';
		document.getElementById('resultsLink').style.color='#999999';
		document.getElementById('listLink').style.color='#000000';
	} else if (formToShow=='resultsList'){
		document.getElementById('searchResultsDisplay').style.visibility='visible';
		document.getElementById('listForm').style.visibility='hidden';
		document.getElementById('resultsTab').style.borderBottom='1px solid #EEEEFF';
		document.getElementById('listTab').style.borderBottom='1px solid #000066';
		document.getElementById('searchTab').style.borderBottom='1px solid #000066';
		//document.search_form.searchList.value='search';
		document.getElementById('searchLink').style.color='#999999';
		document.getElementById('listLink').style.color='#999999';
		document.getElementById('resultsLink').style.color='#000000';
	} else if (formToShow=='searchForm'){
		document.getElementById('listForm').style.visibility='hidden';
		document.getElementById('searchResultsDisplay').style.visibility='hidden';
		document.getElementById('searchTab').style.borderBottom='1px solid #FFFFCC';
		document.getElementById('listTab').style.borderBottom='1px solid orange';
		document.getElementById('resultsTab').style.borderBottom='1px solid orange';
		//document.search_form.searchList.value='search';
		document.getElementById('listLink').style.color='#999999';
		document.getElementById('resultsLink').style.color='#999999';
		document.getElementById('searchLink').style.color='#000000';
	}
}

function showAdvanced(linkText){
	if (linkText=='show advanced'){
		document.getElementById('searchAdvanced').style.display='block';
		document.getElementById('advancedLink').innerHTML = 'hide advanced';
	} else {
		document.getElementById('searchAdvanced').style.display='none';
		document.getElementById('advancedLink').innerHTML = 'show advanced';
	}
}

function highlightRow(row,markerNumber){
	row.addClassName("rowHighlight");
	row.firstDescendant().firstDescendant().src = 'images/pin_blue.png';
	allMarkers[markerNumber].setIcon('images/pin_blue32.png');
	allMarkers[markerNumber].setZIndex(allMarkers.length);
	//pan to the map if the highlighted marker isn't visible
	var bounds = map.getBounds();
	var point = allMarkers[markerNumber].getPosition();
	var isContained = bounds.contains(point);
	if (!isContained){
		map.panTo(point);
	}
}
function removeHighlight(row,markerNumber){
	row.removeClassName("rowHighlight");
	row.firstDescendant().firstDescendant().src = 'images/pin_grey.png';
	allMarkers[markerNumber].setIcon('images/pin_grey32.png');
	allMarkers[markerNumber].setZIndex(markerNumber);
}
