var intRadiusKM = 5;
var strFillColour = '99CCFF';
var strBorderColour = 'FFFFFF';
var intBorderWeight = 3;
var op = 1;
var _mPreferMetric = true;
var map;
var bounds;
var localSearch = new GlocalSearch();
var dataforstaticmap = "";
var Icon = new GIcon(G_DEFAULT_ICON);
var path;
var pathcount = 0;
Icon.image = "http://www.freemaptools.com/images/markers/freemaptools.png";
Icon.shadow = "http://www.freemaptools.com/images/markers/shadow.png";
Icon.iconSize = new GSize(20, 34);
Icon.shadowSize = new GSize(37, 34);
Icon.iconAnchor = new GPoint(9, 34);
Icon.infoWindowAnchor = new GPoint(9, 2);
Icon.infoShadowAnchor = new GPoint(18, 25);

function getQueryVariable(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable) {
            return pair[1]
        }
    }
}
function fit() {
    map.setCenter(bounds.getCenter());
    map.setZoom(map.getBoundsZoomLevel(bounds))
}
function draw(pnt) {
    var givenRad = intRadiusKM;
    var givenQuality = 75;
    var centre = pnt;

    var colour = "#" + strBorderColour;
    var fillcolour = "#" + strFillColour;
    var thick = intBorderWeight;
        op = 0.5

    drawCircle(centre, givenRad, givenQuality, colour, thick, 1, fillcolour)
}
function drawCircle(center, radius, nodes, liColor, liWidth, liOpa, fillColor, fillOpa) {
    var latConv = center.distanceFrom(new GLatLng(center.lat() + 0.1, center.lng())) / 100;
    var lngConv = center.distanceFrom(new GLatLng(center.lat(), center.lng() + 0.1)) / 100;
    var points = [];
    var step = parseInt(360 / nodes) || 10;
    for (var i = 0; i <= 360; i += step) {
        var pint = new GLatLng(center.lat() + (radius / latConv * Math.cos(i * Math.PI / 180)), center.lng() + (radius / lngConv * Math.sin(i * Math.PI / 180)));
        points.push(pint);
        bounds.extend(pint);
        dataforstaticmap += pint.lat() + "%2C" + pint.lng() + "%3A"
    }
    var poly = new GPolygon(points, liColor, liWidth, liOpa, fillColor, fillOpa);
    map.addOverlay(poly);
    findpolyenc(dataforstaticmap);
    dataforstaticmap = "";
    pathcount = +1;
    var qs;
    qs = "?clat=" + center.lat() + "&clng=" + center.lng() + "&r=" + radius + "&n=" + nodes + "&lc=" + liColor + "&lw=" + liWidth + "&fc=" + fillColor;
    qs = qs.replace(/#/g, "");
    //document.getElementById("tb_url").value = "http://www.freemaptools.com/radius-around-point.htm" + qs
}
function findpolyenc(inputtext) {
    var xmlHttp;
    try {
        xmlHttp = new XMLHttpRequest()
    } catch(e) {
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")
        } catch(e) {
            try {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
            } catch(e) {
                alert("Your browser does not support AJAX!");
                return false
            }
        }
    }
    xmlHttp.onreadystatechange = function () {
		var paths;
        if (xmlHttp.readyState == 4) {
            var response = xmlHttp.responseText;
            path = 'path=fillcolor:' + "0x" + strFillColour + '|weight:' + intBorderWeight + '|color:' + "0x" + strBorderColour + '|enc:' + response + '';
            if (paths != "") {
                paths = paths + "&" + path
            } else {
                paths = path
            }
        }
    };
    var randomnumber = Math.floor(Math.random() * 999);
    xmlHttp.open("POST", "ajax/csv-polyline-encoder.php", true);
    var params = "input=" + inputtext + "&rn=" + randomnumber;
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", params.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.send(params)
}
function getCheckedValue(radioObj) {
    if (!radioObj) {
        return ""
    }
    var radioLength = radioObj.length;
    if (radioLength == undefined) {
        if (radioObj.checked) {
            return radioObj.value
        } else {
            return ""
        }
    }
    for (var i = 0; i < radioLength; i++) {
        if (radioObj[i].checked) {
            return radioObj[i].value
        }
    }
    return ""
}
function convertkm2mi() {
    var km = intRadiusKM;
	// var km = document.getElementById("radiusinputkm").value;
    //document.getElementById("radiusinputmi").value = round_decimals(parseFloat(km) * 0.621371192, 2)
}
function convertmi2km() {
    //var mi = document.getElementById("radiusinputmi").value;
    //document.getElementById("radiusinputkm").value = round_decimals(parseFloat(mi) * (1 / 0.621371192), 2)
}
function round_decimals(original_number, decimals) {
    var result1 = original_number * Math.pow(10, decimals);
    var result2 = Math.round(result1);
    var result3 = result2 / Math.pow(10, decimals);
    return pad_with_zeros(result3, decimals)
}
function pad_with_zeros(rounded_value, decimal_places) {
    var value_string = rounded_value.toString();
    var decimal_location = value_string.indexOf(".");
    if (decimal_location == -1) {
        decimal_part_length = 0;
        value_string += decimal_places > 0 ? "." : ""
    } else {
        decimal_part_length = value_string.length - decimal_location - 1
    }
    var pad_total = decimal_places - decimal_part_length;
    if (pad_total > 0) {
        for (var counter = 1; counter <= pad_total; counter++) value_string += "0"
    }
    return value_string
}
function uselatlng() {
    var point;
    point = new GLatLng(parseFloat(document.getElementById("tb_lat").value), parseFloat(document.getElementById("tb_lng").value));
    placeMarkerAtPoint(point)
}
function usePointFromPostcode(place, callbackFunction) {
    localSearch.setSearchCompleteCallback(null, function () {
        if (localSearch.results[0]) {
            var resultLat = localSearch.results[0].lat;
            var resultLng = localSearch.results[0].lng;
            var point = new GLatLng(resultLat, resultLng);
            callbackFunction(point)
        } else {
            alert("Location not found!")
        }
    });
    localSearch.execute(place)
}
function placeMarkerAtPoint(pointin) {
    var str_lat = pointin.lat();
    var str_lng = pointin.lng();
    var point = new GLatLng(parseFloat(str_lat), parseFloat(str_lng));
    draw(point);
    var kms = intRadiusKM;
    //document.getElementById("area").value = (Math.PI * (kms * kms)).toFixed(3);
   //document.getElementById("cir").value = 2 * (Math.PI * kms).toFixed(3);
    check = 'True';
    if (check) {
        map.addOverlay(new GMarker(point, {
            icon: Icon,
            title: "Radius=" + kms + "km"
        }))
    }
    fit()
}
function clearMap() {
    map.clearOverlays();
    bounds = new GLatLngBounds();
    dataforstaticmap = ""
}
convertkm2mi();