﻿var map;
var painter;
var types;

window.onload = function() {
    map = new YMaps.Map(document.getElementById("YMapsID"));
    var mapData = new YMaps.TileDataSource(PageGlobals.mapUrlTemplate, false, true);
    /*mapData.getTileUrl = function(tile, zoom) {
        alert(1);
        return this.getTileUrlTemplate().replace(/%c/, 'x=' + tile.x + '&y=' + tile.y + '&z=' + zoom);
    }*/
    var mapLayer = new YMaps.Layer(mapData);
    YMaps.Layers.add("test#layer", mapLayer);
    

    var y = YMaps.MapType.MAP;
    y.getName = function() { return 'Яндекс.Карты'; };

    types = [new YMaps.MapType(['test#layer'], 'МТС Поиск', { minZoom: 3, maxZoom: 17 }), y];
    map.setType(types[0]);
    map.addControl(new YMaps.TypeControl(types));

    map.enableScrollZoom();
    painter = new Painter(map);
    map.addControl(new YMaps.Zoom());

    map.addControl(new YMaps.ToolBar());

    YMaps.Events.observe(map, map.Events.Update, writeUrl);
    YMaps.Events.observe(map, map.Events.MoveEnd, writeUrl);

    var id = getRequestPointID();
    if (id == -1) {
        map.setCenter(getRequestPoint(), getRequestZoom());
        painter.onMoveEnd();
    }
    else {
        painter.showByID(id, getRequestZoom());
    }

    var mapSearcher = new MapSearcher(document.getElementById('map_search'), document.getElementById('map_query'), document.getElementById('map_result'), map);
    document.getElementById('map_query').focus();
};

function getRequestPoint() {
    var loc = window.location.href;
    try {
        var lon = parseFloat(loc.match(/lon=([\d\.]+)/)[1]);
        var lat = parseFloat(loc.match(/lat=([\d\.]+)/)[1]);
        return new YMaps.GeoPoint(lon, lat);
    }
    catch (ex) {
        return new YMaps.GeoPoint(37.64, 55.76);
    }
}

function getRequestZoom() {
    var loc = window.location.href;
    try {
        var sc = parseInt(loc.match(/zoom=([\d]+)/)[1]);
        return sc;
    }
    catch (ex) {
        return 10;
    }
}

function getRequestPointID() {
    var loc = window.location.href;
    try {
        var sc = parseInt(loc.match(/id=([\d]+)/)[1]);
        return sc;
    }
    catch (ex) {
        return -1;
    }
}

function writeUrl() {
    try {
        /*var baseHref = window.location.href.match(/^(.+?)(?:#|$)/)[1];
        var c = map.getCenter();
        window.location.href = baseHref + "#lon=" + c.getLng().toFixed(6) + "&lat=" + c.getLat().toFixed(6) + "&zoom=" + map.getZoom();*/
    }
    catch (ex)
    { }
}
