/**************************************************/
/**************************************************/
/* WEB SERVICE CALLS							  */
/**************************************************/

function addressExists() {
	
}


function checkAddress() {
	
	if (isActiveAdd()) {
		if (!confirmAddClose()) {
			return;
		}
	} else {
		active_point = false;
	}
	
	// CLEAR MSGS 
	displayAddFormMsg('');
	
	// RESET ADDRESS VIEW
	resetAddressView();
	
	// NEED TO VALIDATE INPUT
	
	var street_number = document.getElementById("street_number").value;
	var street_name = document.getElementById("street_name").value;
	var street_type = document.getElementById("street_type").value;
	var city = "New Orleans";
	var state = "LA";
	
	//var urlstr = "getAddressCoords.php?street_number=" + street_number + "&street_name=" + street_name + "&street_type=" + street_type + "&city=" + city + "&state=" + state;
	
	var urlstr = "getAddress.php?street_number=" + street_number + "&street_name=" + street_name + "&street_type=" + street_type + "&city=" + city + "&state=" + state;

	var request = GXmlHttp.create();

	request.open('GET', urlstr , true);	// request XML from PHP with AJAX call
	
    request.onreadystatechange = function () {

    	if (request.readyState == 4) {
			var xmlDoc = request.responseXML;

			addresses = xmlDoc.documentElement.getElementsByTagName("address");

			if (addresses.length) {
							
				showHistoryForId(addresses[0].getAttribute("id"));
					
			} else {
				
				// DISPLAY ADD FORM
				displayAddFormMsg('We do not have any information about this address yet.  Please use the form below to add this address to the database.')
				
				active_add = true;
				
				zoomToAddress(street_number, street_name, street_type, city, state);
								
				showSurvey();
			}
			
			deallocIndicator();
		}
    }
    allocIndicator();
    request.send(null);
}
				
function zoomToAddress(street_number, street_name, street_type, city, state) {
	var urlstr = "getAddressCoords.php?street_number=" + street_number + "&street_name=" + street_name + "&street_type=" + street_type + "&city=" + city + "&state=" + state;

	var request = GXmlHttp.create();

	request.open('GET', urlstr , true);	// request XML from PHP with AJAX call
	
    request.onreadystatechange = function () {

    	if (request.readyState == 4) {
			var xmlDoc = request.responseXML;
			
			coords = xmlDoc.documentElement.getElementsByTagName("coord");

			if (coords.length) {
	
				var lng = coords[0].getAttribute("long");
				var lat = coords[0].getAttribute("lat");
				
				setActiveCoords(lng, lat);
				
				/*****************************************/
				/* PLOT ADDRESS AND ZOOM TO IT			 */
				/*****************************************/
				var point = new GPoint(lng, lat);
						
				temp_marker = createHomeMarker(point, orangeHouseIcon, null, street_number + " " + street_name + " " + street_type);
				
				
				map.addOverlay(temp_marker);
				
				map.centerAndZoom(point, 0);		
				
				temp_marker.openInfoWindowHtml(createMarkerHTML(temp_marker.html));
				
			} else {
				
				// TELL THEM ADDRESS NOT FOUND
				displayAddFormMsg('Your address could not be found.  Please enter a different address or try again later.');			
			}
			
			deallocIndicator();
       	}
    }
    
    allocIndicator();
    
    request.send(null);
    
}

function addHome() {
	
	// GET FORM INPUT VALUES
	var parent_neighborhood_id = document.forms['AddHome'].parent_neighborhood_id.value;
	var neighborhood_id = document.forms['AddHome'].neighborhood_id.value;
	var street_number = document.forms['AddHome'].street_number.value;
	var street_name = document.forms['AddHome'].street_name.value;		
	var street_type = document.forms['AddHome'].street_type.value;
	var city = "New Orleans";
	var state = "LA";
	var lng = document.getElementById("lng").value;
	var lat = document.getElementById("lat").value;
	
	var survey = getSurvey();
	
	var surveyStr = makeSurveyParamStr(survey);
	
	var urlstr="addHome.php?parent_neighborhood_id=" + parent_neighborhood_id + "&neighborhood_id=" + neighborhood_id + "&street_number=" + street_number + "&street_name=" + street_name + "&street_type=" + street_type + "&city=" + city + "&state=" + state + "&lng=" + lng + "&lat=" + lat + "&" + surveyStr;
	
	var request = GXmlHttp.create();
    
    request.open('GET', urlstr , true);	// request XML from PHP with AJAX call

    request.onreadystatechange = function () {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML;

			var point = xmlDoc.documentElement.getElementsByTagName("point");
			
			if (point.length){
				
				active_point = point[0].getAttribute("id");
				
				map.getInfoWindow().hide();
				
				map.removeOverlay(temp_marker);
				
				hideSurvey();
				
				hideAddForm();
				
				//resetAddForm();
				
				resetSurvey();
				
				setAddressWithId(point[0].getAttribute("id"));
				
				active_add = false;
				
				setMessage("Thank you for adding your home to the database.");
				
				showMessage();
				
				replotPoints();
								
			}
			
			deallocIndicator();
		}
    }
    
	allocIndicator();
	
	request.send(null);
	
}


