// default position
var CR_LOCATION = new google.maps.LatLng(49.930008, 15.369873);
var CR_ZOOM = 7;

// Region positions
var REGION_LOCATION_PRAGUE = new google.maps.LatLng(50.074769, 14.43054);
var REGION_ZOOM_PRAGUE = 10;

var REGION_LOCATION_PRAGUEENV = new google.maps.LatLng(50.053612, 14.447021);
var REGION_ZOOM_PRAGUEENV = 9;


var REGION_LOCATION_NWBOHEMIA = new google.maps.LatLng(50.805935, 13.123169);
var REGION_ZOOM_NWBOHEMIA = 8;

var REGION_LOCATION_WBOHEMIA = new google.maps.LatLng(50.106488, 12.505188);
var REGION_ZOOM_WBOHEMIA = 9;

var REGION_LOCATION_NBOHEMIA = new google.maps.LatLng(50.847573, 14.76837);
var REGION_ZOOM_NBOHEMIA = 9;

var REGION_LOCATION_SBOHEMIA = new google.maps.LatLng(49.185294, 14.666748);
var REGION_ZOOM_SBOHEMIA = 9;

var REGION_LOCATION_EBOHEMIA = new google.maps.LatLng(50.120578, 16.083984);
var REGION_ZOOM_SBOHEMIA = 9;


var REGION_LOCATION_KRKONOSE = new google.maps.LatLng(50.661649, 15.726929);
var REGION_ZOOM_KRKONOSE = 10;

var REGION_LOCATION_CZPARADISE = new google.maps.LatLng(50.518666, 15.1474);
var REGION_ZOOM_CZPARADISE = 10;

var REGION_LOCATION_PILSEN = new google.maps.LatLng(49.744006, 13.463745);
var REGION_ZOOM_PILSEN = 9;

var REGION_LOCATION_SUMAVA = new google.maps.LatLng(49.030665, 13.287964);
var REGION_ZOOM_SUMAVA = 8;


var REGION_LOCATION_VYSOCINA = new google.maps.LatLng(49.380585, 15.625305);
var REGION_ZOOM_VYSOCINA = 9;


var REGION_LOCATION_NMORAVIA = new google.maps.LatLng(49.866317, 17.940674);
var REGION_ZOOM_NMORAVIA = 8;

var REGION_LOCATION_MMORAVIA = new google.maps.LatLng(49.530557, 17.361145);
var REGION_ZOOM_MMORAVIA = 9;

var REGION_LOCATION_SMORAVIA = new google.maps.LatLng(49.274973, 17.012329);
var REGION_ZOOM_SMORAVIA = 8;

// Extend GLatLng object
(function() {

    function degToDMS(deg) {
        var gpsdeg = parseInt(deg);
        var remainder = deg - (gpsdeg * 1.0);
        var gpsmin = remainder * 60.0;
        var gpssec = (gpsmin - parseInt(gpsmin * 1.0)) * 60.0;

        return gpsdeg + "°" + parseInt(gpsmin) + "'" + roundTo(gpssec, 5) + "''";
    }

    function degToUnmasked(deg) {
        var gpsdeg = parseInt(deg);
        var remainder = deg - (gpsdeg * 1.0);
        var gpsmin = remainder * 60.0;
        var gpssec = (gpsmin - parseInt(gpsmin * 1.0)) * 60.0;
        gpsmin = gpsmin > 10 ? parseInt(gpsmin) : "0" + parseInt(gpsmin);

        return gpsdeg + "" + gpsmin + new String(roundTo(gpssec, 5)).replace(".", "");
    }

    function roundTo(num, n) {
        var d = Math.pow(10, n);
        return Math.round(num * d) / d;
    }

    function ConvertDMSToDD(days, minutes, seconds, direction) {
        var dd = days + minutes / 60 + seconds / (60 * 60);

        if (direction == "S" || direction == "W") {
            dd = dd * -1;
        } // Don't do anything for N or E
        return dd;
    }

    /**
    * Convert LatLng to DMS format  
    */
    google.maps.LatLng.prototype.toDMS = function() {
        var dms = "";
        dms = this.latToDMS() + ", " + this.lngToDMS();
        return dms;
    }

    google.maps.LatLng.prototype.latToDMS = function() {
        var dms = "";

        var lat = this.lat();
        dms += degToDMS(Math.abs(lat));
        dms += (lat > 0) ? "N" : "S";

        return dms;
    }

    google.maps.LatLng.prototype.latToUnmasked = function() {
        var dms = new String(degToUnmasked(Math.abs(this.lat())));
        dms += (this.lat() > 0) ? "N" : "S";
        return dms;
    }

    google.maps.LatLng.prototype.lngToDMS = function() {
        var dms = "";

        var lng = this.lng();
        dms += degToDMS(Math.abs(lng));
        dms += (lng > 0) ? "E" : "W";

        return dms;
    }

    google.maps.LatLng.prototype.lngToUnmasked = function() {
        var dms = new String(degToUnmasked(Math.abs(this.lng())));
        dms += (this.lng() > 0) ? "E" : "W";
        return dms;
    }

    /**
    * Create new LatLng object from DMS format (factory method)
    */
    google.maps.LatLng.fromDMS = function(dms) {
        var parts = dms.split(/[^\.\d\w]+/);

        if (parts.length != 8) return null;

        var lat = ConvertDMSToDD(+parts[0], +parts[1], +parts[2], parts[3]);
        var lng = ConvertDMSToDD(+parts[4], +parts[5], +parts[6], parts[7]);
        if (isNaN(lat) || isNaN(lng)) return null;

        return new this(lat, lng);
    }

})();
