// JavaScript Document
var directionsService;
var geocoder;
var ituldebug = false;

function UpdateDest(obj)
{
	if(obj.value == '') { 
		document.getElementById("street_2").value = '';
		document.getElementById("city_2").value = '';
		//document.getElementById("zip_2").value = '';
	}
	
	
	else if(obj.value == 'arco') { 
		document.getElementById("street_2").value = 'One Sports Parkway';
		document.getElementById("city_2").value = 'Sacramento';
		//document.getElementById("zip_2").value = '95834';
	}
	
	else if(obj.value == 'oldtown') { 
		document.getElementById("street_2").value = '1004 2nd Street';
		document.getElementById("city_2").value = 'Sacramento';
		//document.getElementById("zip_2").value = '95834';
	}
	
	else if(obj.value == 'statecap') { 
		document.getElementById("street_2").value = '10th St & Capitol Mall';
		document.getElementById("city_2").value = 'Sacramento';
		//document.getElementById("zip_2").value = '95834';
	}
	
	else if(obj.value == 'sacair') { 
		document.getElementById("street_2").value = '6900 Airport Blvd';
		document.getElementById("city_2").value = 'Sacramento';
		//document.getElementById("zip_2").value = '95837';
	}
	
	else if(obj.value == 'ardenmall') { 
		document.getElementById("street_2").value = '1689 Arden Way';
		document.getElementById("city_2").value = 'Sacramento';
		//document.getElementById("zip_2").value = '95815';
	}
	
	
	else if(obj.value == 'expo') { 
		document.getElementById("street_2").value = '1600 Exposition Blvd.';
		document.getElementById("city_2").value = 'Sacramento';
		//document.getElementById("zip_2").value = '95815';
	}
	
	else if(obj.value == 'galleria') { 
		document.getElementById("street_2").value = '1151 Galleria Blvd';
		document.getElementById("city_2").value = 'Roseville';
		//document.getElementById("zip_2").value = '95678';
	}
}



// FORM FUNCTIONS
//===========================================================

function check_form()
{
	var	frm = document.forms[0];
	var err = false;
	var errMsg = 'The following fields are incomplete:\n';
	
	if(frm.street_1.value == '' || frm.street_1.value == 'Address') { 
	err = true;
	errMsg = errMsg + 'Starting Address Street\n';
	}
	
	if(frm.city_1.value == ''  || frm.city_1.value == 'City') { 
	err = true;
	errMsg = errMsg + 'Starting Address City\n';
	}

/*
	if(frm.zip_1.value == ''  || frm.zip_1.value == 'Zip') { 
	err = true;
	errMsg = errMsg + 'Starting Address Zip\n';
	}
	*/
	// begin dest checking
	
	if(frm.street_2.value == ''  || frm.street_2.value == 'Address') { 
	err = true;
	errMsg = errMsg + 'Destination Address Street\n';
	}
	
	if(frm.city_2.value == ''  || frm.city_2.value == 'City') { 
	err = true;
	errMsg = errMsg + 'Destination Address City\n';
	}
/*
	if(frm.zip_2.value == ''  || frm.zip_2.value == 'Zip') { 
	err = true;
	errMsg = errMsg + 'Destination Address Zip\n';
	}
*/
	if(err == true) { alert(errMsg); } 
	else {
	// 	document.forms[0].submit();
	// CALL GOOGLE FUNCTIONS
	
		// format to / from address
		//var from_address = frm.street_1.value +' '+frm.city_1.value+',CA '+frm.zip_1.value;
		//var dest_address = frm.street_2.value +' '+frm.city_2.value+',CA '+frm.zip_2.value;
		var from_address = frm.street_1.value +','+frm.city_1.value+',CA';
		var dest_address = frm.street_2.value +','+frm.city_2.value+',CA';
		validate_address(from_address,dest_address);
		//alert(from_address+':'+dest_address);
		// call google setDirections()  
		setDirections(from_address, dest_address);
	}
}


// Google functions
//===========================================================
function gload() {
	directionsService = new google.maps.DirectionsService();
	geocoder = new google.maps.Geocoder();
}

function validate_address(fromAddress, toAddress) {
	geocoder.geocode({'address': fromAddress}, handleGeoError);
	geocoder.geocode({'address': toAddress}, handleGeoError);
}

