/* Code based on Google Map APIv3 Tutorials */


var gmapdata= new Array();
var gmapmarker = new Array();

function if_gmap_init(id)
{
	map=document.getElementById(id+"_elementform_id_temp");
	var def_zoomval = parseInt(map.getAttribute("zoom"));
	var def_longval = map.getAttribute("center_x");
	var def_latval  = map.getAttribute("center_y");

    var curpoint = new google.maps.LatLng(def_latval,def_longval);

    gmapdata[id] = new google.maps.Map(document.getElementById(id+"_elementform_id_temp"), {
                center: curpoint,
                zoom: def_zoomval,
                mapTypeId: 'roadmap'
                });
				
	google.maps.event.addListener(gmapdata[id], 'zoom_changed', function() {
			document.getElementById(id+"_elementform_id_temp").setAttribute("zoom", gmapdata[id].getZoom());    
		});
        
    gmapmarker[id] = new Array();
   
        return false;
} // end of if_gmap_init

function update_position(id, i)
{

        var longval = document.getElementById("longval"+i).value;
        var latval = document.getElementById("latval"+i).value;
        if (longval.length > 0) {
                if (isNaN(parseFloat(longval)) == true) {
                        longval = 2.294254;
                } // end of if
        } else {
                longval = 2.294254;
        } // end of if

        if (latval.length > 0) {
                if (isNaN(parseFloat(latval)) == true) {
                        latval = 48.858334;
                } // end of if
        } else {
                latval = 48.858334;
        } // end of if

        var curpoint = new google.maps.LatLng(latval,longval);

        gmapmarker[id][i].setPosition(curpoint);
        gmapdata[id].setCenter(curpoint);
        
        cur_zoom=gmapdata[id].getZoom();
        
        gmapdata[id].setZoom(cur_zoom);
	
		geocoder = new google.maps.Geocoder();

		
        geocoder.geocode({'latLng': gmapmarker[id][i].getPosition()}, function(results, status) 
            {
                if (status == google.maps.GeocoderStatus.OK) 
                {
                    if (results[0]) 
                    {
                        if(document.getElementById("addrval"+i)) 
							document.getElementById("addrval"+i).value = results[0].formatted_address;
                    }
                }
            });

        return false;
}
function	reomve_marker(id,i)
{
gmapmarker[id][i].setMap(null);
}


function add_marker_on_map(id, i, w_long, w_lat, w_info, dragb)
{
 	map=document.getElementById(id+"_elementform_id_temp");
	if(w_long==null)
	{
		var marker_point = gmapdata[id].getCenter();
		w_lat=gmapdata[id].getCenter().lat();
		w_long=gmapdata[id].getCenter().lng();
	}
	else
		var marker_point = new google.maps.LatLng(w_lat, w_long);
	
	
    geocoder = new google.maps.Geocoder();
       
    gmapmarker[id][i] = new google.maps.Marker({
                                        map: gmapdata[id],
                                        position: marker_point,
                                        draggable: dragb
                                });
								
	gmapmarker[id][i].setDraggable(dragb);
	
    infoW = new google.maps.InfoWindow;
        
    google.maps.event.addListener(gmapdata[id], 'mouseover', function(event) 
    {       
        if(!document.getElementById("longval"+i))
		{
			gmapmarker[id][i].setDraggable(false);
		}
    });
        
		
     /*   google.maps.event.addListener(gmapdata, 'click', function(event) {
                if(document.getElementById("longval"))
                {
                document.getElementById("longval").value = event.latLng.lng().toFixed(6);
                document.getElementById("latval").value = event.latLng.lat().toFixed(6);
                gmapmarker.setPosition(event.latLng);
                if_gmap_updateMap();
                
                 geocoder.geocode({'latLng': gmapmarker.getPosition()}, function(results, status) 
                {
                        if (status == google.maps.GeocoderStatus.OK) 
                        {
                                if (results[0]) 
                                {
                        
                                          if(document.getElementById("addrval")) document.getElementById("addrval").value = results[0].formatted_address;
                                }
                        }
                    });
        }

        });*/

    google.maps.event.addListener(gmapmarker[id][i], 'drag', function() 
	{
        if(document.getElementById("longval"+i))
        {
			geocoder.geocode({'latLng': gmapmarker[id][i].getPosition()}, function(results, status) 
            {
                if (status == google.maps.GeocoderStatus.OK) 
                {
                    if (results[0]) 
                    {
                        if(document.getElementById("addrval"+i)) 
							document.getElementById("addrval"+i).value = results[0].formatted_address;
                    }
                }
            });

			map.setAttribute("long"+i, gmapmarker[id][i].getPosition().lng().toFixed(6));
			map.setAttribute("lat"+i, gmapmarker[id][i].getPosition().lat().toFixed(6));
            document.getElementById("latval"+i).value = gmapmarker[id][i].getPosition().lat().toFixed(6);
            document.getElementById("longval"+i).value = gmapmarker[id][i].getPosition().lng().toFixed(6);
        }
    });
	
    google.maps.event.addListener(gmapmarker[id][i], 'click', function() 
	{
        infoW.setContent('<div style="overflow: hidden;">'+document.getElementById(id+"_elementform_id_temp").getAttribute('info'+i)+"</div>");
		var infoWOpt = {
				maxWidth: "300"
				};
		infoW.setOptions(infoWOpt);
        infoW.open(this.getMap(), this);
    });
        
	if(document.getElementById("longval"+i))
	{
		document.getElementById("longval"+i).value = w_long;
		document.getElementById("latval"+i).value = w_lat;
			
		geocoder.geocode({'latLng': gmapmarker[id][i].getPosition()}, function(results, status) 
		{
			if (status == google.maps.GeocoderStatus.OK) 
			{
				if (results[0]) 
				{
					if(document.getElementById("addrval"+i)) document.getElementById("addrval"+i).value = results[0].formatted_address;
				}
			}
		});
		map.setAttribute("long"+i, w_long);
		map.setAttribute("lat"+i, w_lat);
	}
    return false;

	
} // end of if_gmap_init


function changeAddress(id, i) {
    var addrval = document.getElementById("addrval"+i).value;
    geocoder.geocode( { 'address': addrval}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        gmapdata[id].setCenter(results[0].geometry.location);
        gmapmarker[id][i].setPosition(results[0].geometry.location);
        document.getElementById("latval"+i).value = gmapmarker[id][i].getPosition().lat().toFixed(6);
        document.getElementById("longval"+i).value = gmapmarker[id][i].getPosition().lng().toFixed(6);
		map.setAttribute("long"+i, gmapmarker[id][i].getPosition().lng().toFixed(6));
		map.setAttribute("lat"+i, gmapmarker[id][i].getPosition().lat().toFixed(6));
}
    });
}

function change_info(value,id,i)
{
map=document.getElementById(id+"_elementform_id_temp");
map.setAttribute("info"+i, value);
}

function if_gmap_updateMap(id)
{
	map=document.getElementById(id+"_elementform_id_temp");
	w_long=gmapdata[id].getCenter().lng();;
	w_lat=gmapdata[id].getCenter().lat();;
	map.setAttribute("center_x", w_long);
	map.setAttribute("center_y", w_lat);
}

