// JavaScript Document

  
  function initializeMapAdvertise(address) {
    geocoder = new google.maps.Geocoder();
    var mylatlng = new google.maps.LatLng(-27.5295500, 152.9347840);
    var myOptions = {
		scaleControl: true,
		mapTypeControl: true,
		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
		mapTypeId: google.maps.MapTypeId.ROADMAP
    }
	
		map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
		bounds = new google.maps.LatLngBounds();
		codeAddress(address);
		//this is to fit the map every time it's reloaded.
		map.fitBounds(bounds);
	}



  function codeAddress(address) {
  	//deleteOverlays();
	//resetBounds();
//    var address = document.getElementById("address").value;
    if (geocoder) {
      geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
			for(var i = 0 ; i < results.length; i++)
			{
			  map.setCenter(results[i].geometry.location);
			  var image = 'flag.png';
			   
			  marker = new google.maps.Marker({
				  map: map, 
				  position: results[i].geometry.location,
				  clickable: true,
				  draggable: true
			  });
			  //This is the info we need for the InfoWindow
			  marker.set('location', '<span style="font-size:10px;margin-top:5px;margin-bottom:10px;">'+
						 				results[i].formatted_address+'</span>');
			  //This is the info we need for the form
			  var addr_street = '';
			  for (var z = 0; z < results[i].address_components.length; z++) {
				if(results[i].address_components[z].types[0] == 'subpremise'){
					addr_street = results[i].address_components[z].long_name;
					addr_street += '/';}
				if(results[i].address_components[z].types[0] == 'street_number'){
					addr_street += results[i].address_components[z].long_name;}
				if(results[i].address_components[z].types[0] == 'street_address' ){
					addr_street += ' '+results[i].address_components[z].long_name;}
				if(results[i].address_components[z].types[0] == 'route' ){
					addr_street += ' '+results[i].address_components[z].long_name;
					marker.set('addr_street',addr_street);}
				if(results[i].address_components[z].types[0] == 'locality'){
					marker.set('addr_suburb',results[i].address_components[z].long_name);}
				if(results[i].address_components[z].types[0] == 'administrative_area_level_1'){
					marker.set('addr_state',results[i].address_components[z].long_name);}
				if(results[i].address_components[z].types[0] == 'postal_code'){
					marker.set('addr_pcode',results[i].address_components[z].long_name);}
			  }
				google.maps.event.addListener(marker, 'click', function(event) {
					map.setCenter(this.getPosition());
					
					var positionStr = new String(this.getPosition());
					var cnt = positionStr.length;
					var ll = positionStr.substr(1,cnt-2).split(',');
					var st = document.getElementById("addr_complete").value.split(',');
					var suburbChk = this.addr_suburb == null ? st[1] : this.addr_suburb;
					
					infowindow.setContent(this.location+"<br/>"+
						"<button type=\"button\" style=\"font-size:10px;\" onclick=\"save_gps("+ll[0]+","+ll[1]+",'"+this.addr_street+"','"+suburbChk+"','"+this.addr_state+"','"+this.addr_pcode+"')\">This is it</button> "+
								"<button type=\"button\" style=\"font-size:10px;\" onclick=\"zoom_onclick("+ll[0]+","+ll[1]+")\">Zoom In</button>" );
					infowindow.open(map, this);
				});
				
				google.maps.event.addListener(marker, 'dragend', function(event) {
					map.setCenter(this.getPosition());
					codeLatLng(this.getPosition(), this);
				});

		  	  //This is an array for the markers.
			  markersArray.push(marker);
			  //This is to zoom the map to fit the new marker
		  	  bounds.extend(results[i].geometry.location);
			  map.fitBounds(bounds);
			 }
        } else {
          alert("Geocode was not successful for the following reason: " + status);
        }
      });
    }
  }
 
  function codeLatLng(point, sender) {
    //var input = document.getElementById("latlng").value;
    if (geocoder) {
      geocoder.geocode({'latLng': point}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          if (results[0]) { 
			  var addr_street = '';
			  for (var z = 0; z < results[0].address_components.length; z++) {
				if(results[0].address_components[z].types[0] == 'subpremise'){
					addr_street = results[i].address_components[z].long_name;
					addr_street += '/';}
				if(results[0].address_components[z].types[0] == 'street_number'){
					addr_street = results[0].address_components[z].long_name+' ';}
				if(results[0].address_components[z].types[0] == 'street_address' ){
					addr_street += results[0].address_components[z].long_name;}
				if(results[0].address_components[z].types[0] == 'route' ){
					addr_street += ' '+results[0].address_components[z].long_name;}
				if(results[0].address_components[z].types[0] == 'locality'){
					var addr_suburb = results[0].address_components[z].long_name;}
				if(results[0].address_components[z].types[0] == 'administrative_area_level_1'){
					var addr_state = results[0].address_components[z].long_name;}
				if(results[0].address_components[z].types[0] == 'postal_code'){
					var addr_pcode = results[0].address_components[z].long_name;}
					
            infowindow.setContent('<span style="font-size:10px;margin-top:5px;margin-bottom:10px;">'+
								  	results[0].formatted_address+'</span><br/><br/>'+
						"<button type=\"button\" style=\"font-size:10px;\" onclick=\"save_gps("+point.lat()+","+point.lng()+",'"+addr_street+"','"+addr_suburb+"','"+addr_state+"','"+addr_pcode+"')\">Use this address</button> " +
						"<button type=\"button\" style=\"font-size:10px;\" onclick=\"save_gps("+point.lat()+","+point.lng()+",'"+sender.addr_street+"','"+sender.addr_suburb+"','"+sender.addr_state+"','"+sender.addr_pcode+"')\">Use this location, but keep the address I typed in</button> " +
						"<button type=\"button\" style=\"font-size:10px;\" onclick=\"zoom_onclick("+point.lat()+","+point.lng()+");\">Zoom In</button>");
            infowindow.open(map, sender);
			}
		  }
        } else {
          alert("Geocoder failed due to: " + status);
        }
      });
    }
  }
  //--------------------------------------
  
   // Resets the bounds with the new points
	function resetBounds() {
	  if (markersArray) {
	    bounds = new google.maps.LatLngBounds();
		for (i in markersArray) {
		  bounds.extend(markersArray[i].getPosition());
		}
	  }
	}
  
  // Deletes all markers in the array by removing references to them
	function deleteOverlays() {
	  if (markersArray) {
		for (i in markersArray) {
		  markersArray[i].setMap(null);
		}
		markersArray.length = 0;
	  }
	}
	
	function save_gps (lat,long, street, suburb, state, postcode) {
//		alert(street+suburb+state+postcode);
		eid("addr_lat").value = lat;
		eid("addr_lng").value = long;

		eid("mapTr").style.display = 'none';
		eid("mapExplainId").innerHTML = '';
		
		//street = street == "undefined" ? eid('addr_street').value : street ;
		
		eid('addr_street').value = street;
		eid('addr_suburb').value = suburb;
		eid('addr_state').value = state;
		eid('addr_pcode').value = postcode;
		eid('validedAddress').value = true;
		eid('addr_complete').value = street+', '+suburb+', '+state+', '+postcode;
	}
	
	function zoom_onclick(lat, long) {
		var latlong = new google.maps.LatLng(lat, long);
		map.setCenter(latlong);
		if (map.getZoom() < 19) {
			map.setZoom(map.getZoom()+5);
		}
	}
	
	function cancel_onclick () {
		infowindow.close();
	}