function handleGeoError(results, status) {
	if (status == google.maps.GeocoderStatus.OK) {
		if (ituldebug) { alert(results[0].formatted_address); }
	} else if (status == google.maps.INVALID_REQUEST) {
		alert('Invalid geocoder request.\nError code: INVALID_REQUEST');
	} else if (status == google.maps.ERROR) {
		alert('There was a problem contacting the Google servers.\nError code: ERROR');
	} else if (status == google.maps.OVER_QUERY_LIMIT) {
		alert('Webpage has gone over the requests limit in too short a period of time.\nError code: OVER_QUERY_LIMIT');
	} else if (status == google.maps.REQUEST_DENIED) {
		alert('Webpage is not allowed to use the geocoder.\nError code: REQUEST_DENIED');
	} else if (status == google.maps.ZERO_RESULTS) {
		alert("No result was found for this GeocoderRequest.\nError code: ZERO_RESULTS");
	}
}

function setDirections(fromAddress, toAddress) {
	var request = {
		origin: fromAddress, 
		destination: toAddress,
		travelMode: google.maps.DirectionsTravelMode.DRIVING,
		unitSystem: google.maps.DirectionsUnitSystem.IMPERIAL,
		provideRouteAlternatives: true
	};

	directionsService.route(request, function(response, status) {
	  //alert(status+':'+google.maps.DirectionsStatus.OK);
		if (status == google.maps.DirectionsStatus.OK) {
			var lowest_distance = parseInt(response.routes[0].legs[0].distance.value);
			var miles =  response.routes[0].legs[0].distance.text;
			var warnings =  response.routes[0].warnings;
			for (var i=0; i<response.routes.length; i++) {
				//alert(i);
				if (parseInt(response.routes[i].legs[0].distance.value)<lowest_distance) {
					lowest_distance = response.routes[i].legs[0].distance.value;
					miles = response.routes[i].legs[0].distance.text;
					warnings = response.routes[i].warnings;
				}
			}
			if (ituldebug) { alert('warnings: '+warnings.length); }
			for (var i=0; i<warnings.length; i++) {
				alert(warnings[i]);
			}
			// alert(response.routes[i].legs[0].distance.text+' '+response.routes[0].legs[0].distance.value);
			var	frm = document.forms[0];
			HighDrop = false;
			if (frm.city_1.value.toUpperCase() == "SUNNYVALE" || 
				frm.city_2.value.toUpperCase() == "SUNNYVALE") { 
				HighDrop = true;
			}
			if (ituldebug) { alert('using: '+miles); }
			ajax_calcPrice(miles, HighDrop);
		} else if (status == google.maps.DirectionsStatus.NOT_FOUND) {
			alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: NOT_FOUND");
		} else if (status == google.maps.DirectionsStatus.OVER_QUERY_LIMIT) {
			alert("Too many requests.\nError code: OVER_QUERY_LIMIT");
		} else if (status == google.maps.DirectionsStatus.REQUEST_DENIED) {
			alert("Direction service has been denied.\nError code: REQUEST_DENIED");
		} else if (status == google.maps.DirectionsStatus.UNKNOWN_ERROR) {
			alert("Service cannot be processed at this time due to a server error, please try again.\nError code: UNKNOWN_ERROR");
		} else if (status == google.maps.DirectionsStatus.ZERO_RESULTS) {
			alert("No route could be found between the origin and destination.\nError code: ZERO_RESULTS");
		} else if (status == google.maps.DirectionsStatus.INVALID_REQUEST) {
			alert("DirectionsRequest provided was invalid.\nError code: INVALID_REQUEST");
		} else if (status == google.maps.DirectionsStatus.MAX_WAYPOINTS_EXCEEDED) {
			alert("Too many DirectionsWaypoints were provided in the DirectionsRequest.\nError code: MAX_WAYPOINTS_EXCEEDED");
		}
	});
}

function ajax_calcPrice(gDistance, HighDrop)
{
	// 
	$.get("http://www.yellowcabsacramento.com/calculator_ajax.php?miles="+gDistance.replace(/(&nbsp;| )/,'|')+'|'+HighDrop, function(data){
		$('#total_cost').html(data);
		//alert("Data Loaded: " + data);
	});
}
	

function updatelink() 
{
	var src='';
	var dest='';
	
	if ($('#street_1').val()=='' && $('#street_1').val()=='') {
		$('#book_your_taxi').attr('href','http://www.ridecharge.com/s/ca-sacramento/taxi/branded/yellow_cab_sacramento');
	} else {
		if ($('#street_1').val()!='' && $('#street_1').val()!='Street Address') {
			src=$('#street_1').val()+'+'+$('#city_1 :selected').val()+'+'+'CA';
		}
		if ($('#street_2').val()!='' && $('#street_2').val()!='Street Address') {
			dest=$('#street_2').val()+'+'+$('#city_2 :selected').val()+'+'+'CA';
		}

		$('#book_your_taxi').attr('href','http://www.ridecharge.com/s/ca-sacramento/taxi/branded/yellow_cab_sacramento?pickup_location='+src+'&dropoff_location='+dest);
	}
}
