﻿/// <reference path="ASPxScriptIntelliSense.js" />

var map;
var geocoder;

function initialize(lat, lon) {
    if (google) {
        geocoder = new google.maps.Geocoder();

        var latlng = new google.maps.LatLng(lat, lon);
        var myOptions = {
            zoom: 12,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }

        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

        if (typeof (markers) != "undefined") {
            if (markers.length > 0) {
                var SWLat = 0;
                var SWLon = 0;
                var NELat = 0;
                var NELon = 0;

                for (var i = 0; i < markers.length; i++) {
                    //alert(i + ' = ' + markers[i]);

                    var point = markers[i].split('|');
                    var markerLocation = new google.maps.LatLng(point[0], point[1]);
                    var marker = new google.maps.Marker({
                        position: markerLocation,
                        map: map,
                        icon: point[4]
                    });

                    if (NELat == 0 || point[0] < NELat)
                        NELat = point[0];

                    if (SWLon == 0 || point[1] < SWLon)
                        SWLon = point[1];

                    if (SWLat == 0 || point[0] > SWLat)
                        SWLat = point[0];

                    if (NELon == 0 || point[1] > NELon)
                        NELon = point[1];

                    attachInfoWindow(marker, point[3]);
                }

                var bounds = new google.maps.LatLngBounds(new google.maps.LatLng(SWLat, SWLon), new google.maps.LatLng(NELat, NELon));
                map.fitBounds(bounds);
            }
        }
    }
}

//function codeAddress() {
//    var searchText = $("#<%= textSearch.ClientID %>").val();
//    //var hiddenField = ASPxClientHiddenField.Cast("searchField");
//    //var loading = ASPxClientLoadingPanel.Cast("loadingPanel");
//     
//    //loading.Show();

//    //var searchText = textBox.GetValue();

//    geocoder.geocode({ 'address': searchText, 'region': 'au' }, function(results, status) {
//        if (status == google.maps.GeocoderStatus.OK) {
//            //            hiddenField.Set("Latitude", results[0].geometry.location.lat());
//            //            hiddenField.Set("Longitude", results[0].geometry.location.lng());
//            //            hiddenField.Set("Search", searchText);

//            //loading.Hide();
//            var hiddenFieldLng = $("#<%= lng.ClientID %>");
//            var hiddenFieldLat = $("#<%= lat.ClientID %>");
//            
//            hiddenFieldLng.val(results[0].geometry.location.lng());
//            hiddenFieldLat.val(results[0].geometry.location.lat());
//            //hiddenFieldLng.val(searchText);

//            //serverForm.submit();
//            __doPostBack('<%= buttonSearch.ClientID %>', '');
//        } else {
//            var status = ASPxClientPanel.Cast("messagePanel");

//            status.SetContentHtml('Search unsuccessful.  No Locations Were Found.  Try another search. <br />');
//        }
//    });

//    loading.Hide();
//}

function mapLocate(lat, lon) {
    var panTarget = new google.maps.LatLng(lat, lon);
    map.panTo(panTarget);
    map.setZoom(18);
}

function attachInfoWindow(marker, contentString) {
    var infoWindow = new google.maps.InfoWindow({
        content: contentString
    });

    google.maps.event.addListener(marker, 'click', function () {
        infoWindow.open(map, marker);
    });
}


function DoGeoCode() {
    if (geocoder == null)
        geocoder = new google.maps.Geocoder();

    var grid = ASPxClientGridView.Cast(dataGrid);

    if (grid.IsEditing()) {
        var searchText = grid.GetEditValue('StreetAddress1');

        if (grid.GetEditValue('StreetAddress2') != null)
            searchText = searchText + ', ' + grid.GetEditValue('StreetAddress2')

        searchText = searchText + ', ' + grid.GetEditValue('Suburb') + ', ' + grid.GetEditValue('State') + ', ' + grid.GetEditValue('PostCode');

        geocoder.geocode({ 'address': searchText, 'region': 'au' }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                var grid = ASPxClientGridView.Cast(dataGrid);
                var lat = results[0].geometry.location.lat();
                var lng = results[0].geometry.location.lng();

                grid.SetEditValue('Latitude', lat);
                grid.SetEditValue('Longitude', lng);

                if (map == null) {
                    var latlng = new google.maps.LatLng(lat, lng);
                    var myOptions = {
                        zoom: 18,
                        center: latlng,
                        mapTypeId: google.maps.MapTypeId.ROADMAP
                    }

                    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

                    var marker = new google.maps.Marker({
                        position: latlng,
                        map: map
                    });

                } else {
                    mapLocate(lat, lng);
                }
            } else {
                alert('Search unsuccessful: ' + status);
            }
        });
    }
}

