function showAddress() {
    var search = document.getElementById('address').value;
    
    searchOpenStreetMap(search);

//    if (search != '') {
//        var pt = map.getCenter();
//        var pt2 = pt.transform(new OpenLayers.Projection('EPSG:900913'), new OpenLayers.Projection('EPSG:4326'));
//        searchPostcode(search, pt2.lat, pt2.lon);  
}

function searchOpenStreetMap(search) {
    //OpenLayers.loadURL('http://nominatim.openstreetmap.org/search/gb/' + search + '?format=xml&polygon=1&addressdetails=1', this, searchOpenStreetMapResponse);
    //alert('');
    OpenLayers.loadURL('Handlers/OSMsearchHandler.ashx?search=' + search,'',this, searchOpenStreetMapResponse);
    
}


function searchOpenStreetMapResponseJM(data) {
    if (data != undefined) {

      //  toggleSearchPane();
        var xml = data.responseXML;

        var results = xml.getElementsByTagName('searchresults')[0];
        var places = results.getElementsByTagName('place');
       
        for (i = 0; i < places.length; i++) {
           

		var place = places[i];
            var country = place.getElementsByName('country')
            var string = (new XMLSerializer()).serializeToString(place.childNodes[5]);
            alert(country);

        }

    }
}

function searchOpenStreetMapResponse(data) {
    if (data != undefined) {
        var xml = data.responseXML;

        var results = xml.getElementsByTagName('searchresults')[0];

        var place = results.getElementsByTagName('place')[0];

        if (place != null) {
            var lat = place.getAttribute('lat');
            var lon = place.getAttribute('lon');
            var size = new OpenLayers.Size(10, 17);
            var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);
            var icon = new OpenLayers.Icon('OpenLayers-2.8/img/marker.png', size, offset);

            var point = new OpenLayers.Geometry.Point(lon, lat);
            point = point.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));

            // Clear all markers and add new one
            markers.clearMarkers();
            markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(point.x, point.y), icon));
            map.setCenter(new OpenLayers.LonLat(point.x, point.y),9);
        }
        else
            alert('Search did not return any results');
    }
    else
        alert('Search failed');
}

function searchPostcode(sPostcode, X, Y) {
    OpenLayers.loadURL('http://' + webhost + '/ESDMSpatialServices/ESDMspatialServices.asmx/GetXYFromPostcode', '?sValue=' + sPostcode + '&sCurrentCoord=' + X + ' ' + Y + '&iMaxRows=10', this, searchPostcodeResponse);

    //	GDownloadUrl('http://' + webhost + '/ESDMSpatialServices/ESDMspatialServices.asmx/GetXYFromPostcode?sValue=' + sPostcode + '&sCurrentCoord=' + X + ' ' + Y + '&iMaxRows=10', function(data, responseCode) {
    //        if(responseCode == 200) {
    //		    var xml = GXml.parse(data);
    //		    var postcodes = xml.documentElement.getElementsByTagName('Location');
    //		    if (postcodes.length > 0) {
    //			    lng = GXml.value(postcodes[0].getElementsByTagName('X').item(0));
    //			    lat = GXml.value(postcodes[0].getElementsByTagName('Y').item(0));
    //			    place(lat,lng,16,sPostcode);
    //		    }
    //		    else {
    //			    showNonPostcodeAddress(sPostcode);
    //		    }
    //		}
    //        else if(responseCode == -1) {
    //            alert('Data request timed out. Please try later.');
    //        }
    //        else {
    //            alert('Request resulted in error.\n Request returned :- \n' + data);
    //        }
    //	});
}

function searchPostcodeResponse(data) {
    if (data != undefined) {
//        //var xml = GXml.parse(data);
//        var xml = data.responseXML;
//        // Does this element exist???
//        //var postcodes = xml.documentElement.getElementsByTagName('Location');
//        var postcodes = xml.documentElement.getElementsByTagName('Location');
//        if (postcodes.length > 0) {
//            lng = GXml.value(postcodes[0].getElementsByTagName('X').item(0));
//            lat = GXml.value(postcodes[0].getElementsByTagName('Y').item(0));
//            place(lat, lng, 16, sPostcode);
//        }
//        else {
            showNonPostcodeAddress(sPostcode);
//        }
    }
    else
        alert('Search resulted in an error.\n Request returned :- \n' + data.responseText);
}

function showNonPostcodeAddress(search) {
    //search = search + ' ,UK';
    // ====== Perform the Geocoding ======
    geocoder.getLocations(search, function (result) {
        var pCentre = new GLatLng(mapStartCentreY, mapStartCentreX);
        var mapViewCentre = map.getCenter();
        if (result.Status.code == G_GEO_SUCCESS) {
            // ===== If there was more than one result, 'ask did you mean' on them all =====
            if (result.Placemark.length > 1) { 
                // Loop through the results
                var j=0;
                for (var i=0; i<result.Placemark.length; i++) {
                    var p = result.Placemark[i].Point.coordinates;
                    var pt = new GLatLng(p[1],p[0]);
                    var dist = Math.floor(pt.distanceFrom(pCentre)/1000);
                    var dist2 = Math.floor(pt.distanceFrom(mapViewCentre)/1000);
                    if (dist<mapMaxDistanceKmForSearch) {
                        if (j==0) {
                            document.getElementById('message').innerHTML = 'Did you mean:';
                        }
                        j=j+1;
                        document.getElementById('message').innerHTML += "<br>"+(j)+": <a href='javascript:place(" +p[1]+","+p[0]+","+ result.Placemark[i].AddressDetails.Accuracy +",\"" +search + "\")'>"+ result.Placemark[i].address+" ("+dist+" km)</a>";
                    }
                }
                if (j==0) {
                    document.getElementById('message').innerHTML = 'No matching locations found';
                }
            }
            // ===== If there was a single marker =====
            else {
                document.getElementById('message').innerHTML = '';
                var p = result.Placemark[0].Point.coordinates;
                var pt = new GLatLng(p[1],p[0]);
                var dist = Math.floor(pt.distanceFrom(pCentre)/1000);
                if (dist<mapMaxDistanceKmForSearch) {
                    place(p[1], p[0], result.Placemark[0].AddressDetails.Accuracy, search);
                } else {
                    document.getElementById('message').innerHTML = 'No matching locations found';
                }
            }
        }
        // ====== Decode the error status ======
        else {
            var reason='Code '+result.Status.code;
            if (reasons[result.Status.code]) {
                reason = reasons[result.Status.code];
            }
            alert('Could not find "'+search+ '" ' + reason);
        }
    });
}

//if (window.event && window.event.which == 13){showAddress();return false;;} else return true;





function disableEnterKey(e)
{
     var key;
     if(window.event)
          key = window.event.keyCode;     //IE
     else
          key = e.which;     //firefox
     if(key == 13){
          showAddress();		
          return false;}
     else{
          return true;}
}
