var geocoder = null;
var defaultZoom = 5;
var currentLat = 54.622978 //google.loader.ClientLocation.latitude;
var currentLng = -2.592773 //google.loader.ClientLocation.longitude;
var map;

function globalMapload() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        var location = new GLatLng(currentLat, currentLng);
        map.setCenter(location, defaultZoom);

        var topLeft = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(5, 40));
        map.enableScrollWheelZoom();
        map.addControl(new GLargeMapControl3D(), topLeft);
        map.disableDoubleClickZoom();
        map.addControl(new GOverviewMapControl());
        geocoder = new GClientGeocoder();
        geocoder.setBaseCountryCode('UK');

        loadSightings();
    }
}

function searchSightings() {
    var searchBird = $("input#txtSearchSpecies").val(),
        searchUserName = $("input#txtSearchUserName").val(),
        timePeriodMinutes = parseInt($("select#drpSearchWhen").val());

     $.ajax({
        type: "POST",
        url: "../WebServices/wsSighting.asmx/GetByPanelSearch",
        data: "{'birdName':'" + searchBird + "','userName':'" + searchUserName + "','timePeriodMinutes':" + timePeriodMinutes + ",'IsApproved':'true'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            map.clearOverlays();
            var markers = [];
            markers = msg.d;
            if (markers.length === 0) {
                $("#lblNoResults").show();
            }
            else {
                $("#lblNoResults").hide();
                for (id in markers) {
                    //alert(markers[id].Latitude);
                    var mloc = new GLatLng(markers[id].Latitude, markers[id].Longitude);
                    var sightingId = markers[id].SightingId;
                    var customImage = '/Bird/Image/' + markers[id].BirdScientificName + '/43x50/3';
                    addMarker(mloc, sightingId, customImage);
                }
            }
        }
    });
}


function loadSightings() {
    $.ajax({
        type: "POST",
        url: "../WebServices/wsSighting.asmx/Get",
        data: "{'IsApproved':'true','pageSize':'140','pageNumber':'1','sortType':'1'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            var markers = [];
            markers = msg.d;
            for (id in markers) {
                //alert(markers[id].Latitude);
                var mloc = new GLatLng(markers[id].Latitude, markers[id].Longitude);
                var sightingId = markers[id].SightingId;
                var customImage = '/Bird/Image/' + markers[id].BirdScientificName + '/43x50/3';
                addMarker(mloc, sightingId, customImage);
            }
        }
    });
}

function createMarker(latLng, iconImage, draggable) {
    if (iconImage != '') {
        var icon = new GIcon();
        icon.image = iconImage;
        icon.iconSize = new GSize(41, 52);
        icon.iconAnchor = new GPoint(27, 52);
        icon.infoWindowAnchor = new GPoint(14, 14);
        markerOptions = { icon: icon, draggable: draggable };
        var marker = new GMarker(latLng, markerOptions);

    }
    else {
        markerOptions = { draggable: draggable };
        var marker = new GMarker(latLng, markerOptions);
    }
    return marker;
    
}

function addMarker(latLng, sightingId, customImage) {
    var marker = createMarker(latLng, customImage, false);

    GEvent.addListener(marker, 'click', function() {
        sightingDetail(latLng, sightingId);
    });
    
    map.addOverlay(marker);
    markerSet = true;
}

function sightingDetail(latLng, sightingId) {
    $.ajax({
        type: "POST",
        url: "../WebServices/wsSighting.asmx/GetById",
        data: "{'sightingId':'" + sightingId + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            var htmlString = '<div class="sighting_bubble_wrapper">';
            htmlString += '<div class="sighting_bubble_content">';
            htmlString += '<div class="sighting_bubble_content_left">';
            htmlString += '<img src="' + msg.d.BirdImage + '" alt="picture" />';
            htmlString += '</div>';
            htmlString += '<div class="sighting_bubble_content_right">';
            htmlString += '<h3>' + msg.d.BirdCommonName + '</h3>';
            htmlString += '<label class="label_sighting1 fl">Seen by:</label>';
            htmlString += '<p class="grey fl">' + msg.d.UserName + '</p>';
            htmlString += '<div class="clearer0"><!-- --></div>';
            htmlString += '<label class="label_sighting1 fl">Distance from bird:</label>';
            htmlString += '<p class="grey fl">' + msg.d.Proximity + 'm</p>';
            htmlString += '<div class="clearer0"><!-- --></div>';
            htmlString += '<label class="label_sighting1 fl">Date seen:</label>';
            htmlString += '<p class="grey fl">' + msg.d.DateSeenString + '</p>';
            htmlString += '<div class="clearer0"><!-- --></div>';
            htmlString += '<label class="label_sighting1 fl">Time:</label>';
            htmlString += '<p class="grey fl">' + msg.d.TimeSeenString + '</p>';
            htmlString += '<div class="clearer0"><!-- --></div>';
            htmlString += '<label class="label_sighting1 fl">Field notes:</label>';
            htmlString += '<p class="grey fl">' + msg.d.Notes + '</p>';
            htmlString += '<div class="clearer0"><!-- --></div>';
            htmlString += '<div class="button_wrapper button_sighting_view">';
            htmlString += '<div class="button_136_bg button_bg bg_blue"><!-- --></div>';
            htmlString += '<a href="/Sightings/SightingDetails.aspx?sightingId=' + msg.d.SightingId + '" class="button button_136">View sighting details</a>';
            htmlString += '</div>';
            htmlString += '<div class="clearer0"><!-- --></div>';
            htmlString += '</div>';
            htmlString += '<div class="clearer0"><!-- --></div>';
            htmlString += '</div>';
            htmlString += '<div class="clearer0"><!-- --></div>';
            htmlString += '<!-- end inner drop 2 -->';
            htmlString += '</div>';
            htmlString += '<div class="clearer0"><!-- --></div>';

            map.openInfoWindow(latLng, htmlString);
        }
    });
}

function showAddress(address) {
    if (geocoder) {
        geocoder.getLatLng(address,
            function(point) {
                if (!point) {
                    alert(address + " not found - please search again");
                } else {
                    map.setCenter(point, 13);
                    geocoder.getLocations(point, showAddress2);
                }
            });
    }
}

function showAddress2(response) {
    if (!response || response.Status.code != 200) {
        alert("Status Code:" + response.Status.code);
    } else {
        var place = response.Placemark[3];
        locAddress = place.address;
    }
}

function changeView(type) {
    map.setMapType(type);
}

function initJquery() {
    $(function() {
	    $('.sightings_drop_header1').click(function() {
	        $(this).parent('.sighting_drop_content').parent('.dropdown_00').parent('.sighting_drop_wrapper').children('.dropdown_01').toggleClass('display_none');
	    });

	    $('.sightings_drop_header2').click(function() {
	        $(this).parent('.sighting_drop_content').parent('.dropdown_00').parent('.sighting_drop_wrapper').children('.dropdown_02').toggleClass('display_none');
	    });

	    $('.sightings_header1').click(function() {
	        $(this).parent('.sighting_drop_wrapper').children('.dropdown_00').toggleClass('display_none');
	        $(this).toggleClass('sightings_header_1');
	    });
    });
}

window.onload = globalMapload;initJquery();
window.unload = GUnload;

