// http://www.1stwebdesigner.com/tutorials/distance-finder-google-maps-api/
var location1;
var location2;	
var address1;
var address2;
var latlng;
var geocoder;
var map;	
var distance;

function vratCenuNaZakladeVzdalenosti(vzdal, sPopisem) {
  vzdal = parseFloat((vzdal).replace(',','.'));
  if (!(vzdal > -1) && (vzdal < 1400)) { zobrazChybuUmisteni(); return false; }
  if (vzdal < 17) cena = sPopisem?'Doprava vozidla nacházejícího se ve Vámi zadané lokalitě k ekologické likvidaci je bezplatná.':'0 Kč'
  else if (vzdal < 25) cena = sPopisem?'Doprava vozidla nacházejícího se ve Vámi zadané lokalitě k ekologické likvidaci je zpoplatněna částkou 300 Kč.':'300 Kč'
  else if (vzdal < 35) cena = sPopisem?'Doprava vozidla nacházejícího se ve Vámi zadané lokalitě k ekologické likvidaci je zpoplatněna částkou 500 Kč.':'500 Kč'
  else if (vzdal < 50) cena = sPopisem?'Doprava vozidla nacházejícího se ve Vámi zadané lokalitě k ekologické likvidaci je zpoplatněna částkou 800 Kč.':'800 Kč'
  else cena = sPopisem?'Cenu za dopravu vozidla z Vámi zadané lokality k ekologické likvidaci Vám rádi sdělíme na dotaz.':'na dotaz';
  return cena;
}
function vypoctiCenuPrvniFaze(idDivu) { //id divu .skrytyBlok
  adresa = jq('#onlineObjednavkaForm input#adresa-mesto, #'+idDivu+' .vyhledavanaAdresa').val();
  if (adresa.length>3) {
    initialize(idDivu, false); //tímto bude zavolána i vypoctiCenuDruhaFaze()
  }
  else zobrazChybuUmisteni(idDivu);      
  jq('#'+idDivu+' .zjisteniCenyOdtahu_mapa').show();
}
function vypoctiCenuDruhaFaze(idDivu) { // už máme k dispozici globální proměnnou vzdalenost
  jq('#'+idDivu+' .vypoctenaCenaInfo').html(vratCenuNaZakladeVzdalenosti(vzdalenost, true));
  jq('div.bublina.vypoctenaCenaInfo').show();
  if (idDivu=='blokVypoctuCenyOdtahu2')
    jq('input#vozidlo-vypoctenaCenaOdtahu').val(vratCenuNaZakladeVzdalenosti(vzdalenost, false));  
}
function zobrazChybuUmisteni(idDivu) {
  textChybyUmisteni = "Zadané umístění nebylo nalezeno. Zkontrolujte prosím správnost zadaného údaje, případně zkuste zadat větší město v blízkosti.";
  if (idDivu=='blokVypoctuCenyOdtahu2') 
    textChybyUmisteni = textChybyUmisteni + '\n\nPokud si přejete pouze předběžně zjistit cenu odtahu, není nutné vyplňovat celý objednávkový formulář, stačí pouze pole Město.'; 
  alert(textChybyUmisteni);
  jq('#'+idDivu+' .zjisteniCenyOdtahu_mapa').hide();
}

function vypoctiCenuNezobrazujInfo(idDivu) { //id divu .skrytyBlok
  adresa = jq('#onlineObjednavkaForm input#adresa-mesto, #'+idDivu+' .vyhledavanaAdresa').val();
  if (adresa.length>3) {
    initialize(idDivu, true); //tímto nebude zavolána vypoctiCenuDruhaFaze()
  }
  else jq('input#vozidlo-vypoctenaCenaOdtahu').val('?');   
}

// NEPŮVODNÍ ALE UPRAVENÉ FUNKCE
// finds the coordinates for the two locations and calls the showMap() function
function initialize(idDivu, bezInfa)
{
	geocoder = new google.maps.Geocoder(); // creating a new geocode object
	
	// getting the two address values
	address1 = adresa+', Czech Republic';
	//address2 = document.getElementById("address2").value;
	address2 = 'Praha, Žitná, Czech Republic';
	// finding out the coordinates
	if (geocoder) 
	{
		geocoder.geocode( { 'address': address1}, function(results, status) 
		{
		  //alert(status);
			if (status == google.maps.GeocoderStatus.OK) 
			{
				//location of first address (latitude + longitude)
				location1 = results[0].geometry.location;
			} else 
			{
				//alert("Geocode was not successful for the following reason: " + status);
        if (!bezInfa) zobrazChybuUmisteni();
				return false;
			}
		});
		geocoder.geocode( { 'address': address1}, function(results, status) 
		{
		  //alert(status);
			if (status == google.maps.GeocoderStatus.OK) 
			{
				//location of first address (latitude + longitude)
				location1 = results[0].geometry.location;
			} else 
			{
				//alert("Geocode was not successful for the following reason: " + status);
				if (!bezInfa) zobrazChybuUmisteni();
				return false;
			}
		});
		geocoder.geocode( { 'address': address2}, function(results, status) 
		{
			if (status == google.maps.GeocoderStatus.OK) 
			{
				//location of second address (latitude + longitude)
				location2 = results[0].geometry.location;
				// calling the showMap() function to create and show the map 
				var t=setTimeout('showMap("'+idDivu+'", '+bezInfa+')',300); //časování, protože z nevysvětlitelnýho důvodu se bez někdy mapa někdy zaktualizuje až na druhý click
			} else 
			{
				alert("Geocode was not successful for the following reason: " + status);
			}
		});
	}
}
	
// creates and shows the map
function showMap(idDivu, bezInfa)
{
	// center of the map (compute the mean value between the two locations)
	latlng = new google.maps.LatLng(location1.lat(),location1.lng());
	
	// set map options
		// set zoom level
		// set center
		// map type
	var mapOptions = 
	{
		zoom: 11,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		mapTypeControl: false,
		streetViewControl: false
	};
	
	// create a new map object
		// set the div id where it will be shown
		// set the map options
	map = new google.maps.Map(jq('#'+idDivu+' .zjisteniCenyOdtahu_mapa')[0], mapOptions);		
	var marker1 = new google.maps.Marker({
		map: map, 
		position: location1,
		title: "Vaše umístění"
	});
	
	// show route between the points
	directionsService = new google.maps.DirectionsService();
	directionsDisplay = new google.maps.DirectionsRenderer(
	{
		suppressMarkers: true,
		suppressInfoWindows: true
	});
	directionsDisplay.setMap(map);
	var request = {
		origin:location1, 
		destination:location2,
		travelMode: google.maps.DirectionsTravelMode.DRIVING
	};
	directionsService.route(request, function(response, status) 
	{
		if (status == google.maps.DirectionsStatus.OK) 
		{
			//directionsDisplay.setDirections(response);
			vzdalenost = response.routes[0].legs[0].distance.text;
			vzdalenostSPopisem = "The distance between the two points on the chosen route is: "+vzdalenost;
			//distance += "<br/>The aproximative driving time is: "+response.routes[0].legs[0].duration.text;
		}
		//alert(156);
	  if (bezInfa) {
      jq('input#vozidlo-vypoctenaCenaOdtahu').val(vratCenuNaZakladeVzdalenosti(vzdalenost, false));
      //alert(vratCenuNaZakladeVzdalenosti(vzdalenost, false));
    }  
    else 
      vypoctiCenuDruhaFaze(idDivu);	
	});
}
