var SAMPLE_ADVANCED_POST = HOST_URL + '/geocoding/v1/address?key=YOUR_KEY_HERE&callback=renderOptions';
var advancedOptions = '';
var outFormat = '';

function showOptionsURL(type) {
    advancedOptions = SAMPLE_ADVANCED_POST;   
	var location = document.getElementById('location').value; 
	var thumbMaps = document.getElementById('thumbMaps').value;
	var maxResults = document.getElementById('maxResults').value;
	var delimiter = document.getElementById('delimiter').value;
	
    var inFormat = document.getElementById('inFormat').value;
    outFormat = 'json'; //TODO: document.getElementById('outFormat').value;

    if (inFormat == 'kvp') {
		advancedOptions += '&inFormat=' + inFormat;
        advancedOptions += '&outFormat=' + outFormat;
		advancedOptions += '&location=' + location;
		if (thumbMaps == "false") {
			advancedOptions += '&thumbMaps=' + thumbMaps;
		}
		if (maxResults != "") {
			advancedOptions += '&maxResults=' + maxResults;	
		}
		
		switch (document.getElementById('boundingBox').selectedIndex) {
			case 0:
				if (type == '') {
					document.getElementById('location').value = "Lancaster,PA";
				}
				
				break;
			case 1:
				if (type == '') {
					document.getElementById('location').value = "Red Lion";
				}
				
				break;
			case 2:
				advancedOptions += '&boundingBox=39.715056,-75.811158,39.5098,-75.491781';
				if (type == '') {
					document.getElementById('location').value = "Red Lion";
				}
				
				break;
		}
		if (document.getElementById('outFormat').value == 'file' && delimiter != '') {
		    advancedOptions += '&delimiter=' + delimiter;
		}


    } else if (inFormat == 'json') {
        advancedOptions += '&outFormat=' + outFormat;
        advancedOptions += '&inFormat=json';
        advancedOptions += "&json=";
        var jsonText = '{';
        jsonText += 'location:{street:"';
        if (location.length > 0) {
            jsonText += location;
        }
        jsonText += '"}';

        jsonText += ',options:{';
        jsonText += 'thumbMaps:' + thumbMaps;
		if (maxResults != "") {
			jsonText += ',maxResults:' + maxResults; 
		} 
		
		switch (document.getElementById('boundingBox').selectedIndex) {
			case 0:
				if (type == '') {
					document.getElementById('location').value = "Lancaster,PA";
				}
				
				break;
			case 1:
				if (type == '') {
					document.getElementById('location').value = "Red Lion";
				}
				
				break;
			case 2:
				jsonText += ',boundingBox:{ul:{lat:39.715056,lng:-75.811158},lr:{lat:39.5098,lng:-75.491781}}';
				if (type == '') {
					document.getElementById('location').value = "Red Lion";
				}
				
				break;
		}	
		if (document.getElementById('outFormat').value == "file" && delimiter != "") {
		    jsonText += ',delimiter:"' + delimiter + '"';
		}

        jsonText += '}}';
        advancedOptions += jsonText;
    } else if (inFormat == 'xml') {
        advancedOptions += '&outFormat=' + outFormat;
        advancedOptions += '&inFormat=xml';
        advancedOptions += "&xml=";
        var xmlText = '<address>';
        xmlText += '<location><street>';
        if (location.length > 0) {
            xmlText += location;
        }
        xmlText += '</street></location>';

        xmlText += '<options>';
        xmlText += '<thumbMaps>' + thumbMaps + '</thumbMaps>';
		if (maxResults != "") {
			xmlText += '<maxResults>' + maxResults + '</maxResults>'; 
		} 
		
		switch (document.getElementById('boundingBox').selectedIndex) {
			case 0:
				if (type == '') {
					document.getElementById('location').value = "Lancaster,PA";
				}
				
				break;
			case 1:
				if (type == '') {
					document.getElementById('location').value = "Red Lion";
				}
				
				break;
			case 2:
				xmlText += '<boundingBox><ul><latLng><lat>39.715056</lat><lng>-75.811158</lng></latLng></ul><lr><latLng><lat>39.5098</lat><lng>-75.491781</lng></latLng></lr></boundingBox>';
				if (type == '') {
					document.getElementById('location').value = "Red Lion";
				}
				
				break;
		}
		if (document.getElementById('outFormat').value == 'file' && delimiter != '') {
		    xmlText += '<delimiter>' + delimiter + '</delimiter>';
		}
		
		xmlText += '</options></address>';
        advancedOptions += xmlText;
    }
    
    var safe = advancedOptions;
    document.getElementById('optionsSampleUrl').innerHTML = safe.replace(/</g, '&lt;').replace(/>/g, '&gt;');
};

function renderOptions(response) {
    var html = '';
    var i = 0;
    var j = 0;
	
	if (outFormat == "json") {
		if (response.info.statuscode && (response.info.statuscode != 200)) {
			var text = "Whoops!  There was an error during the request:\n";
			if (response.info.messages) {
				for (i = 0; i < response.info.messages.length; i++) {
					text += response.info.messages[i] + "\n";
				}
			}
			
			document.getElementById('optionsNarrative').innerHTML = text;
			return;
		}
		
		var locations = response.results[0].locations;
		if (locations.length > 1) { // Location ambiguities!
			html = "<p>Ambiguous addresses found in request:</p><table>";
			for (i = 0; i < locations.length; i++) {
				var location = locations[i];
				
				html += '<tr><td>';
				html += ' ' + (location.adminArea5 || ' ');
				html += ' ' + (location.adminArea4 || ' ');
				html += ' ' + (location.adminArea3 || ' ');
				html += ' ' + (location.adminArea2 || ' ');
				html += ' ' + (location.adminArea1 || ' ');
				html += '</td>';
				if (location.mapUrl) {
					html += '<td>';
					html += '<img src="' + location.mapUrl + '"/>';
					html += '</td>';
				}
				html += '</tr>';
			}
			html += '</table>';
			document.getElementById('optionsNarrative').innerHTML = html;
			return;
		}
		
		if (locations.length == 1) {
			html = "<p>Location:</p>";
			var location = locations[0];

			html += 'Country: ' + location.adminArea1;
			html += '<br/>';
			html += 'State: ' + location.adminArea3;
			html += '<br/>';
			html += 'County: ' + location.adminArea4;
			html += '<br/>';
			html += 'City: ' + location.adminArea5;
			html += '<br/>';
			html += 'Response Code:' + location.geocodeQualityCode;
			html += '<br/>';
			html += 'Lat: ' + location.latLng.lat + "   Lng: " + location.latLng.lng;
			html += '<br/>';
			html += 'Static Map: ' + '<img src="' + location.mapUrl + '"/>';
			
			document.getElementById('optionsNarrative').innerHTML = html;
			return;
		}
	}
	else if (outFormat == "geojson") {
		
	}
	else {

	}
    
    document.getElementById('optionsNarrative').innerHTML = html;
}

function doOptions() {
    document.getElementById('optionsNarrative').innerHTML = 'Pending...';
    var script = document.createElement('script');
    script.type = 'text/javascript';
    showOptionsURL('buttonClick');
    var newURL = advancedOptions.replace('YOUR_KEY_HERE', 'Dmjtd%7Clu612007nq%2C20%3Do5-50zah');
    script.src = newURL;
    document.body.appendChild(script);
};