function jShowMap(field)
{
	var address = eid(field).value;
	eid("mapTr").style.display = '';
		eid("mapExplainId").innerHTML = "We need you to confirm your address on the map. Click on the marker and then click \"This is it\" to confirm. You can drag the marker if you like.";
		initializeMapAdvertise(address+', Australia');
}

	/*
	for (var z = 0; z < results[i].address_components.length; z++) {
				if(results[i].address_components[z].types[0] == 'subpremise')
				{
					document.getElementById("addr_street").value += results[i].address_components[z].long_name+'/';	
				}
				if(results[i].address_components[z].types[0] == 'street_address' )
				{
					document.getElementById("addr_street").value = results[i].address_components[z].long_name;	
				}
				if(results[i].address_components[z].types[0] == 'route' )
				{
					document.getElementById("addr_street").value += ' '+results[i].address_components[z].long_name;	
				}
				if(results[i].address_components[z].types[0] == 'locality')
				{
					document.getElementById("addr_suburb").value = results[i].address_components[z].long_name;	
				}
				if(results[i].address_components[z].types[0] == 'administrative_area_level_1')
				{
					document.getElementById("addr_state").value = results[i].address_components[z].long_name;	
				}
				if(results[i].address_components[z].types[0] == 'postal_code')
				{
					document.getElementById("addr_postcode").value = results[i].address_components[z].long_name;	
				}
			  }
			  
		for (var z = 0; z < results[i].address_components.length; z++) {
				if(results[i].address_components[z].types[0] == 'subpremise')
				{
					var addr_street = results[i].address_components[z].long_name+'/';
				}
				if(results[i].address_components[z].types[0] == 'street_address' )
				{
					addr_street += results[i].address_components[z].long_name;
				}
				if(results[i].address_components[z].types[0] == 'route' )
				{
 				    marker.set('addr_street',addr_street);
					addr_street += ' '+results[i].address_components[z].long_name;
				}
				if(results[i].address_components[z].types[0] == 'locality')
				{
					marker.set('addr_suburb',results[i].address_components[z].long_name);
				}
				if(results[i].address_components[z].types[0] == 'administrative_area_level_1')
				{
					marker.set('addr_state',results[i].address_components[z].long_name);
				}
				if(results[i].address_components[z].types[0] == 'postal_code')
				{
					marker.set('addr_postcode',results[i].address_components[z].long_name);
				}
			  }*/