function showHistoryForId(id) {
	
	var urlstr = "getAddress.php?id=" + id;

	var request = GXmlHttp.create();

	request.open('GET', urlstr , true);	// request XML from PHP with AJAX call
	
    request.onreadystatechange = function () {

    	if (request.readyState == 4) {
			var xmlDoc = request.responseXML;

			addresses = xmlDoc.documentElement.getElementsByTagName("address");

			resetAddressView();
			
			if (addresses.length) {
				
				// SET UP UPDATE FORM
				setStreetName(addresses[0].getAttribute("street_name"));
				setStreetNumber(addresses[0].getAttribute("street_number"));
				setStreetType(addresses[0].getAttribute("street_type"));				
				
				// SET UP NEIGHBORHOOD DETAILS
				setNeighborhoodForPoint(addresses[0].getAttribute("id"));
				
				// SET UP COORDS
				setActiveCoords(addresses[0].getAttribute("lng"), addresses[0].getAttribute("lat"));
				
				//hideSurvey();
				
				setActiveDetails('address');

				// SET ADDRESS NAME
				setAddressName(addresses[0].getAttribute("name"));
				
				// SET USER
				//setAddressUsername(addresses[0].getAttribute("Username"))

				// SET STATUS
								
				// SHOW SURVEY
				setSurvey(id);
				
				// SET HISTORY
				setHistoryForAddress(addresses[0].getAttribute("street_number"), addresses[0].getAttribute("street_name"), addresses[0].getAttribute("street_type"), "New Orleans", "LA");
				
				// SHOW HISTORY
				//for(var i = 0; i < addresses.length; i++) {
				//	addAddressHistory(formatMySQLDate(addresses[i].getAttribute("updated_at")), addresses[i].getAttribute("Username"), addresses[i].getAttribute("id"));
				//}

				showNeighborhoodDiv();
				showAddressView();
					
			} else {
				
				// DISPLAY ADD FORM
				displayAddFormMsg('We do not have any information about this address yet.  Please use the form below to add this address to the database.')
				
				active_add = true;
				
				zoomToAddress(street_number, street_name, street_type, city, state);
								
				showSurvey();
			}
			
			deallocIndicator();
		}
    }
    allocIndicator();
    request.send(null);
	
}

function setHistoryForAddress(street_number, street_name, street_type, city, state) {
	
	var urlstr = "getAddress.php?street_number=" + street_number + "&street_name=" + street_name + "&street_type=" + street_type + "&city=" + city + "&state=" + state;

	var request = GXmlHttp.create();

	request.open('GET', urlstr , true);	// request XML from PHP with AJAX call
	
    request.onreadystatechange = function () {

    	if (request.readyState == 4) {
			var xmlDoc = request.responseXML;

			addresses = xmlDoc.documentElement.getElementsByTagName("address");

			if (addresses.length) {
								
				// SHOW HISTORY
				for(var i = 0; i < addresses.length; i++) {
					addAddressHistory(formatMySQLDate(addresses[i].getAttribute("updated_at")), addresses[i].getAttribute("Username"), addresses[i].getAttribute("id"));
				}
			} 
			
			deallocIndicator();
		}
    }
    allocIndicator();
    request.send(null);
	
}

function setSurvey(point_id) {
	
	var urlstr = "getSurvey.php?point_id=" + point_id;

	var request = GXmlHttp.create();

	request.open('GET', urlstr , true);	// request XML from PHP with AJAX call
	
    request.onreadystatechange = function () {

    	if (request.readyState == 4) {
			var xmlDoc = request.responseXML;

			surveys = xmlDoc.documentElement.getElementsByTagName("surveys");

			if (surveys.length) {
							
				// SHOW SURVEY
				addAddressSurvey(getQuestionText("survey_resident"),	getAnswerText("survey_resident", surveys[0].getAttribute("survey_resident")));
				addAddressSurvey(getQuestionText("survey_returning"), 	getAnswerText("survey_returning", surveys[0].getAttribute("survey_returning")));
				addAddressSurvey(getQuestionText("survey_damage"), 		getAnswerText("survey_damage", surveys[0].getAttribute("survey_damage")));
				addAddressSurvey(getQuestionText("survey_rebuilding"), 	getAnswerText("survey_rebuilding", surveys[0].getAttribute("survey_rebuilding")));
				addAddressSurvey(getQuestionText("survey_future"), 		getAnswerText("survey_future", surveys[0].getAttribute("survey_future")));
				addAddressSurvey(getQuestionText("survey_housing"), 	getAnswerText("survey_housing", surveys[0].getAttribute("survey_housing")));
			} 
						
			deallocIndicator();
		}
    }
    allocIndicator();
    request.send(null);
}

function setNeighborhoodForPoint(point_id) {
	
	var urlstr = "getNeighborhoodforPoint.php?point_id=" + point_id;

	var request = GXmlHttp.create();

	request.open('GET', urlstr , true);	// request XML from PHP with AJAX call
	
    request.onreadystatechange = function () {

    	if (request.readyState == 4) {
			var xmlDoc = request.responseXML;

			neighborhoods = xmlDoc.documentElement.getElementsByTagName("neighborhood");

			if (neighborhoods.length) {
				
				setActiveParentNeighborhood(neighborhoods[0].getAttribute("parent_id"), neighborhoods[0].getAttribute("parent_name"));
				setActiveNeighborhood(neighborhoods[0].getAttribute("id"), neighborhoods[0].getAttribute("name"));
				
				// SHOW SURVEY
				//addAddressSurvey(getQuestionText("survey_resident"),	getAnswerText("survey_resident", surveys[0].getAttribute("survey_resident")));
			} 
						
			deallocIndicator();
		}
    }
    allocIndicator();
    request.send(null);
	
}