﻿var __isIE6 = (navigator.userAgent.indexOf("MSIE 6.") != -1); var __isFF = (navigator.userAgent.indexOf("Firefox") != -1); var _mapgo_BrowserDetect = { init: function() { this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version"; this.OS = this.searchString(this.dataOS) || "an unknown OS"; }, searchString: function(data) {
    for (var i = 0; i < data.length; i++) {
        var dataString = data[i].string; var dataProp = data[i].prop; this.versionSearchString = data[i].versionSearch || data[i].identity; if (dataString) {
            if (dataString.indexOf(data[i].subString) != -1)
                return data[i].identity;
        }
        else if (dataProp)
            return data[i].identity;
    } 
}, searchVersion: function(dataString) { var index = dataString.indexOf(this.versionSearchString); if (index == -1) return; return parseFloat(dataString.substring(index + this.versionSearchString.length + 1)); }, dataBrowser: [{ string: navigator.vendor, subString: "Apple", identity: "Safari" }, { prop: window.opera, identity: "Opera" }, { string: navigator.userAgent, subString: "Firefox", identity: "Firefox" }, { string: navigator.userAgent, subString: "MSIE", identity: "Explorer", versionSearch: "MSIE" }, { string: navigator.userAgent, subString: "Mozilla", identity: "Netscape", versionSearch: "Mozilla"}], dataOS: [{ string: navigator.platform, subString: "Win", identity: "Windows" }, { string: navigator.platform, subString: "Mac", identity: "Mac" }, { string: navigator.platform, subString: "Linux", identity: "Linux"}]
}; _mapgo_BrowserDetect.init(); if (!this.JSON) { JSON = {}; }
(function() {
    function f(n) { return n < 10 ? '0' + n : n; }
    if (typeof Date.prototype.toJSON !== 'function') {
        Date.prototype.toJSON = function(key) {
            return this.getUTCFullYear() + '-' +
f(this.getUTCMonth() + 1) + '-' +
f(this.getUTCDate()) + 'T' +
f(this.getUTCHours()) + ':' +
f(this.getUTCMinutes()) + ':' +
f(this.getUTCSeconds()) + 'Z';
        }; String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function(key) { return this.valueOf(); };
    }
    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, escapeable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, gap, indent, meta = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"': '\\"', '\\': '\\\\' }, rep; function quote(string) {
        escapeable.lastIndex = 0; return escapeable.test(string) ? '"' + string.replace(escapeable, function(a) {
            var c = meta[a]; if (typeof c === 'string') { return c; }
            return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
        }) + '"' : '"' + string + '"';
    }
    function str(key, holder) {
        var i, k, v, length, mind = gap, partial, value = holder[key]; if (value && typeof value === 'object' && typeof value.toJSON === 'function') { value = value.toJSON(key); }
        if (typeof rep === 'function') { value = rep.call(holder, key, value); }
        switch (typeof value) {
            case 'string': return quote(value); case 'number': return isFinite(value) ? String(value) : 'null'; case 'boolean': case 'null': return String(value); case 'object': if (!value) { return 'null'; }
                gap += indent; partial = []; if (typeof value.length === 'number' && !value.propertyIsEnumerable('length')) {
                    length = value.length; for (i = 0; i < length; i += 1) { partial[i] = str(i, value) || 'null'; }
                    v = partial.length === 0 ? '[]' : gap ? '[\n' + gap +
partial.join(',\n' + gap) + '\n' +
mind + ']' : '[' + partial.join(',') + ']'; gap = mind; return v;
                }
                if (rep && typeof rep === 'object') { length = rep.length; for (i = 0; i < length; i += 1) { k = rep[i]; if (typeof k === 'string') { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); } } } } else { for (k in value) { if (Object.hasOwnProperty.call(value, k)) { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); } } } }
                v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
mind + '}' : '{' + partial.join(',') + '}'; gap = mind; return v;
        } 
    }
    if (typeof JSON.stringify !== 'function') {
        JSON.stringify = function(value, replacer, space) {
            var i; gap = ''; indent = ''; if (typeof space === 'number') { for (i = 0; i < space; i += 1) { indent += ' '; } } else if (typeof space === 'string') { indent = space; }
            rep = replacer; if (replacer && typeof replacer !== 'function' && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { throw new Error('JSON.stringify'); }
            return str('', { '': value });
        };
    }
    if (typeof JSON.parse !== 'function') {
        JSON.parse = function(text, reviver) {
            var j; function walk(holder, key) {
                var k, v, value = holder[key]; if (value && typeof value === 'object') { for (k in value) { if (Object.hasOwnProperty.call(value, k)) { v = walk(value, k); if (v !== undefined) { value[k] = v; } else { delete value[k]; } } } }
                return reviver.call(holder, key, value);
            }
            cx.lastIndex = 0; if (cx.test(text)) {
                text = text.replace(cx, function(a) {
                    return '\\u' +
('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                });
            }
            j = eval('(' + text + ')'); return typeof reviver === 'function' ? walk({ '': j }, '') : j; throw new SyntaxError('JSON.parse');
        };
    } 
})(); JSHttpResponse = null; function JSHttpRequest() { this.onreadystatechange = null; this.readyState = 0; this.responseText = null; this.responseXML = null; this.status = null; this.statusText = null; this.headNode = document.getElementsByTagName("head").item(0); }
JSHttpRequest.prototype.abort = function() { this.headNode.removeChild(this.jsNode); this.jsNode = null; this.status = null; this.statusText = null; this.responseText = null; this.responseXML = null; }
JSHttpRequest.prototype.getAllResponseHeaders = function() { return null; }
JSHttpRequest.prototype.getResponseHeader = function(iHeaderName) { return null; }
JSHttpRequest.prototype.open = function(iMethod, iURL, iAsync, iUserName, iPassword) { this.method = "GET"; this.URL = iURL; this.async = true; this.userName = null; this.password = null; }
JSHttpRequest.prototype.send = function(iContent) {
    this.content = null; this.jsNode = document.createElement("script"); this.jsNode.type = "text/javascript"; this.jsNode.charset = "utf-8"; this.jsNode.src = this.URL; var oThis = this; var onLoad = function() {
        if (JSHttpResponse) { var response = JSHttpResponse.get(); oThis.responseXML = response.responseXML; oThis.responseText = response.responseText; JSHttpResponse = null; } else { oThis.responseXML = null; oThis.responseText = null; }
        oThis.status = 200; oThis.statusText = "OK"; oThis.readyState = 4; if (oThis.onreadystatechange) { oThis.onreadystatechange(); } 
    }
    var onReadyStateChange = function(iEvent) { var e = (iEvent ? iEvent : window.event).target ? (iEvent ? iEvent : window.event).target : (iEvent ? iEvent : window.event).srcElement; if (e.readyState == "loaded" || e.readyState == "complete") { onLoad(); } }
    if (navigator.product == "Gecko") { this.jsNode.onload = onLoad; } else { this.jsNode.onreadystatechange = onReadyStateChange; }
    this.headNode.appendChild(this.jsNode); this.readyState = 1; if (this.onreadystatechange) { this.onreadystatechange(); } 
}
JSHttpRequest.prototype.setRequestHeader = function(iLabel, iValue) { return null; }
function cdAJAX() {
    var obj = new Object(); obj.url = window.location.href; obj.method = "GET"; obj.parameters = new Object(); obj.jsonParameters = new Object(); obj.headers = new Object(); obj.async = true; obj.mimeType = "text/xml"; obj.username = null; obj.password = null; obj.form = null; obj.disableForm = true; obj.unique = true; obj.uniqueParameter = "_uniqid"; obj.requestDone = false; obj.queryString = ""; obj.responseText = null; obj.responseXML = null; obj.status = null; obj.statusText = null; obj.aborted = false; obj.timeout = 0; obj.retryCount = 0; obj.retryDelay = 1000; obj.tag = null; obj.group = null; obj.progressTimerInterval = 50; obj.xmlHttpRequest = null; obj.onInitialization = null; obj.onFinalization = null; obj.onReadyStateChange = null; obj.onLoading = null; obj.onLoaded = null; obj.onInteractive = null; obj.onComplete = null; obj.onProgress = null; obj.onSuccess = null; obj.onFatalError = null; obj.onError = null; obj.onTimeout = null; obj.onRetryDelay = null; obj.onRetry = null; obj.onGroupEnter = null; obj.onGroupLeave = null; obj.createXmlHttpRequest = function() { return new JSHttpRequest(); }; obj._oldResponseLength = null; obj._progressTimer = null; obj._progressStarted = navigator.userAgent.indexOf('Opera') == -1; obj._onProgress = function() {
        if (typeof obj.onProgress == "function" && typeof obj.xmlHttpRequest.getResponseHeader == "function") { var contentLength = obj.xmlHttpRequest.getResponseHeader("Content-length"); if (contentLength != null && contentLength != '') { var responseLength = obj.xmlHttpRequest.responseText.length; if (responseLength != obj._oldResponseLength) { obj.raiseEvent("Progress", obj, responseLength, contentLength); obj._oldResponseLength = obj.xmlHttpRequest.responseText.length; } } }
        if (obj._progressStarted) return; obj._progressStarted = true; var _obj = this; this.__onProgress = function() { obj._onProgress(); obj._progressTimer = window.setTimeout(_obj.__onProgress, obj.progressTimerInterval); }
        _obj.__onProgress();
    }
    obj._onInitializationHandled = false; obj._initObject = function() {
        if (obj.xmlHttpRequest != null) { delete obj.xmlHttpRequest["onreadystatechange"]; obj.xmlHttpRequest = null; }
        if ((obj.xmlHttpRequest = obj.createXmlHttpRequest()) == null)
            return null; if (typeof obj.xmlHttpRequest.overrideMimeType != "undefined")
            obj.xmlHttpRequest.overrideMimeType(obj.mimeType); obj.xmlHttpRequest.onreadystatechange = function() {
                if (obj == null || obj.xmlHttpRequest == null)
                    return; obj.raiseEvent("ReadyStateChange", obj, obj.xmlHttpRequest.readyState); obj._onProgress(); switch (obj.xmlHttpRequest.readyState) { case 1: obj._onLoading(); break; case 2: obj._onLoaded(); break; case 3: obj._onInteractive(); break; case 4: { obj._onComplete(); break; } } 
            }; obj._onLoadingHandled = obj._onLoadedHandled = obj._onInteractiveHandled = obj._onCompleteHandled = false;
    }; obj._onLoading = function() {
        if (obj._onLoadingHandled)
            return; if (!obj._retry && obj.group != null) {
            if (typeof cdAJAX._groupData[obj.group] == "undefined")
                cdAJAX._groupData[obj.group] = 0; cdAJAX._groupData[obj.group]++; if (typeof obj.onGroupEnter == "function" && cdAJAX._groupData[obj.group] == 1)
                obj.onGroupEnter(obj);
        }
        obj.raiseEvent("Loading", obj); obj._onLoadingHandled = true;
    }; obj._onLoaded = function() {
        if (obj._onLoadedHandled)
            return; obj.raiseEvent("Loaded", obj); obj._onLoadedHandled = true;
    }; obj._onInteractive = function() {
        if (obj._onInteractiveHandled)
            return; obj.raiseEvent("Interactive", obj); obj._onInteractiveHandled = true; if (!obj._progressStarted)
            obj._onProgress();
    }; obj._onComplete = function() {
        if (obj._onCompleteHandled || obj.aborted)
            return; if (obj._progressStarted) { window.clearInterval(obj._progressTimer); obj._progressStarted = false; }
        obj.requestDone = true; with (obj.xmlHttpRequest) {
            obj.responseText = responseText; obj.responseXML = responseXML; if (typeof status != "undefined")
                obj.status = status; if (typeof statusText != "undefined")
                obj.statusText = statusText;
        }
        obj.raiseEvent("Complete", obj); obj._onCompleteHandled = true; if (obj.status == 200)
            obj.raiseEvent("Success", obj); else
            obj.raiseEvent("Error", obj); delete obj.xmlHttpRequest['onreadystatechange']; obj.xmlHttpRequest = null; if (obj.disableForm)
            obj.switchForm(true); obj._groupLeave(); obj.raiseEvent("Finalization", obj);
    }; obj._groupLeave = function() {
        if (obj.group != null) {
            cdAJAX._groupData[obj.group]--; if (cdAJAX._groupData[obj.group] == 0)
                obj.raiseEvent("GroupLeave", obj);
        } 
    }; obj._retry = false; obj._retryNo = 0; obj._onTimeout = function() {
        if (obj == null || obj.xmlHttpRequest == null || obj._onCompleteHandled)
            return; obj.aborted = true; obj.xmlHttpRequest.abort(); obj.raiseEvent("Timeout", obj); obj._retry = true; if (obj._retryNo != obj.retryCount) {
            obj._initObject(); if (obj.retryDelay > 0) { obj.raiseEvent("RetryDelay", obj); startTime = new Date().getTime(); while (new Date().getTime() - startTime < obj.retryDelay); }
            obj._retryNo++; obj.raiseEvent("Retry", obj, obj._retryNo); obj.run();
        } else {
            delete obj.xmlHttpRequest["onreadystatechange"]; obj.xmlHttpRequest = null; if (obj.disableForm)
                obj.switchForm(true); obj._groupLeave(); obj.raiseEvent("Finalization", obj);
        } 
    }; obj.run = function() {
        obj._initObject(); if (obj.xmlHttpRequest == null)
            return false; obj.aborted = false; if (!obj._onInitializationHandled) { obj.raiseEvent("Initialization", obj); obj._onInitializationHandled = true; }
        if (obj.disableForm)
            obj.switchForm(false); try { obj.xmlHttpRequest.open(obj.method, obj.url, obj.async, obj.username || '', obj.password || ''); } catch (e) { obj.raiseEvent("FatalError", obj, e); return; }
        if (obj.timeout > 0)
            setTimeout(obj._onTimeout, obj.timeout); if (typeof obj.xmlHttpRequest.setRequestHeader != "undefined")
            if (obj.method == "POST" && typeof obj.xmlHttpRequest.setRequestHeader != "undefined") { obj.xmlHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); obj.xmlHttpRequest.send(obj.queryString); } else if (obj.method == "GET")
            obj.xmlHttpRequest.send('');
    }; obj.handleArguments = function(args) {
        if (typeof args.form == "object" && args.form != null) { obj.form = args.form; obj.appendForm(); }
        for (a in args) {
            if (typeof obj[a] == "undefined")
                obj.parameters[a] = args[a]; else {
                if (a != "parameters" && a != "headers")
                    obj[a] = args[a]; else
                    for (b in args[a])
                    obj[a][b] = args[a][b];
            } 
        }
        obj.method = obj.method.toUpperCase();
    }; obj.switchForm = function(enable) {
        if (typeof obj.form != "object" || obj.form == null)
            return; with (obj.form)
            for (var nr = 0; nr < elements.length; nr++)
            if (!enable) {
            if (elements[nr]["disabled"])
                elements[nr]["_disabled"] = true; else
                elements[nr]["disabled"] = "disabled";
        } else
            if (typeof elements[nr]["_disabled"] == "undefined")
            elements[nr].removeAttribute("disabled");
    }; obj.appendForm = function() {
        with (obj.form) {
            obj.method = getAttribute("method").toUpperCase(); obj.url = getAttribute("action"); for (var nr = 0; nr < elements.length; nr++) {
                var e = elements[nr]; if (e.disabled)
                    continue; switch (e.type) {
                    case "text": case "password": case "hidden": case "textarea": obj.addParameter(e.name, e.value); break; case "select-one": if (e.selectedIndex >= 0)
                            obj.addParameter(e.name, e.options[e.selectedIndex].value); break; case "select-multiple": for (var nr2 = 0; nr2 < e.options.length; nr2++)
                            if (e.options[nr2].selected)
                            obj.addParameter(e.name, e.options[nr2].value); break; case "checkbox": case "radio": if (e.checked)
                            obj.addParameter(e.name, e.value); break;
                } 
            } 
        } 
    }; obj.addParameter = function(name, value) {
        if (typeof obj.parameters[name] == "undefined")
            obj.parameters[name] = value; else
            if (typeof obj.parameters[name] != "object")
            obj.parameters[name] = [obj.parameters[name], value]; else
            obj.parameters[name][obj.parameters[name].length] = value;
    }; obj.delParameter = function(name) { delete obj.parameters[name]; }; obj.raiseEvent = function(name) {
        var args = []; for (var i = 1; i < arguments.length; i++)
            args.push(arguments[i]); if (typeof obj["on" + name] == "function")
            obj["on" + name].apply(null, args); if (name == "FatalError")
            obj.raiseEvent("Finalization", obj);
    }
    if (typeof cdAJAX._defaultParameters != "undefined")
        obj.handleArguments(cdAJAX._defaultParameters); return obj;
}
cdAJAX.get = function(args) { return cdAJAX.handleRequest("GET", args); }; cdAJAX.post = function(args) { return cdAJAX.handleRequest("POST", args); }; cdAJAX.head = function(args) { return cdAJAX.handleRequest("HEAD", args); }; cdAJAX.submit = function(form, args) {
    if (typeof args == "undefined" || args == null)
        return -1; if (typeof form != "object" || form == null)
        return -2; var request = new cdAJAX(); args["form"] = form; request.handleArguments(args); return request.run();
}; cdAJAX.assign = function(form, args) {
    if (typeof args == "undefined" || args == null)
        return -1; if (typeof form != "object" || form == null)
        return -2; if (typeof form["onsubmit"] == "function")
        form["_onsubmit"] = form["onsubmit"]; form["advajax_args"] = args; form["onsubmit"] = function() {
            if (typeof this["_onsubmit"] != "undefined" && this["_onsubmit"]() === false)
                return false; if (cdAJAX.submit(this, this["advajax_args"]) == false)
                return true; return false;
        }
    return true;
}; cdAJAX.download = function(targetObj, url) {
    if (typeof targetObj == "string")
        targetObj = document.getElementById(targetObj); if (!targetObj)
        return -1; cdAJAX.get({ url: url, onSuccess: function(obj) { targetObj.innerHTML = obj.responseText; } });
}; cdAJAX.scan = function() { var obj = document.getElementsByTagName("a"); for (var i = 0; i < obj.length; ) { if (obj[i].getAttribute("rel") == "advancedajax" && obj[i].getAttribute("href") !== null) { var url = obj[i].getAttribute("href"); var div = document.createElement("div"); div.innerHTML = obj[i].innerHTML; div.className = obj[i].className; var parent = obj[i].parentNode; parent.insertBefore(div, obj[i]); parent.removeChild(obj[i]); cdAJAX.download(div, url); } else i++; } }; cdAJAX.handleRequest = function(requestType, args) {
    if (typeof args == "undefined" || args == null)
        return -1; var request = new cdAJAX(); window.advajax_obj = request; request.method = requestType; request.handleArguments(args); return request.run();
}; cdAJAX._defaultParameters = new Object(); cdAJAX.setDefaultParameters = function(args) {
    cdAJAX._defaultParameters = new Object(); for (a in args)
        cdAJAX._defaultParameters[a] = args[a];
}; cdAJAX._groupData = new Object(); var _mmapgoobj = 0; function createMapgoObject() {
    if (!_mmapgoobj)
        _mmapgoobj = new MapgoObject(); return _mmapgoobj;
}
function MapgoPoint() { this.lon = 0; this.lat = 0; this.x = 0; this.y = 0; }
function MapgoIcon() {
    this.type = 1; this.id = ''; this.stamp = ''; this.cluster_descr = ''; this.lon = 0; this.lat = 0; this.descr = ''; this.width = 24; this.height = 40; this.image = 'http://www.geoserwer.pl/api/gfx/adres.png'; this.icon_offx = -22; this.icon_offy = -32; this.tip_width = 0; this.tip_height = 0; this.onclick_function = 0; this.dragable = false; this.afterdrag_function = 0; this.feature = 0; this.show_tip_state = 0; this.visible = true; this.clustered = false; this.cluster = true; this.stampStyle = new Object(); this.label = ''; this.label_pos = 0; this.setIconPos = function(lon, lat) { _mmapgoobj.hideTip(); var calk_coordsc = _mmapgoobj.przeliczCalkPiksel(_mmapgoobj.curr_center_lon, _mmapgoobj.curr_center_lat); var screen_coords = _mmapgoobj.makeScreenRouteCoord(lon, lat, calk_coordsc.x, calk_coordsc.y); this.feature.x = screen_coords.x; this.feature.y = screen_coords.y; this.feature.lon = lon; this.feature.lat = lat; this.feature.div.style.left = (this.feature.x + this.feature.icon_offx) + 'px'; this.feature.div.style.top = (this.feature.y + this.feature.icon_offy) + 'px'; return { "x": (this.feature.x + this.feature.icon_offx), "y": (this.feature.y + this.feature.icon_offy) }; }
    this.changeIconImage = function(new_image, nwidth, nheight, noffx, noffy) {
        this.image = new_image; this.width = nwidth; this.height = nheight; this.icon_offx = noffx; this.icon_offy = noffy; this.feature.icon_offx = noffx; this.feature.icon_offy = noffy; var img = this.feature.img; img.style.width = nwidth + 'px'; img.style.height = nheight + 'px'; if (__isIE6) { img.src = 'http://www.geoserwer.pl/api/gfx/blank.gif'; img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + new_image + "',sizingMethod='scale')"; }
        else
            img.src = new_image; this.setIconPos(this.lon, this.lat);
    }
    this.setTipSize = function(width, height) {
        document.getElementById("mapgo_tip_txt").innerHTML = this.descr; if (width && height)
            _mmapgoobj.makeTipFrames(width, height); else
            _mmapgoobj.makeTipFrames(document.getElementById("mapgo_tip_txt").offsetWidth, document.getElementById("mapgo_tip_txt").offsetHeight); this.feature.div.onmouseover = function() {
                if (_mmapgoobj.last_div_tip != this) {
                    _mmapgoobj.hideTip(); if (!_mmapgoobj.dragging_rubber) { _mmapgoobj.positionTip(this); }
                    _mmapgoobj.last_div_tip = this; if (_mmapgoobj._after_show_tip_callback != 0)
                        _mmapgoobj._after_show_tip_callback(this.feature.mapgoicon);
                } 
            };
    } 
}
function MapgoColor(nr, ng, nb) { this.R = nr; this.G = ng; this.B = nb; }
function MapgoLayer() {
    this.id = ''; this.name = ''; this.features = 0; this.visible = true; this.position = 0; this.div = 0; this.label_div = 0; this.scale_from = 0; this.scale_to = 0; this.cluster = false; this.mapCoordsTopLeft = 0; this.mapCoordsBottomRight = 0; this.all_features = []; this._clusterMarkers = []; this.clustered_icon = new MapgoIcon(); this.position_layer_cluster = false; this.hide_when_move = false; this.h_w_m = false; this.POI = false; this.clusterIcons = function(dontclusterall) {
        this.mapCoordsTopLeft = _mmapgoobj.convertScreenToGeo(0, 0); this.mapCoordsBottomRight = _mmapgoobj.convertScreenToGeo(_mmapgoobj.map_width, _mmapgoobj.map_height); _mmapgoobj.removeLayerByName(this.name); for (var i = this.all_features.length - 1; i >= 0; i--) {
            if (dontclusterall == 'undefined' || !dontclusterall)
                this.all_features[i].cluster = true; if (this.all_features[i].cluster)
                this.all_features[i].visible = this.isIconInMap(this.all_features[i]);
        }
        this._clusterMarkers = []; var _gmarkers = []; var center = 0; this.makeCandidatesToGroup(this.all_features); var allg = 0; for (var i = this._clusterMarkers.length - 1; i >= 0; i--) { allg += this._clusterMarkers[i].length; center = this.makeGroupCenter(this._clusterMarkers[i], this.all_features); _gmarkers.push(center); }
        var l = this.addGroupedMarkers(_gmarkers); l.cluster = true; return l;
    }
    this.addGroupedMarkers = function(cxylist) {
        var clusteredIcons = []; var unclusteredIcons = []; for (var i = cxylist.length - 1; i >= 0; i--) { var clusterMarker = new MapgoIcon(); clusterMarker.image = this.clustered_icon.image; clusterMarker.descr = this.makeClusterTip(cxylist[i].grp); clusterMarker.stamp = cxylist[i].grp.length + ''; clusterMarker.tip_width = 180; clusterMarker.tip_height = 170; clusterMarker.width = this.clustered_icon.width; clusterMarker.height = this.clustered_icon.height; clusterMarker.icon_offx = this.clustered_icon.icon_offx; clusterMarker.icon_offy = this.clustered_icon.icon_offy; clusterMarker.dragable = this.clustered_icon.dragable; clusterMarker.onclick_function = this.clustered_icon.onclick_function; clusterMarker.lon = cxylist[i].cx; clusterMarker.lat = cxylist[i].cy; clusterMarker.clustered = true; clusteredIcons.push(clusterMarker); }
        for (var i = this.all_features.length - 1; i >= 0; i--) { if (!this.all_features[i].clustered && this.all_features[i].visible) { clusteredIcons.push(this.all_features[i]); } }
        var l = _mmapgoobj.addIconsToMap(clusteredIcons, this.name, false, this.scale_from, this.scale_to, this.hide_when_move, this.POI); l.all_features = this.all_features; l.clustered_icon = this.clustered_icon; return l;
    }
    this.makeAddIconCode = function(icon) {
        var outc = "_mmapgoobj.hideLayerByName('" + this.name + "');_mmapgoobj.removeLayer('__single_poi');"; outc += "icon1=new" + " " + "MapgoIcon();"; if (icon.id && icon.id != '')
        { outc += "icon1.id=" + icon.id + ";"; }
        outc += "icon1.tip_width=" + icon.tip_width + ";"; outc += "icon1.tip_height=" + icon.tip_height + ";"; outc += "icon1.image='" + icon.image + "';"; outc += "icon1.width=" + icon.width + ";"; outc += "icon1.height=" + icon.height + ";"; outc += "icon1.icon_offx=" + icon.icon_offx + ";"; outc += "icon1.icon_offy=" + icon.icon_offy + ";"; outc += "icon1.lon=" + icon.lon + ";"; outc += "icon1.lat=" + icon.lat + ";"; if (this.POI)
            outc += "icon1.descr='[]';"; else
            outc += "icon1.descr='" + icon.descr + "';"; outc += "var objl=[];"; outc += "objl.push(icon1);"; outc += "var l=_mmapgoobj.searchLayer('__single_poi');if (l) _mmapgoobj.addIconsToLayer(objl,'__single_poi',false,true);"
        outc += "else _mmapgoobj.addIconsToMap(objl,'__single_poi',false,3,20,false,true);_mmapgoobj.block_events=false;"; return outc;
    }
    this.makeClusterTip = function(objects) {
        var retv = '<div style="overflow:scroll;width:178px;height:170px;cursor:pointer">'; var opis = ''; for (var i = objects.length - 1; i >= 0; i--) {
            opis = '<div onmouseover=this.style.background="#606060" onmouseout=this.style.background="#e5e5e5" onclick="_mmapgoobj.block_events=true;_mmapgoobj.centerTo(' + objects[i].lon + ',' + objects[i].lat + ',3);' + this.makeAddIconCode(objects[i]) + '">'; if (objects[i].cluster_descr.length == 0)
                opis += 'X=' + objects[i].lon + ',Y=' + objects[i].lat; else
                opis += objects[i].cluster_descr; retv = retv + opis + '</div>';
        }
        retv += '</div>'; return retv;
    }
    this.checkIntersect = function(icon1, icon2) {
        var tempCoords1 = _mmapgoobj.przeliczCalkPiksel(icon1.lon, icon1.lat); var tempCoords2 = _mmapgoobj.przeliczCalkPiksel(icon2.lon, icon2.lat); var tempX11 = tempCoords1.x + icon1.icon_offx; var tempY11 = tempCoords1.y + icon1.icon_offy; var tempX21 = tempCoords2.x + icon2.icon_offx; var tempY21 = tempCoords2.y + icon2.icon_offy; var tempX12 = tempX11 + icon1.width; var tempY12 = tempY11 + icon1.height; var tempX22 = tempX21 + icon2.width; var tempY22 = tempY21 + icon2.height; if (tempX11 > tempX22 || tempX21 > tempX12 || tempY11 > tempY22 || tempY21 > tempY12)
            return false; else
            return true;
    }
    this.makeGroupCenter = function(group, objects) {
        var minx, miny, maxx, maxy; minx = 9999999; miny = 9999999; maxx = 0; maxy = 0; var groupedicons = []; for (var i = group.length - 1; i >= 0; i--) {
            groupedicons.push(objects[group[i]]); objects[group[i]].clustered = true; if (objects[group[i]].lon < minx)
                minx = objects[group[i]].lon; if (objects[group[i]].lat < miny)
                miny = objects[group[i]].lat; if (objects[group[i]].lon > maxx)
                maxx = objects[group[i]].lon; if (objects[group[i]].lat > maxy)
                maxy = objects[group[i]].lat;
        }
        var cx = minx + (maxx - minx) / 2; var cy = miny + (maxy - miny) / 2; return { "cx": cx, "cy": cy, "cnt": group.length, "grp": groupedicons };
    }
    this.isIconInMap = function(icon1) {
        if (icon1.lon >= this.mapCoordsTopLeft.lon && icon1.lon < this.mapCoordsBottomRight.lon && icon1.lat < this.mapCoordsTopLeft.lat && icon1.lat >= this.mapCoordsBottomRight.lat)
            return true; else
            return false;
    }
    this.makeCandidatesToGroup = function(objects) {
        var clusterGroup = []; for (i = objects.length - 1; i >= 0; i--) {
            objects[i].clustered = false; if (objects[i].visible && objects[i].cluster) {
                clusterGroup = []; for (var j = i - 1; j >= 0; j--) {
                    if (objects[j].visible && this.checkIntersect(objects[i], objects[j]))
                        clusterGroup.push(j);
                }
                if (clusterGroup.length != 0) {
                    clusterGroup.push(i); for (var j = clusterGroup.length - 1; j >= 0; j--)
                        objects[clusterGroup[j]].visible = false; this._clusterMarkers.push(clusterGroup);
                } 
            } 
        } 
    } 
}
function MapgoPline() {
    this.id = 0; this.layer = 0; this.type = 2; this.coords = 0; this.color = 0; this.opacity = 0; this.weight = 0; this.dashstyle = 0; this.descr = ''; this.feature = 0; this.visible = true; this.cchangedx = 1; this.setDisplayParams = function(color, opacity, weight, dashstyle) {
        this.feature.div.style.visibility = 'hidden'; var pline_object = new MapgoPline(); var pnts = []; for (var i = this.coords.length - 1; i >= 0; i--)
            pnts[i] = this.coords[i]; pline_object.coords = pnts; pline_object.color = color; pline_object.opacity = opacity; pline_object.dashstyle = dashstyle; pline_object.weight = weight; pline_object.id = this.id; pline_object.layer = this.layer; _mmapgoobj.removeObjectFromLayer(this.layer, this); _mmapgoobj.addPlineToLayer(pline_object, this.layer.name, false);
    }
    this.setCoords = function(coords) { this.feature.div.style.visibility = 'hidden'; var pline_object = new MapgoPline(); pline_object.coords = coords; pline_object.color = this.color; pline_object.opacity = this.opacity; pline_object.dashstyle = this.dashstyle; pline_object.weight = this.weight; pline_object.id = this.id; _mmapgoobj.removeObjectFromLayer(this.layer, this); _mmapgoobj.addPlineToLayer(pline_object, this.layer.name, false); this.coords = coords; } 
}
function MapgoPolygon() {
    this.layer = 0; this.id = 0; this.type = 3; this.coords = 0; this.color = 0; this.opacity = 0; this.descr = ''; this.feature = 0; this.visible = true; this.cchangedx = 1; this.setDisplayParams = function(color, opacity) {
        this.feature.div.style.visibility = 'hidden'; var poly_object = new MapgoPolygon(); poly_object.color = color; poly_object.opacity = opacity; poly_object.id = this.id; var pnts = []; for (var i = this.coords.length - 1; i >= 0; i--)
            pnts[i] = this.coords[i]; poly_object.coords = pnts; _mmapgoobj.removeObjectFromLayer(this.layer, this); _mmapgoobj.addPolygonToLayer(poly_object, this.layer.name, false);
    }
    this.setCoords = function(coords) { this.feature.div.style.visibility = 'hidden'; var poly_object = new MapgoPolygon(); poly_object.coords = coords; poly_object.color = this.color; poly_object.opacity = this.opacity; poly_object.id = this.id; poly_object.coords = coords; _mmapgoobj.removeObjectFromLayer(this.layer, this); _mmapgoobj.addPolygonToLayer(poly_object, this.layer.name, false); this.coords = coords; } 
}
function MapgoPoiQuery() { var query = "POI_QUERY"; var lon = 0; var lat = 0; var idcat = ""; var idsubcat = ""; var idsubcatbrand = ""; var cnt = 0; var type = 0; var minx = 99999; var miny = 99999; var maxx = 99999; var maxy = 99999; }
function MapgoObject() {
    this._mapgo_response = ''; this.upperTilesDir = ''; this.map_posx = 0; this.map_posy = 0; this._131 = '2d5a5922-d869-4e96-b400-b97aa5b7e952'; this.state_founded = 0; this.position_started = false; this.ICON_LAYER = 1; this.PLINE_LAYER = 2; this.___trasa = new Array(); this.dragging_rubber = false; this.last_g_x = 0; this.last_g_y = 0; this.LayersIds = new Array(); this.start_centercalkx = 0; this.start_centercalky = 0; this.curr_centercalkx = 0; this.curr_centercalky = 0; this.routePoints = 0; this.lost_focus = false; this.choosedCityId = ''; this.choosedStreetId = ''; this.offx = 0; this.offy = 0; this.roznicax = 0; this.roznicay = 0; this.route_offx = 0; this.route_offy = 0; this.route_x = 0; this.route_y = 0; this.block_events = false; this.map_width = 0; this.map_height = 0; this.opera_browser = false; this.curr_center_lon = 0; this.curr_center_lat = 0; this.lost_mouse_x = 0; this.lost_mouse_y = 0; this.min_scale = 3; this.max_scale = 17; this.kafelx = 2910; this.kafely = 1230; this.minx = 2910; this.miny = 1230; this.maxx = 2969; this.maxy = 1289; this.sectionWidth = 30; this.sectionHeight = 30; this.scalex = new Array(6, 9, 12, 18, 24, 36, 48, 72, 96, 144, 192, 384, 768, 1536, 3072, 6144, 12288, 24576, 49152, 98304); this.scaley = new Array(4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536); this.currscale = 1; this.imageViewerObject = 0; this.tileDirG = ''; this.tileSizeG = 0; this.moving = false; this.changetiles = true; this.pilotpl = true; this._curr_route_startx = 0; this._curr_route_starty = 0; this._curr_route_endx = 0; this._curr_route_endy = 0; this.mapLayers = []; this.IFrameObj; this.mainOffX = -200000; this.mainOffY = -200000; this.OmainOffX = -4200; this.OmainOffY = -4200; this.mainWidth = (-2) * this.mainOffX; this.mainHeight = (-2) * this.mainOffY; this.featureClicked = false; this.setIconPos = function(lon, lat, mapgo_icon) { if (mapgo_icon) { this.hideTip(); var calk_coordsc = this.przeliczCalkPiksel(this.curr_center_lon, this.curr_center_lat); var screen_coords = this.makeScreenRouteCoord(lon, lat, calk_coordsc.x, calk_coordsc.y); mapgo_icon.feature.x = screen_coords.x; mapgo_icon.feature.y = screen_coords.y; mapgo_icon.feature.lon = lon; mapgo_icon.feature.lat = lat; mapgo_icon.feature.div.style.left = (mapgo_icon.feature.x + mapgo_icon.feature.icon_offx) + 'px'; mapgo_icon.feature.div.style.top = (mapgo_icon.feature.y + mapgo_icon.feature.icon_offy) + 'px'; return { "x": (mapgo_icon.feature.x + mapgo_icon.feature.icon_offx), "y": (mapgo_icon.feature.y + mapgo_icon.feature.icon_offy) }; } }
    this.setBaseTilesDir = function(ndir) { this.imageViewerObject.dimensions.tileDir = ndir; this.reloadTiles(this.imageViewerObject.start.x, this.imageViewerObject.start.y, true); }
    this.setUpperTilesDir = function(tdir) { this.upperTilesDir = tdir; }
    this.changeUpperTilesDir = function(tdir) { this.upperTilesDir = tdir; this.imageViewerObject.dimensions.tileDir1 = tdir; this.reloadTiles(this.imageViewerObject.start.x, this.imageViewerObject.start.y, true); }
    this.getEvent = function(event) {
        if (!event) { return window.event; }
        else
            return event;
    }
    this.setCursorMode = function(mode, listener_function) {
        mode = mode.toLowerCase(); if (mode == 'rubber') { this.setRubber(); }
        if (mode == 'hand') { this.setMoveMap(); this.dragging_rubber = false; }
        if (mode == 'ageo') {
            this.setAgeo(); if (listener_function)
                this._callback_ageo_resp_function = listener_function;
        } 
    }
    this.localizeCoordinates = function(imageViewer, client) {
        if (document.documentElement && document.documentElement.scrollTop) { client.y = client.y + document.documentElement.scrollTop; client.x = client.x + document.documentElement.scrollLeft; }
        else
            if (document.body && document.body.scrollTop) { client.y = client.y + document.body.scrollTop; client.x = client.x + document.body.scrollLeft; }
        var local = { 'x': client.x, 'y': client.y }; for (var node = imageViewer; node; node = node.offsetParent) { local.x -= node.offsetLeft; local.y -= node.offsetTop; }
        return local;
    }
    this._mapgo_stop_move_map = false; this.setStopMoveMap = function(flag) { this._mapgo_stop_move_map = flag; }
    this.resize = function(nwidth, nheight) { if (this.imageViewerObject && nwidth > 100 && nheight > 100) { var ckafel = this.getCenterKafel(this.imageViewerObject.dimensions.width / 2, this.imageViewerObject.dimensions.height / 2); var convlonlat = this.screenToLonLat(this.currscale, ckafel.x, ckafel.y, ckafel.kx, ckafel.ky); this.imageViewerObject.style.width = '' + nwidth + 'px'; this.imageViewerObject.style.height = '' + nheight + 'px'; this.imageViewerObject.dimensions.width = nwidth; this.imageViewerObject.dimensions.height = nheight; this.removeTiles(); this.maxkafle = 0; this.prepareTiles(this.imageViewerObject); this.centerTo(convlonlat.lon, convlonlat.lat, this.currscale); this.recalculateLayersCoords(); document.getElementById("_mapgo_powered_txt").style.left = (this.map_posx + nwidth - 325) + 'px'; document.getElementById("_mapgo_powered_txt").style.top = (this.map_posy + nheight - 21) + 'px'; document.getElementById("_mapgo_logo").style.left = (this.map_posx + 1) + 'px'; document.getElementById("_mapgo_logo").style.top = (this.map_posy + nheight - 41) + 'px'; } }
    this.getTipStyle = function() { return document.getElementById('mapgo_tip_txt').style; }
    this.centerMap = function(lon, lat, scale) {
        if (!scale) {
            if (this.currscale != 0)
                this.centerTo(lon, lat, this.currscale); else
                this.centerTo(lon, lat, 17);
        }
        else
            this.centerTo(lon, lat, scale); this.recalculateLayersCoords();
    }
    this.__change_scale_callback = 0; this.__move_map_callback = 0; this.setChangeScaleCallback = function(callback_fn) { this.__change_scale_callback = callback_fn; }
    this.setMoveMapCallback = function(callback_fn) { this.__move_map_callback = callback_fn; }
    this.centerTo = function(lon, lat, scale) {
        this.manageUpperLayer('hidden'); this.resetKafle(); var cscale = this.currscale; _mmapgoobj.hideTip(); if (Math.abs(lon) < 100)
            lon = Math.floor(lon * 1000000 + 0.5); if (lat < 100)
            lat = Math.floor(lat * 1000000 + 0.5); this.imageViewerObject = document.body.imageViewers[0]; if (this.imageViewerObject) {
            if (scale < this.min_scale)
                scale = this.min_scale; if (scale > this.max_scale)
                scale = this.max_scale; if (scale == this.max_scale) { lon = 21500000; lat = 51900000; }
            this.curr_center_lon = lon; this.curr_center_lat = lat; if (scale)
                this.currscale = scale; var calk_coordsc = this.przeliczCalkPiksel(this.curr_center_lon, this.curr_center_lat); this.curr_centercalkx = parseInt(calk_coordsc.x); this.curr_centercalky = parseInt(calk_coordsc.y); this.start_centercalkx = this.curr_centercalkx; this.start_centercalky = this.curr_centercalky; var positions = this.lonLatToScreen(lon, lat, scale); this.kafelx = positions.kx; this.kafely = positions.ky; this.imageViewerObject.start = { 'x': 0, 'y': 0 }; this.imageViewerObject.dimensions.x = Math.floor(this.imageViewerObject.dimensions.width / 2) - positions.x; this.imageViewerObject.dimensions.y = Math.floor(this.imageViewerObject.dimensions.height / 2 - this.tileSizeG) + positions.y; if (this.pilotpl == true)
                this.changetiles = true; this.positionTiles(this.imageViewerObject, { 'x': 0, 'y': 0 }); this.manageLayersVisibility(); this.manageLayersClustering(); if (cscale != scale && this.__change_scale_callback && !this.block_events)
                this.__change_scale_callback(); if (_mmapgoobj.__move_map_callback && !_mmapgoobj.block_events) { _mmapgoobj.__move_map_callback(); } 
        }
        if (this.map_mode == 2 || this.map_mode == 4)
            window.setTimeout("_mmapgoobj.manageUpperLayer('visible')", 600);
    }
    this.hideLayersWhenMove = function() { for (var i = this.mapLayers.length - 1; i >= 0; i--) { if (this.mapLayers[i].hide_when_move && this.mapLayers[i].visible) { this.mapLayers[i].h_w_m = true; this.mapLayers[i].div.style.visibility = 'hidden'; this.mapLayers[i].label_div.style.visibility = 'hidden'; } } }
    this.showLayersWhenMove = function() { for (var i = this.mapLayers.length - 1; i >= 0; i--) { if (this.mapLayers[i].h_w_m && this.mapLayers[i].visible && (this.mapLayers[i].scale_from <= this.currscale && this.mapLayers[i].scale_to >= this.currscale)) { this.mapLayers[i].h_w_m = false; this.mapLayers[i].div.style.visibility = 'visible'; this.mapLayers[i].label_div.style.visibility = 'visible'; } } }
    this.manageLayersVisibility = function() {
        for (var i = this.mapLayers.length - 1; i >= 0; i--) {
            if (this.currscale < this.mapLayers[i].scale_from || this.currscale > this.mapLayers[i].scale_to) { this.mapLayers[i].div.style.visibility = 'hidden'; this.mapLayers[i].label_div.style.visibility = 'hidden'; }
            else
                if (this.mapLayers[i].visible) { this.showLayerByName(this.mapLayers[i].name); } 
        } 
    }
    this.manageLayersClustering = function() {
        for (var i = this.mapLayers.length - 1; i >= 0; i--) {
            if (this.mapLayers[i].cluster)
                this.mapLayers[i].clusterIcons(true);
        } 
    }
    this.moveLeft = function(cnt) {
        _mmapgoobj.hideTip(); _mmapgoobj.hideLayersWhenMove(); var temp = cnt; this.moving = true; var wsp = 0; if (cnt > 6)
            wsp = 0.4; else
            wsp = 0.2; var halfw = Math.floor(this.imageViewerObject.dimensions.width / 2); this.imageViewerObject = document.body.imageViewers[0]; this.imageViewerObject.start = this.localizeCoordinates(this.imageViewerObject, { 'x': halfw, 'y': 0 }); if (this.imageViewerObject && temp > 0 && this.imageViewerObject.pressed == false) { var mouse = this.localizeCoordinates(this.imageViewerObject, { 'x': halfw + wsp * halfw, 'y': 0 }); this.positionTiles(this.imageViewerObject, { 'x': mouse.x, 'y': mouse.y }, true); this.moveStraight(wsp * halfw, 0); temp--; this.imageViewerObject.dimensions.x += 0.2 * halfw; window.setTimeout("_mmapgoobj.moveLeft(" + temp + ")", 1); }
        else { this.moving = false; }
        if (this.pilotpl == true && temp == 0) { this.reloadTiles(this.imageViewerObject.start.x, this.imageViewerObject.start.y, true); var ncenter = this.convertScreenToGeo(this.imageViewerObject.dimensions.width / 2, this.imageViewerObject.dimensions.height / 2); this.curr_center_lon = ncenter.lon; this.curr_center_lat = ncenter.lat; }
        if (!this.moving && _mmapgoobj.__move_map_callback && !_mmapgoobj.block_events)
            _mmapgoobj.__move_map_callback(); if (!this.moving) { _mmapgoobj.manageLayersClustering(); _mmapgoobj.showLayersWhenMove(); } 
    }
    this.moveRight = function(cnt) {
        _mmapgoobj.hideTip(); _mmapgoobj.hideLayersWhenMove(); var temp = cnt; this.moving = true; var halfw = Math.floor(this.imageViewerObject.dimensions.width / 2); var wsp = 0; this.imageViewerObject = document.body.imageViewers[0]; this.imageViewerObject.start = this.localizeCoordinates(this.imageViewerObject, { 'x': halfw, 'y': 0 }); if (cnt > 6)
            wsp = 0.4; else
            wsp = 0.2; if (this.imageViewerObject && temp > 0 && this.imageViewerObject.pressed == false) { var mouse = this.localizeCoordinates(this.imageViewerObject, { 'x': halfw - wsp * halfw, 'y': 0 }); this.positionTiles(this.imageViewerObject, { 'x': mouse.x, 'y': mouse.y }, true); this.moveStraight(-wsp * halfw, 0); temp--; this.imageViewerObject.dimensions.x -= 0.2 * halfw; window.setTimeout("_mmapgoobj.moveRight(" + temp + ")", 1); }
        else { this.moving = false; }
        if (this.pilotpl == true && temp == 0) { this.reloadTiles(this.imageViewerObject.start.x, this.imageViewerObject.start.y, true); var ncenter = this.convertScreenToGeo(this.imageViewerObject.dimensions.width / 2, this.imageViewerObject.dimensions.height / 2); this.curr_center_lon = ncenter.lon; this.curr_center_lat = ncenter.lat; }
        if (!this.moving && _mmapgoobj.__move_map_callback && !_mmapgoobj.block_events)
            _mmapgoobj.__move_map_callback(); if (!this.moving) { _mmapgoobj.manageLayersClustering(); _mmapgoobj.showLayersWhenMove(); } 
    }
    this.moveDown = function(cnt) {
        var temp = cnt; _mmapgoobj.hideTip(); _mmapgoobj.hideLayersWhenMove(); this.moving = true; var wsp = 0; if (cnt > 6)
            wsp = 0.4; else
            wsp = 0.2; var halfh = Math.floor(this.imageViewerObject.dimensions.height / 2); this.imageViewerObject = document.body.imageViewers[0]; this.imageViewerObject.start = this.localizeCoordinates(this.imageViewerObject, { 'x': 0, 'y': halfh }); if (this.imageViewerObject && temp > 0 && this.imageViewerObject.pressed == false) { var mouse = this.localizeCoordinates(this.imageViewerObject, { 'x': 0, 'y': halfh - wsp * halfh }); this.positionTiles(this.imageViewerObject, { 'x': mouse.x, 'y': mouse.y }, true); this.moveStraight(0, -wsp * halfh); temp--; this.imageViewerObject.dimensions.y -= 0.2 * halfh; window.setTimeout("_mmapgoobj.moveDown(" + temp + ")", 1); }
        else
            this.moving = false; if (this.pilotpl == true && temp == 0) { this.reloadTiles(this.imageViewerObject.start.x, this.imageViewerObject.start.y, true); var ncenter = this.convertScreenToGeo(this.imageViewerObject.dimensions.width / 2, this.imageViewerObject.dimensions.height / 2); this.curr_center_lon = ncenter.lon; this.curr_center_lat = ncenter.lat; }
        if (!this.moving && _mmapgoobj.__move_map_callback && !_mmapgoobj.block_events)
            _mmapgoobj.__move_map_callback(); if (!this.moving) { _mmapgoobj.manageLayersClustering(); _mmapgoobj.showLayersWhenMove(); } 
    }
    this.moveUp = function(cnt) {
        var temp = cnt; _mmapgoobj.hideTip(); _mmapgoobj.hideLayersWhenMove(); this.moving = true; var wsp = 0; if (cnt > 6)
            wsp = 0.4; else
            wsp = 0.2; var halfh = Math.floor(this.imageViewerObject.dimensions.height / 2); this.imageViewerObject = document.body.imageViewers[0]; this.imageViewerObject.start = this.localizeCoordinates(this.imageViewerObject, { 'x': 0, 'y': halfh }); if (this.imageViewerObject && temp > 0 && this.imageViewerObject.pressed == false) { var mouse = this.localizeCoordinates(this.imageViewerObject, { 'x': 0, 'y': halfh + wsp * halfh }); this.positionTiles(this.imageViewerObject, { 'x': mouse.x, 'y': mouse.y }, true); this.moveStraight(0, wsp * halfh); temp--; this.imageViewerObject.dimensions.y += 0.2 * halfh; window.setTimeout("_mmapgoobj.moveUp(" + temp + ")", 1); }
        else
            this.moving = false; if (this.pilotpl == true && temp == 0) { this.reloadTiles(this.imageViewerObject.start.x, this.imageViewerObject.start.y, true); var ncenter = this.convertScreenToGeo(this.imageViewerObject.dimensions.width / 2, this.imageViewerObject.dimensions.height / 2); this.curr_center_lon = ncenter.lon; this.curr_center_lat = ncenter.lat; }
        if (!this.moving && _mmapgoobj.__move_map_callback && !_mmapgoobj.block_events)
            _mmapgoobj.__move_map_callback(); if (!this.moving) { _mmapgoobj.manageLayersClustering(); _mmapgoobj.showLayersWhenMove(); } 
    }
    this.splitStreetNo = function(streetno) {
        var street = '';
        var no = '';
        streetno = streetno.replace(',', ' ');
        streetno = streetno.toLowerCase();
        if (streetno.lastIndexOf(" ") > 0) {
            var tmp = streetno.substring(streetno.lastIndexOf(" ") + 1);
            if (!parseInt(tmp))
                return { 'street': streetno, 'no': 1 }; 
                street = streetno.substring(0, streetno.lastIndexOf(" ")); 
                if (street == 'ulica')
                street = 'xfsggxbs'; no = streetno.substring(streetno.lastIndexOf(" ") + 1);
        }
        else { street = streetno; no = '1'; }
        return { 'street': street, 'no': no };
    }
    this.lonLatToScreen = function(lon, lat, scale_num) {
        scale_num -= 1; if (Math.abs(lon) < 100)
            lon = Math.floor(lon * 1000000 + 0.5); if (lat < 100)
            lat = Math.floor(lat * 1000000 + 0.5); var px = 0; if (lon >= 0)
            px = Math.floor((lon - (-12000000)) / this.scalex[scale_num]); else
            px = Math.floor((12000000 + lon) / this.scalex[scale_num]); var py = Math.floor((lat - 34000000) / this.scaley[scale_num]); var outv = new Array(); outv[0] = Math.floor(px / 250); outv[1] = Math.floor(py / 250); outv[2] = px - outv[0] * 250; outv[3] = py - outv[1] * 250; return { 'kx': Math.floor(px / 250), 'ky': Math.floor(py / 250), 'x': (px - outv[0] * 250), 'y': (py - outv[1] * 250) };
    }
    this.screenToLonLat = function(scale_num, x, y, kafelx, kafely) { scale_num -= 1; var px = kafelx * 250 + x; var py = kafely * 250 + y; var outv = new Array(); outv[0] = px * this.scalex[scale_num] + (-12000000); outv[1] = py * this.scaley[scale_num] + 34000000; return { 'lon': (px * this.scalex[scale_num] + (-12000000)), 'lat': (py * this.scaley[scale_num] + 34000000) }; }
    this.changeScale = function(scale_num) {
        if (scale_num < this.min_scale)
            scale_num = this.min_scale; if (scale_num > this.max_scale)
            scale_num = this.max_scale; scale_num -= 1; var tiles = this.imageViewerObject.tiles; var dim = this.imageViewerObject.dimensions; if (scale_num >= 0 && scale_num <= 20 && (scale_num + 1) != this.currscale) { var convlonlat = _mmapgoobj.convertScreenToGeo(this.imageViewerObject.dimensions.width / 2, this.imageViewerObject.dimensions.height / 2); this.centerTo(convlonlat.lon, convlonlat.lat, scale_num + 1); this.recalculateLayersCoords(); } 
    }
    this.convertScreenToGeo = function(screenx, screeny) {
        var coords = this.getCenterKafel(screenx, screeny); if (coords) { var convlonlat = this.screenToLonLat(this.currscale, coords.x, coords.y, coords.kx, coords.ky); convlonlat.lon = convlonlat.lon / 1000000; convlonlat.lat = convlonlat.lat / 1000000; return convlonlat; } else
            return { "lon": 0, "lat": 0 };
    }
    this.convertGeoToScreen = function(lon, lat) {
        if (Math.abs(lon) < 100)
            lon = Math.floor(lon * 1000000 + 0.5); if (lat < 100)
            lat = Math.floor(lat * 1000000 + 0.5); var mapscrx = this.imageViewerObject.dimensions.width / 2; var mapscry = this.imageViewerObject.dimensions.height / 2; var loc_center = { "x": mapscrx, "y": mapscry }; var calk_coordsc = this.przeliczCalkPiksel(this.curr_center_lon, this.curr_center_lat); var screenc = this.przeliczCalkPiksel(lon, lat); screenc.x = screenc.x - calk_coordsc.x; screenc.y = screenc.y - calk_coordsc.y; screenc.x = loc_center.x + screenc.x; screenc.y = loc_center.y - screenc.y; return { "x": Math.round(screenc.x), "y": Math.round(screenc.y) };
    }
    this.prepareViewer = function(imageViewer, tileDir, tileDir1, tileSize, nsectionWidth, nsectionHeight, w, h) {
        this.imageViewerObject = imageViewer; this.sectionWidth = nsectionWidth; this.sectionHeight = nsectionHeight; this.tileSizeG = tileSize; this.tileDirG = tileDir; for (var child = imageViewer.firstChild; child; child = child.nextSibling) { if (child.className == 'mapgosurface') { imageViewer.activeSurface = child; child.imageViewer = imageViewer; } else if (child.className == 'mapgowell') { imageViewer.tileWell = child; child.imageViewer = imageViewer; } else if (child.className == 'status') { imageViewer.status = child; child.imageViewer = imageViewer; } }
        var width = w; var height = h; var zoomLevel = -1; var fullSize = tileSize * Math.pow(2, zoomLevel); do { zoomLevel += 1; fullSize *= 2; } while (fullSize < Math.max(width, height)); var center = { 'x': ((fullSize - width) / -2), 'y': ((fullSize - height) / -2) }; imageViewer.style.width = width + 'px'; imageViewer.style.height = height + 'px'; var top = 0; var left = 0; for (var node = imageViewer; node; node = node.offsetParent) { top += node.offsetTop; left += node.offsetLeft; }
        imageViewer.dimensions = { 'width': width, 'height': height, 'top': top, 'left': left, 'tileDir': tileDir, 'tileDir1': tileDir1, 'tileSize': tileSize, 'zoomLevel': zoomLevel, 'x': 0, 'y': 0 }; imageViewer.start = { 'x': 0, 'y': 0 }; imageViewer.pressed = false; if (document.body.imageViewers == undefined) { document.body.imageViewers = [imageViewer]; } else { document.body.imageViewers.push(imageViewer); }
        this.maxkafle = 0; this.prepareTiles(imageViewer);
    }
    this.prepareTiles = function(imageViewer) {
        var activeSurface = imageViewer.activeSurface; var tileWell = imageViewer.tileWell; var dim = imageViewer.dimensions; imageViewer.tiles = []; imageViewer.tiles1 = []; var rows = Math.ceil(dim.height / dim.tileSize) + 1; var cols = Math.ceil(dim.width / dim.tileSize) + 1; for (var c = 0; c < cols; c += 1) {
            var tileCol = []; for (var r = 0; r < rows; r += 1) {
                var tile = { 'c': c, 'r': r, 'img': document.createElement('img'), 'imageViewer': imageViewer, 'nx': c, 'ny': r, 'kx': 0, 'ky': 0 }; tile.img.className = 'mapgotile'; tile.img.style.width = dim.tileSize + 'px'; tile.img.style.height = dim.tileSize + 'px'; if (this.currscale == 18)
                    tile.img.src = dim.tileDir + '/brak1.png'; else
                    tile.img.src = dim.tileDir + '/ajax-loading.gif'; tileWell.appendChild(tile.img); tileCol.push(tile); this.maxkafle++;
            }
            imageViewer.tiles.push(tileCol);
        }
        for (var c = 0; c < cols; c += 1) {
            var tileCol = []; for (var r = 0; r < rows; r += 1) { var tile = { 'c': c, 'r': r, 'img': document.createElement('img'), 'imageViewer': imageViewer, 'nx': c, 'ny': r, 'kx': 0, 'ky': 0 }; tile.img.className = 'mapgotile'; tile.img.style.width = dim.tileSize + 'px'; tile.img.style.height = dim.tileSize + 'px'; tile.img.src = dim.tileDir + '/ajax-loading.gif'; tileWell.appendChild(tile.img); tileCol.push(tile); }
            imageViewer.tiles1.push(tileCol);
        }
        activeSurface.onmousedown = this.pressViewer; document.body.onmouseup = this.releaseViewer;
    }
    this.maxkafle = 0; this.loaded_counter = 0; this.kafleLoad = function() {
        this.loaded_counter++; if (this.loaded_counter == this.maxkafle)
        { alert('zaladowalem wszystkie'); } 
    }
    this._ondoubleclick_function = 0; this.setDoubleClickFunction = function(function_name) { this._ondoubleclick_function = function_name; }
    this.doubleClicked = function() {
        if (this._ondoubleclick_function)
            this._ondoubleclick_function();
    }
    this.searchLayer = function(layername) {
        for (var i = 0; i < this.mapLayers.length; i++) {
            if (this.mapLayers[i].name == layername)
                return this.mapLayers[i];
        }
        return null;
    }
    this.addFeatureToLayer = function(layerid, feature) {
        for (var i = 0; i < this.mapLayers.length; i++) {
            if (this.mapLayers[i].id == layerid) {
                feature.id = layerid + feature.id; feature.div.id = feature.id; this.mapLayers[i].features.push(feature); this.mapLayers[i].div.appendChild(feature.div); if (feature.label_div)
                    this.mapLayers[i].label_div.appendChild(feature.label_div); return this.mapLayers[i];
            } 
        } 
    }
    this.createPolygonFeature = function(id, coords, r, g, b, weight, opacity, descr, polygon) {
        var feature = { 'id': '_f_' + id, 'offx': 0, 'offy': 0, 'R': r, 'G': g, 'B': b, 'weight': weight, 'opacity': opacity, 'coords': coords, 'div': document.createElement('div'), 'descr': document.createElement('div'), 'type': 3, 'x': 0, 'y': 0 }; var calk_coordsc = this.przeliczCalkPiksel(this.curr_center_lon, this.curr_center_lat); feature.div.id = feature.id; var screen_coords = this.makeScreenRouteCoords(coords, calk_coordsc.x, calk_coordsc.y); var xy = this.PointEqualFilter(screen_coords); var spt = ''; var plineid = ('pline_f_' + id); if (document.all && !this.opera_browser) { spt = this.XYtoSTR1(xy, 0, 0); feature.div.innerHTML = '<v:polyline id="' + plineid + '"/>'; this.imageViewerObject.activeSurface.appendChild(feature.div); var opl = feature.div.childNodes[0]; opl.points.value = spt; opl.stroke.color = "none"; opl.stroke.weight = 5; opl.stroke.opacity = opacity; opl.fill.opacity = opacity; opl.stroke.endcap = "flat"; opl.fill.color = "RGB(" + r + "," + g + "," + b + ")"; }
        else {
            feature.div.style.overflow = 'visible'; if (this.opera_browser) { spt = this.XYtoSTR1(xy, this.OmainOffX, this.OmainOffY); feature.div.style.left = this.OmainOffX + 'px'; feature.div.style.top = this.OmainOffY + 'px'; }
            else { spt = this.XYtoSTR1(xy, this.mainOffX, this.mainOffY); feature.div.style.left = this.mainOffX + 'px'; feature.div.style.top = this.mainOffY + 'px'; }
            feature.div.style.position = 'absolute'; var svgNamespace = 'http://www.w3.org/2000/svg'; var container = feature.div; var layers = document.getElementById('layers'); var svgRoot = container.ownerDocument.createElementNS(svgNamespace, "svg"); container.appendChild(svgRoot); svgRoot.setAttribute("width", this.mainWidth); svgRoot.setAttribute("height", this.mainHeight); var svg; var svgNamespace = "http://www.w3.org/2000/svg"; svg = container.ownerDocument.createElementNS(svgNamespace, "polygon"); svg.setAttribute("id", plineid); svg.setAttribute("points", spt); svg.setAttribute("stroke", "rgb(" + r + "," + g + "," + b + ")"); svg.setAttribute("fill", "rgb(" + r + "," + g + "," + b + ")"); svg.setAttribute("stroke-width", 0); svg.setAttribute("stroke-opacity", opacity); svg.setAttribute("fill-opacity", opacity); svg.setAttribute("stroke-linecap", "round"); svg.setAttribute("stroke-linejoin", "round"); svgRoot.appendChild(svg);
        }
        feature.descr.innerHTML = descr; feature.descr.style.display = 'none'; polygon.feature = feature; return feature;
    }
    this.addPolygonsToMap = function(object_list, layer_name, position_map, scale_from, scale_to, hide_when_move) {
        for (var i = object_list.length - 1; i >= 0; i--) {
            for (var j = object_list[i].coords.length - 1; j >= 0; j--) {
                if (Math.abs(object_list[i].coords[j].lon) < 100)
                    object_list[i].coords[j].lon = Math.floor(object_list[i].coords[j].lon * 1000000 + 0.5); if (object_list[i].coords[j].lat < 100)
                    object_list[i].coords[j].lat = Math.floor(object_list[i].coords[j].lat * 1000000 + 0.5);
            } 
        }
        var lid = this.createLayerId(); if (position_map)
            this.positionMap(object_list); var l = this.createLayer(lid, layer_name, this.PLINE_LAYER, scale_from, scale_to, hide_when_move); this.imageViewerObject.activeSurface.appendChild(l.div); if (l) {
            this.mapLayers.push(l); var id = 0; for (var i = 0; i < object_list.length; i++) {
                if (object_list[i].id == 0)
                    id = i + 1; else
                    id = object_list[i].id; object_list[i].id = id; var pline = this.createPolygonFeature(id, object_list[i].coords, object_list[i].color.R, object_list[i].color.G, object_list[i].color.B, object_list[i].weight, object_list[i].opacity, '', object_list[i]); this.addFeatureToLayer(l.id, pline); object_list[i].layer = l;
            } 
        }
        this.showLayerByName(layer_name); this.manageLayersVisibility(); return l;
    }
    this.createPlineFeature = function(id, coords, r, g, b, weight, opacity, descr, dashstyle, pline) {
        var feature = { 'id': '_f_' + id, 'offx': 0, 'offy': 0, 'R': r, 'G': g, 'B': b, 'weight': weight, 'opacity': opacity, 'coords': coords, 'div': document.createElement('div'), 'descr': document.createElement('div'), 'type': 2, 'x': 0, 'y': 0 }; var calk_coordsc = this.przeliczCalkPiksel(this.curr_center_lon, this.curr_center_lat); feature.div.id = feature.id; var spt = ''; var plineid = ('pline_f_' + id); if (document.all && !this.opera_browser) {
            spt = this.makeScreenRouteCoords1(coords, calk_coordsc.x, calk_coordsc.y, 0, 0, true); feature.div.innerHTML = '<v:polyline id="' + plineid + '"/>'; this.imageViewerObject.activeSurface.appendChild(feature.div); var opl = feature.div.childNodes[0]; opl.points.value = spt; opl.stroke.color = "RGB(" + r + "," + g + "," + b + ")"; var style = "solid"; switch (dashstyle) { case 1: style = "shortdash"; break; case 2: style = "shortdot"; break; }
            opl.stroke.dashstyle = style; opl.stroke.weight = weight; opl.stroke.opacity = opacity; opl.stroke.endcap = "round"; opl.fill.color = "none";
        }
        else {
            feature.div.style.overflow = 'visible'; if (this.opera_browser) { spt = this.makeScreenRouteCoords1(coords, calk_coordsc.x, calk_coordsc.y, this.OmainOffX, this.OmainOffY, false); feature.div.style.left = this.OmainOffX + 'px'; feature.div.style.top = this.OmainOffY + 'px'; }
            else { spt = this.makeScreenRouteCoords1(coords, calk_coordsc.x, calk_coordsc.y, this.mainOffX, this.mainOffY, false); feature.div.style.left = this.mainOffX + 'px'; feature.div.style.top = this.mainOffY + 'px'; }
            feature.div.style.position = 'absolute'; var svgNamespace = 'http://www.w3.org/2000/svg'; var container = feature.div; var layers = document.getElementById('layers'); var svgRoot = container.ownerDocument.createElementNS(svgNamespace, "svg"); container.appendChild(svgRoot); svgRoot.setAttribute("width", this.mainWidth); svgRoot.setAttribute("height", this.mainHeight); var svg; var svgNamespace = "http://www.w3.org/2000/svg"; svg = container.ownerDocument.createElementNS(svgNamespace, "polyline"); svg.setAttribute("id", plineid); svg.setAttribute("points", spt); svg.setAttribute("stroke", "rgb(" + r + "," + g + "," + b + ")"); svg.setAttribute("fill", "none"); svg.setAttribute("stroke-width", weight); svg.setAttribute("stroke-opacity", opacity); svg.setAttribute("stroke-linecap", "round"); if (dashstyle == 2)
                svg.setAttribute("stroke-dasharray", "1,9"); if (dashstyle == 1)
                svg.setAttribute("stroke-dasharray", "9,9"); svg.setAttribute("stroke-linejoin", "round"); svgRoot.appendChild(svg);
        }
        feature.descr.innerHTML = descr; feature.descr.style.display = 'none'; pline.feature = feature; return feature;
    }
    this._icon_pressed = false; this._onclick_ended = false; this._after_show_tip_callback = 0; this.setAfterTipShow = function(function_name) { this._after_show_tip_callback = function_name; }
    this.last_div_tip = 0; this.queryPoiInfo = function(id) { var pq = new MapgoPoiQuery(); pq.query = 'POI_INFO_QUERY'; pq.id = id; var qstring = "key=" + this._131 + "&type=app&poiq=" + JSON.stringify(pq); this.callToServer(qstring, '_mmapgoobj.fnWhenPoiInfo'); }
    this.__mapgo_poi_info_query = 0; this.setObjectInfoQuery = function(callback) { this.__mapgo_poi_info_query = callback; }
    this.__mapgo_poi_info_callback = 0; this.setPoiInfoCallback = function(callback_function) { this.__mapgo_poi_info_callback = callback_function; }
    this.fnWhenPoiInfo = function(resp_obj) {
        ans = JSON.stringify(_mmapgoobj._mapgo_response); if (ans != '') {
            var json_ans = JSON.parse(ans); if (this.__mapgo_poi_info_callback)
                this.__mapgo_poi_info_callback(json_ans); else { var descr = "<b>kategoria : </b>" + json_ans.nk + "<br><b>nazwa : </b>" + json_ans.n1 + "<br><b>adres : </b>" + json_ans.a + "<br><b>miejscowość : </b>" + json_ans.kp + "<br><b>tel. : </b>" + json_ans.t + "<br><b>www : </b>" + json_ans.www + "<br><b>info : </b>" + json_ans.i; document.getElementById("mapgo_tip_txt").innerHTML = descr; } 
        } 
    }
    this.createIconFeature = function(id, width, height, descr, lon, lat, imgsrc, classname, type, icon_offx, icon_offy, tip_w, tip_h, onclick_function, icon_id, dragable, afterdrag_function, mapgo_icon, POI) {
        var feature = { 'icon_id': icon_id, 'id': '_f_' + id, 'width': width, 'height': height, 'descr': descr, 'lon': lon, 'lat': lat, 'x': -1, 'y': -1, 'offx': 0, 'offy': 0, 'imgsrc': imgsrc, 'classname': classname, 'img': document.createElement('img'), 'div': document.createElement('div'), 'descr': document.createElement('div'), 'imageViewer': this.imageViewerObject, 'type': 1, 'kafelx': 0, 'kafel': 0, 'xink': 0, 'yink': 0, 'icon_offx': icon_offx, 'icon_offy': icon_offy, 'mapgoicon': mapgo_icon, 'label_div': 0, 'label_pos': mapgo_icon.label_pos }; var screenc = this.convertGeoToScreen(lon, lat); feature.x = screenc.x; feature.y = screenc.y; feature.img.style.position = 'relative'; feature.img.style.left = '0px'; feature.img.style.top = '0px'; feature.img.style.border = 0; feature.img.border = 0; feature.img.style.width = width + 'px'; feature.img.style.height = height + 'px'; feature.img.id = '' + icon_id; feature.img.src = imgsrc; feature.img.style.zIndex = 5000; if (__isIE6) { feature.img.src = 'http://www.geoserwer.pl/api/gfx/blank.gif'; feature.img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + imgsrc + "',sizingMethod='scale')"; }
        feature.div.id = feature.id; feature.div.style.position = 'absolute'; feature.div.style.left = (feature.x + feature.icon_offx) + 'px'; feature.div.style.top = (feature.y + feature.icon_offy) + 'px'; feature.div.style.width = width + 'px'; feature.div.style.height = height + 'px'; feature.descr.id = 'd_' + feature.id; feature.div.style.cursor = 'pointer'; feature.div.onmousedown = function(evt) {
            if (feature.mapgoicon.dragable)
            { _mmapgoobj.featureClicked = true; _mmapgoobj._mapgo_moved_icon = feature; _mmapgoobj.startDragIcon(evt, afterdrag_function); } else {
                if (mapgo_icon.show_tip_state == 1 && descr.length > 0) {
                    if (tip_w && tip_h && tip_w > 0 && tip_h > 0) {
                        if (POI != undefined && POI) {
                            if (_mmapgoobj.last_div_tip != this) {
                                _mmapgoobj.hideTip(); if (!_mmapgoobj.dragging_rubber)
                                { _mmapgoobj.makeTip('<img src="http://www.geoserwer.pl/api/gfx/loading_poi.gif">', tip_w, tip_h); _mmapgoobj.positionTip(this); }
                                _mmapgoobj.last_div_tip = this; _mmapgoobj.queryPoiInfo(id); if (_mmapgoobj._after_show_tip_callback != 0)
                                    _mmapgoobj._after_show_tip_callback(feature.mapgoicon);
                            } 
                        }
                        else {
                            if (_mmapgoobj.last_div_tip != this) {
                                _mmapgoobj.hideTip(); if (!_mmapgoobj.dragging_rubber)
                                { _mmapgoobj.makeTip(descr, tip_w, tip_h); _mmapgoobj.positionTip(this); }
                                _mmapgoobj.last_div_tip = this; if (_mmapgoobj.__mapgo_poi_info_query != 0 && !mapgo_icon.clustered)
                                    _mmapgoobj.__mapgo_poi_info_query(id); if (_mmapgoobj._after_show_tip_callback != 0)
                                    _mmapgoobj._after_show_tip_callback(feature.mapgoicon);
                            } 
                        } 
                    }
                    else {
                        if (_mmapgoobj.last_div_tip != this) {
                            _mmapgoobj.hideTip(); if (!_mmapgoobj.dragging_rubber)
                            { _mmapgoobj.makeTip(descr); _mmapgoobj.positionTip(this); }
                            _mmapgoobj.last_div_tip = this; if (_mmapgoobj._after_show_tip_callback != 0)
                                _mmapgoobj._after_show_tip_callback(feature.mapgoicon);
                        } 
                    } 
                } 
            }
            _mmapgoobj.featureClicked = true; if (onclick_function)
            { _mmapgoobj._onclick_ended = true; onclick_function(feature.mapgoicon); }
            return false;
        }
        feature.div.onmouseup = function(evt) {
            if (!feature.mapgoicon.dragable)
                _mmapgoobj.featureClicked = false;
        }
        if (mapgo_icon.show_tip_state == 0 && descr.length > 0) {
            if (tip_w && tip_h && tip_w > 0 && tip_h > 0) {
                if (POI != undefined && POI)
                    feature.div.onmouseover = function() {
                        if (_mmapgoobj.last_div_tip != this) {
                            _mmapgoobj.hideTip(); if (!_mmapgoobj.dragging_rubber)
                            { _mmapgoobj.makeTip('<img src="http://www.geoserwer.pl/api/gfx/loading_poi.gif">', tip_w, tip_h); _mmapgoobj.positionTip(this); }
                            _mmapgoobj.last_div_tip = this; _mmapgoobj.queryPoiInfo(id); if (_mmapgoobj._after_show_tip_callback != 0)
                                _mmapgoobj._after_show_tip_callback(feature.mapgoicon);
                        } 
                    }; else
                    feature.div.onmouseover = function() {
                        if (_mmapgoobj.last_div_tip != this) {
                            _mmapgoobj.hideTip(); if (!_mmapgoobj.dragging_rubber)
                            { _mmapgoobj.makeTip(descr, tip_w, tip_h); _mmapgoobj.positionTip(this); }
                            _mmapgoobj.last_div_tip = this; if (_mmapgoobj.__mapgo_poi_info_query != 0 && !mapgo_icon.clustered)
                                _mmapgoobj.__mapgo_poi_info_query(id); if (_mmapgoobj._after_show_tip_callback != 0)
                                _mmapgoobj._after_show_tip_callback(feature.mapgoicon);
                        } 
                    };
            }
            else
                feature.div.onmouseover = function() {
                    if (_mmapgoobj.last_div_tip != this) {
                        _mmapgoobj.hideTip(); if (!_mmapgoobj.dragging_rubber)
                        { _mmapgoobj.makeTip(descr); _mmapgoobj.positionTip(this); }
                        _mmapgoobj.last_div_tip = this; if (_mmapgoobj._after_show_tip_callback != 0)
                            _mmapgoobj._after_show_tip_callback(feature.mapgoicon);
                    } 
                } 
        }
        if (mapgo_icon.stamp && mapgo_icon.stamp.length > 0) { var ddiv = document.createElement('div'); ddiv.style.position = "absolute"; ddiv.style.left = "0px"; ddiv.style.top = "-10px"; ddiv.style.fontFamily = "trebuchet ms"; ddiv.style.fontSize = "9px"; ddiv.style.background = "transparent"; ddiv.style.color = "#eeeeee"; ddiv.style.width = 25 + 'px'; ddiv.style.height = 10 + 'px'; ddiv.innerHTML = '<p>' + mapgo_icon.stamp + '</p>'; var p = ddiv.firstChild; p.style.margin = "2px 2px 2px 2px"; p.style.padding = "2px 0px 2px 2px"; p.style.lineHeight = "8px"; p.style.backgroundColor = "#505050"; feature.div.appendChild(ddiv); }
        if (mapgo_icon.label && mapgo_icon.label.length > 0) {
            var ddiv = document.createElement('div'); ddiv.style.position = "absolute"; ddiv.style.left = (feature.x + feature.icon_offx + width) + 'px'; if (mapgo_icon.label_pos == 0)
                ddiv.style.top = (feature.y - 10 + feature.icon_offy) + 'px'; else
                if (mapgo_icon.label_pos == 1)
                ddiv.style.top = (feature.y + height + feature.icon_offy) + 'px'; ddiv.id = feature.id + '_label'; ddiv.style.fontFamily = "trebuchet ms"; ddiv.style.fontSize = "9px"; ddiv.style.zIndex = 5001; ddiv.style.border = "1px solid #c0c0c0"; ddiv.style.color = "#0f0f0f"; ddiv.style.height = 11 + 'px'; ddiv.style.backgroundColor = "#FFFF00"; mapgo_icon.label = mapgo_icon.label.replace(' ', '&nbsp;'); ddiv.innerHTML = '<p>' + mapgo_icon.label + '</p>'; var p = ddiv.firstChild; p.style.margin = "1px 1px 1px 1px"; p.style.padding = "0px 0px 0px 0px"; p.style.lineHeight = "8px"; p.style.backgroundColor = "#FFFF00"; feature.label_div = ddiv;
        }
        feature.div.appendChild(feature.img); mapgo_icon.feature = feature; return feature;
    }
    this.makeObjDescr = function(opis) { var outxt = '<div>' + opis + '</div>'; }
    this.recalculateFeatureCoords = function(feature) {
        switch (feature.type) {
            case 1: var calk_coordsc = this.przeliczCalkPiksel(this.curr_center_lon, this.curr_center_lat); var screen_coords = this.makeScreenRouteCoord(feature.lon, feature.lat, calk_coordsc.x, calk_coordsc.y); feature.x = screen_coords.x; feature.y = screen_coords.y; feature.div.style.left = (feature.x + feature.icon_offx) + 'px'; feature.div.style.top = (feature.y + feature.icon_offy) + 'px'; if (feature.label_div) {
                    if (feature.label_pos == 0) { feature.label_div.style.top = (feature.y - 10 + feature.icon_offy) + 'px'; }
                    else
                        if (feature.label_pos == 1) { feature.label_div.style.top = (feature.y + parseInt(feature.div.style.height) + feature.icon_offy) + 'px'; }
                    feature.label_div.style.left = (feature.x + feature.icon_offx + parseInt(feature.div.style.width)) + 'px';
                }
                break; case 2: case 3: var calk_coordsc = this.przeliczCalkPiksel(this.curr_center_lon, this.curr_center_lat); var spt = ''; if (document.all && !this.opera_browser) {
                    spt = this.makeScreenRouteCoords1(feature.coords, calk_coordsc.x, calk_coordsc.y, 0, 0, true); var opl = feature.div.childNodes[0]; if (feature.type == 2)
                        opl.fill.color = "none"; opl.points.value = spt;
                }
                else {
                    if (this.opera_browser)
                        spt = this.makeScreenRouteCoords1(feature.coords, calk_coordsc.x, calk_coordsc.y, this.OmainOffX, this.OmainOffY, false); else
                        spt = this.makeScreenRouteCoords1(feature.coords, calk_coordsc.x, calk_coordsc.y, this.mainOffX, this.mainOffY, false); var opl = feature.div.childNodes[0].childNodes[0]; opl.setAttribute("points", spt);
                }
                break;
        } 
    }
    this.recalculateLayersCoords = function() {
        for (var i = 0; i < this.mapLayers.length; i++) {
            for (var j = this.mapLayers[i].features.length - 1; j >= 0; j--)
                this.recalculateFeatureCoords(this.mapLayers[i].features[j]);
        } 
    }
    this.recalculateHiddenLayersCoords = function() {
        for (var i = 0; i < this.mapLayers.length; i++) {
            if (this.mapLayers[i].hide_when_move)
                for (var j = this.mapLayers[i].features.length - 1; j >= 0; j--)
                this.recalculateFeatureCoords(this.mapLayers[i].features[j]);
        } 
    }
    this.recalculatePlines = function() {
        for (var i = 0; i < this.mapLayers.length; i++) {
            for (var j = this.mapLayers[i].features.length - 1; j >= 0; j--)
                if (this.mapLayers[i].features[j].type == 2)
            { this.recalculatePlineCoords(this.mapLayers[i].features[j]); } 
        } 
    }
    this.checkFeatureVisible = function(feature) { var tiles = this.imageViewerObject.tiles; for (var c = 0; c < tiles.length; c += 1) { for (var r = 0; r < tiles[c].length; r += 1) { var tile = tiles[c][r]; if (tile.kx == feature.kafelx && tile.ky == feature.kafely) { feature.x = tile.x + feature.xink; feature.y = tile.y + (this.tileSizeG - feature.yink); var ncoords = this.localizeCoordinates(this.imageViewerObject, { 'x': feature.x, 'y': feature.y }); feature.x = ncoords.x; feature.y = ncoords.y; return; } } } }
    this.hideLayerByName = function(name) {
        _mmapgoobj.hideTip(); for (var i = 0; i < this.mapLayers.length; i++)
            if (this.mapLayers[i].name == name) { this.hideLayer(this.mapLayers[i].id); return; } 
    }
    this.showLayerByName = function(name) {
        for (var i = 0; i < this.mapLayers.length; i++)
            if (this.mapLayers[i].name == name) { this.showLayer(this.mapLayers[i].id); return; } 
    }
    this.hideLayer = function(layerid) { for (var i = 0; i < this.mapLayers.length; i++) { if (this.mapLayers[i].id == layerid) { this.mapLayers[i].div.style.visibility = 'hidden'; this.mapLayers[i].label_div.style.visibility = 'hidden'; this.mapLayers[i].visible = false; } } }
    this.showLayer = function(layerid) {
        for (var i = 0; i < this.mapLayers.length; i++) {
            if (this.mapLayers[i].id == layerid) {
                this.mapLayers[i].visible = true; if (this.mapLayers[i].type == this.ICON_LAYER)
                    for (var j = this.mapLayers[i].features.length - 1; j >= 0; j--)
                    this.recalculateFeatureCoords(this.mapLayers[i].features[j]); this.mapLayers[i].div.style.visibility = 'visible'; this.mapLayers[i].label_div.style.visibility = 'visible';
            } 
        } 
    }
    this.removeLayerByName = function(name) {
        _mmapgoobj.hideTip(); for (var i = 0; i < this.mapLayers.length; i++)
            if (this.mapLayers[i].name == name) { this.removeLayer(this.mapLayers[i].id); return; } 
    }
    this.removeTiles = function() {
        var object = this.imageViewerObject.tileWell; while (object.hasChildNodes())
            object.removeChild(object.firstChild);
    }
    this.removeLayer = function(layerid) {
        for (var i = 0; i < this.mapLayers.length; i++) {
            if (this.mapLayers[i].id == layerid) {
                for (var t = this.mapLayers[i].features.length - 1; t >= 0; t--) {
                    this.mapLayers[i].features[t].div.onmousedown = null; this.mapLayers[i].features[t].div.onmouseup = null
                    this.mapLayers[i].features[t].div.onmouseover = null; this.mapLayers[i].div.removeChild(this.mapLayers[i].features[t].div); if (this.mapLayers[i].features[t].label_div)
                    { this.mapLayers[i].label_div.removeChild(this.mapLayers[i].features[t].label_div); } 
                }
                this.mapLayers[i].features.splice(0, this.mapLayers[i].features.length); this.mapLayers[i].features = null; this.imageViewerObject.activeSurface.removeChild(this.mapLayers[i].div); this.mapLayers[i].div = null; this.mapLayers.splice(i, 1);
            } 
        } 
    }
    this.discardElement = function(element) {
        var garbageBin = document.getElementById('_mapgo_IELeakGarbageBin'); if (!garbageBin) { garbageBin = document.createElement('DIV'); garbageBin.id = '_mapgo_IELeakGarbageBin'; garbageBin.style.display = 'none'; document.body.appendChild(garbageBin); }
        garbageBin.appendChild(element); garbageBin.innerHTML = ''; garbageBin = null;
    }
    this.createLayer = function(id, name, type, sfrom, sto, hide_when_move, POI) { var layer = new MapgoLayer(); layer.id = id; layer.POI = POI; layer.type = type; layer.name = name; layer.features = []; layer.hide_when_move = hide_when_move; layer.div = document.createElement('div'); layer.label_div = document.createElement('div'); layer.scale_from = sfrom; layer.scale_to = sto; layer.div.id = layer.id; layer.div.style.position = 'absolute'; layer.div.style.textalign = 'left !important'; layer.label_div.id = layer.id + '_label'; layer.label_div.style.position = 'absolute'; layer.div.style.textalign = 'left !important'; return layer; }
    this.reloadTiles = function(cx, cy, reload) { this.changetiles = true; this.positionTiles(this.imageViewerObject, { 'x': cx, 'y': cy }, true); this.changetiles = false; }
    this.moveStraight = function(wx, wy) {
        for (var i = 0; i < this.mapLayers.length; i++) {
            var l = this.mapLayers[i]; if (l)
                for (var j = l.features.length - 1; j >= 0; j--) {
                var f = l.features[j]; f.x += wx; f.y += wy; if (f.type == 1) {
                    f.div.style.left = (f.x + f.icon_offx) + 'px'; f.div.style.top = (f.y + f.icon_offy) + 'px'; if (f.label_div) {
                        if (f.label_pos == 0) { f.label_div.style.top = (f.y - 10 + f.icon_offy) + 'px'; }
                        else
                            if (f.label_pos == 1) { f.label_div.style.top = (f.y + parseInt(f.div.style.height) + f.icon_offy) + 'px'; }
                        f.label_div.style.left = (f.x + f.icon_offx + parseInt(f.div.style.width)) + 'px';
                    } 
                }
                if (f.type == 2 || f.type == 3) {
                    if (document.all && !this.opera_browser) { var opl = f.div.childNodes[0]; opl.style.left = f.x + 'px'; opl.style.top = f.y + 'px'; }
                    else {
                        var opl = f.div; if (this.opera_browser) { opl.style.left = f.x + this.OmainOffX + 'px'; opl.style.top = f.y + this.OmainOffY + 'px'; }
                        else { opl.style.left = f.x + this.mainOffX + 'px'; opl.style.top = f.y + this.mainOffY + 'px'; } 
                    } 
                } 
            } 
        } 
    }
    this.resetKafle = function() { var tiles = this.imageViewerObject.tiles; var tiles1 = this.imageViewerObject.tiles1; for (var c = 0; c < tiles.length; c += 1) { for (var r = 0; r < tiles[c].length; r += 1) { var tile = tiles[c][r]; tile.img.src = 'http://www.geoserwer.pl/api/gfx/ajax-loading.gif'; tile = tiles1[c][r]; tile.img.src = 'http://www.geoserwer.pl/api/gfx/white.png'; } } }
    this.positionTilesLayer = function(tiles, dim, start, cmx, cmy, tileDir, type, trans) {
        for (var c = 0; c < tiles.length; c += 1) {
            for (var r = 0; r < tiles[c].length; r += 1) {
                var tile = tiles[c][r]; var wrappedAround = false; tile.x = (tile.c * dim.tileSize) + dim.x + (cmx - start.x); tile.y = (tile.r * dim.tileSize) + dim.y + (cmy - start.y); if (this.changetiles) {
                    if (tile.x > dim.width) { do { tile.c -= tiles.length; tile.nx = tile.nx - 1; tile.x = (tile.c * dim.tileSize) + dim.x + (cmx - start.x); wrappedAround = true; } while (tile.x > dim.width); } else { while (tile.x < (-1 * dim.tileSize)) { tile.c += tiles.length; tile.nx = tile.nx + 1; tile.x = (tile.c * dim.tileSize) + dim.x + (cmx - start.x); wrappedAround = true; } }
                    if (tile.y > dim.height) { do { tile.r -= tiles[c].length; tile.ny = tile.ny - 1; tile.y = (tile.r * dim.tileSize) + dim.y + (cmy - start.y); wrappedAround = true; } while (tile.y > dim.height); } else { while (tile.y < (-1 * dim.tileSize)) { tile.r += tiles[c].length; tile.ny = tile.ny + 1; tile.y = (tile.r * dim.tileSize) + dim.y + (cmy - start.y); wrappedAround = true; } } 
                }
                if (this.changetiles) {
                    if (!trans)
                        this.setTileImage(tile, true, tileDir, type, trans); this.setTileImage(tile, false, tileDir, type, trans);
                }
                tile.img.style.top = tile.y + 'px'; tile.img.style.left = tile.x + 'px';
            } 
        } 
    }
    this.kafle_type = 0; this.orto_tile_dir = 'http://www.geoserwer.pl/testapi/'; this.hybrid_tile_dir = 'http://www.geoserwer.pl/testapi/'; this.vector_tile_dir = 'http://www.mapgo.pl/tiles/mapa7/'; this.positionTiles = function(imageViewer, mouse, reload) {
        this.position_started = true; var cmousex = 0; var cmousey = 0; var tiles = imageViewer.tiles; var dim = imageViewer.dimensions; var start = imageViewer.start; var cmx = 0; var cmy = 0; cmx = mouse.x; cmy = mouse.y; if (this.pilotpl == false)
            this.changetiles = true; if (this.map_mode == 1)
            this.positionTilesLayer(tiles, dim, start, cmx, cmy, dim.tileDir, 't01', false); else
            if (this.map_mode == 2 || this.map_mode == 3)
            this.positionTilesLayer(tiles, dim, start, cmx, cmy, this.orto_tile_dir, 't03', false); else
            if (this.map_mode == 4 || this.map_mode == 5)
            this.positionTilesLayer(tiles, dim, start, cmx, cmy, this.hybrid_tile_dir, 't04', false); if (dim.tileDir1 && dim.tileDir1.length > 0 && (this.map_mode == 2 || this.map_mode == 4)) { this.positionTilesLayer(imageViewer.tiles1, dim, start, cmx, cmy, dim.tileDir1, 't02', true); }
        if (!reload) {
            for (var i = 0; i < this.mapLayers.length; i++) {
                var l = this.mapLayers[i]; if ((l.visible || l.type == this.PLINE_LAYER) && (!l.hide_when_move))
                    for (var j = 0; j < l.features.length; j++) {
                    var f = l.features[j]; f.x = f.offx + (cmx - start.x); f.y = f.offy + (cmy - start.y); if (f.type == 1) {
                        f.div.style.left = (f.x + f.icon_offx) + 'px'; f.div.style.top = (f.y + f.icon_offy) + 'px'; if (f.label_div) {
                            if (f.label_pos == 0) { f.label_div.style.top = (f.y - 10 + f.icon_offy) + 'px'; }
                            else
                                if (f.label_pos == 1) { f.label_div.style.top = (f.y + parseInt(f.div.style.height) + f.icon_offy) + 'px'; }
                            f.label_div.style.left = (f.x + f.icon_offx + parseInt(f.div.style.width)) + 'px';
                        } 
                    }
                    if (f.type == 2 || f.type == 3) {
                        if (document.all && !this.opera_browser) { var opl = f.div.childNodes[0]; opl.style.left = f.x + 'px'; opl.style.top = f.y + 'px'; }
                        else {
                            var opl = f.div; if (this.opera_browser) { opl.style.left = f.x + this.OmainOffX + 'px'; opl.style.top = f.y + this.OmainOffY + 'px'; }
                            else { opl.style.left = f.x + this.mainOffX + 'px'; opl.style.top = f.y + this.mainOffY + 'px'; } 
                        } 
                    } 
                } 
            }
            this.lost_focus = false;
        }
        this.position_started = false;
    }
    this.maxXTiles = new Array(1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 3500, 1440, 720, 360, 180, 96, 48, 24, 12, 6); this.maxYTiles = new Array(1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 1000000, 3500, 1440, 720, 360, 180, 96, 48, 24, 12, 6); this.getTileMax = function() { return { 'maxx': this.maxXTiles[this.currscale - 1], 'maxy': this.maxYTiles[this.currscale - 1] }; }
    this.showImage = function(tile) { tile.img.style.visibility = 'visible'; }
    this.map_mode = 1; this.setTileImage = function(tile, nullOverride, tileDir, type, trans) {
        var dim = tile.imageViewer.dimensions; var ext = '.png'; if (type == 't03' || type == 't04')
            ext = '.jpg'; var cx = Math.floor(dim.x / dim.tileSize); var cy = Math.floor(dim.y / dim.tileSize); var sx = Math.floor((tile.c + this.kafelx) / this.sectionWidth); var sy = Math.floor(((-1) * tile.r + this.kafely) / this.sectionHeight); var tsx = this.addZeros(sx, 6); var tsy = this.addZeros(sy, 6); var src = ''; var type1 = type; if (type == 't04')
            type1 = 't03'; var tilemax = this.getTileMax(); if ((tile.c + this.kafelx) < 0 || ((-1) * tile.r + this.kafely) < 0 || (tile.c + this.kafelx) > tilemax.maxx || ((-1) * tile.r + this.kafely) > tilemax.maxy) { src = 'http://www.geoserwer.pl/api/gfx/ajax-loading.gif'; }
        else
            src = tileDir + '/' + type + '/s' + this.addZeros(this.currscale, 2) + '/x' + tsx + '/' + 'y' + tsy + '/' + type1 + 's' + this.addZeros(this.currscale, 2) + 'x' + this.addZeros((tile.c + this.kafelx), 8) + 'y' + this.addZeros(((-1) * tile.r + this.kafely), 8) + ext; if (nullOverride && trans)
            src = 'http://www.geoserwer.pl/api/gfx/white.png'; else
            if (tile.img.src != src) {
            if (nullOverride && !trans)
                src = 'http://www.geoserwer.pl/api/gfx/ajax-loading.gif'; if (trans && document.all && !this.opera_browser && !this.ie7browser) { tile.img.src = 'http://www.geoserwer.pl/api/gfx/blank.gif'; tile.img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')"; }
            else
                tile.img.src = src;
        }
        tile.kx = tile.c + this.kafelx; tile.ky = ((-1) * tile.r + this.kafely);
    }
    this.moveViewer = function(event) {
        if (_mmapgoobj.imageViewerObject.pressed) {
            _mmapgoobj.hideTip(); var ev = _mmapgoobj.getEvent(event); var imageViewer = _mmapgoobj.imageViewerObject; var mouse = _mmapgoobj.localizeCoordinates(imageViewer, { 'x': ev.clientX, 'y': ev.clientY }); if (ev.clientX < 0 || ev.clientY < 0)
                _mmapgoobj.releaseViewer(event); else
                _mmapgoobj.positionTiles(imageViewer, { 'x': mouse.x, 'y': mouse.y });
        } 
    }
    this.getCenterKafel = function(cx, cy) { var tiles = this.imageViewerObject.tiles; var center = { 'x': cx, 'y': cy }; for (var c = 0; c < tiles.length; c += 1) { for (var r = 0; r < tiles[c].length; r += 1) { var tile = tiles[c][r]; var x0 = tile.x; var y0 = tile.y; var x1 = tile.x + this.tileSizeG; var y1 = tile.y - this.tileSizeG; var img_left = parseInt(tile.img.style.left); var img_top = parseInt(tile.img.style.top); if (center.x <= (img_left + this.tileSizeG) && center.x >= img_left && center.y >= img_top && center.y <= (img_top + this.tileSizeG)) { return { 'kx': tile.kx, 'ky': (tile.ky), 'x': (center.x - x0), 'y': ((y0 + this.tileSizeG) - center.y) }; } } } }
    this.pressViewer = function(event) {
        if (_mmapgoobj._mapgo_stop_move_map)
            return; if (_mmapgoobj._onclick_ended && (!document.all || this.opera_browser)) { _mmapgoobj._onclick_ended = false; return; }
        if (!_mmapgoobj.featureClicked)
            _mmapgoobj.hideTip(); if (!_mmapgoobj.featureClicked) {
            _mmapgoobj.hideLayersWhenMove(); _mmapgoobj._onclick_ended = false; if (_mmapgoobj.pilotpl == true)
                _mmapgoobj.changetiles = false; if (!_mmapgoobj.moving) {
                var imageViewer = _mmapgoobj.imageViewerObject; var dim = imageViewer.dimensions; var ev = _mmapgoobj.getEvent(event); var mouse = _mmapgoobj.localizeCoordinates(imageViewer, { 'x': ev.clientX, 'y': ev.clientY }); imageViewer.pressed = true; for (var i = 0; i < _mmapgoobj.mapLayers.length; i++) {
                    var l = _mmapgoobj.mapLayers[i]; if (l)
                        for (var j = l.features.length - 1; j >= 0; j--) { var f = l.features[j]; f.offx = f.x; f.offy = f.y; } 
                }
                imageViewer.start = { 'x': mouse.x, 'y': mouse.y }; document.body.onmouseup = _mmapgoobj.releaseViewer; document.body.onmouseout = _mmapgoobj.mouseOutWindow; document.body.onmousemove = _mmapgoobj.moveViewer;
            } 
        } else
            _mmapgoobj.featureClicked = false;
    }
    this.hideAllLayers = function() {
        for (var i = 0; i < this.mapLayers.length; i++)
            this.hideLayer(this.mapLayers[i].id);
    }
    this.showAllLayers = function() {
        for (var i = 0; i < this.mapLayers.length; i++)
            this.showLayer(this.mapLayers[i].id);
    }
    this.mouseOutWindow = function(event) {
        if (_mmapgoobj.imageViewerObject.pressed) {
            var hiddenlrs = new Array(); for (var i = 0; i < _mmapgoobj.mapLayers.length; i++)
                _mmapgoobj.mapLayers[i].div.style.visibility = 'hidden'; var ev = _mmapgoobj.getEvent(event); _mmapgoobj.lost_mouse_x = ev.clientX; _mmapgoobj.lost_mouse_y = ev.clientY; _mmapgoobj.lost_focus = true; _mmapgoobj.releaseViewer(event); var coords = _mmapgoobj.getCenterKafel(_mmapgoobj.imageViewerObject.dimensions.width / 2, _mmapgoobj.imageViewerObject.dimensions.height / 2); var convlonlat = _mmapgoobj.screenToLonLat(_mmapgoobj.currscale, coords.x, coords.y, coords.kx, coords.ky); _mmapgoobj.centerTo(convlonlat.lon, convlonlat.lat, _mmapgoobj.currscale); _mmapgoobj.recalculateLayersCoords(); _mmapgoobj.manageLayersClustering(); _mmapgoobj.showLayersWhenMove();
        } 
    }
    this.releaseViewer = function(event) {
        var ev = _mmapgoobj.getEvent(event); var clientx = 0; var clienty = 0; if (_mmapgoobj.imageViewerObject.pressed || ev.clientX < 0 || ev.clientY < 0) {
            clientx = ev.clientX; clienty = ev.clientY; if (clientx < 0)
                clientx = 0; if (clienty < 0)
                clienty = 0; for (var i = 0; i < document.body.imageViewers.length; i += 1) {
                var imageViewer = document.body.imageViewers[i]; var mouse = _mmapgoobj.localizeCoordinates(imageViewer, { 'x': clientx, 'y': clienty }); var dim = imageViewer.dimensions; if (imageViewer.pressed) {
                    imageViewer.activeSurface.onmousemove = null; imageViewer.pressed = false; dim.x += (mouse.x - imageViewer.start.x); dim.y += (mouse.y - imageViewer.start.y); _mmapgoobj.roznicax = (mouse.x - imageViewer.start.x); thisroznicay = (mouse.y - imageViewer.start.y); for (var i = 0; i < _mmapgoobj.mapLayers.length; i++) {
                        var l = _mmapgoobj.mapLayers[i]; if (l)
                            for (var j = l.features.length - 1; j >= 0; j--) { var f = l.features[j]; f.offx = 0; f.offy = 0; } 
                    }
                    if (_mmapgoobj.pilotpl == true) {
                        _mmapgoobj.reloadTiles(imageViewer.start.x, imageViewer.start.y); var ncenter = _mmapgoobj.convertScreenToGeo(_mmapgoobj.imageViewerObject.dimensions.width / 2, _mmapgoobj.imageViewerObject.dimensions.height / 2); _mmapgoobj.curr_center_lon = ncenter.lon; _mmapgoobj.curr_center_lat = ncenter.lat; var calk_coordsc = _mmapgoobj.przeliczCalkPiksel(_mmapgoobj.curr_center_lon, _mmapgoobj.curr_center_lat); _mmapgoobj.curr_centercalkx = parseInt(calk_coordsc.x); _mmapgoobj.curr_centercalky = parseInt(calk_coordsc.y); if (_mmapgoobj.__move_map_callback && !_mmapgoobj.block_events)
                            _mmapgoobj.__move_map_callback(); _mmapgoobj.manageLayersClustering(); _mmapgoobj.showLayersWhenMove(); _mmapgoobj.recalculateHiddenLayersCoords();
                    } 
                } 
            } 
        } 
    }
    this.resetTiles = function() { var tiles = this.imageViewerObject.tiles; for (var c = 0; c < tiles.length; c += 1) { for (var r = 0; r < tiles[c].length; r += 1) { var tile = tiles[c][r]; tile.img.src = 'http://www.geoserwer.pl/api/gfx/ajax-loading.gif'; } } }
    this.addZeros = function(val, cnt) {
        var temp = '' + val; var outv = ''; for (var i = 0; i < cnt - temp.length; i++)
            outv += '0'; return outv += val;
    }
    this._callback_geo_resp_function = 0; this._callback_route_resp_function = 0; this._callback_ageo_resp_function = 0; this._callback_data_resp_function = 0;

    this.queryGeocoder = function(city, street, nr, zip, woj_nr, n_callback_geo_resp_function) {
        if (street == '' || street == 'ulica nr') street = 'xzcxzcvsdfgdsfg';
        if (nr == '') nr = '1';
        this.last_street = street;
        this.last_city = city;
        this.last_nr = nr;
        this._callback_geo_resp_function = n_callback_geo_resp_function;
        var gquery = this.makeGeocodeQObj1(city, street, nr, zip, woj_nr);
        //var qstring = "key=" + this._131 + "&type=app&gq=" + JSON.stringify(gquery);
        var qstring = "gq=" + JSON.stringify(gquery);
        this.callToServer(qstring, '_mmapgoobj.fnWhenGeoDone');

        alert(qstring);

    }
    this._mapgo_reset_route = 0; this.findRoute = function(start_lon, start_lat, end_lon, end_lat, listener_function, search_type, reset_route, position_map) {
        if (reset_route != undefined)
            this._mapgo_reset_route = reset_route; else
            this._mapgo_reset_route = true; if (position_map != undefined)
            this._position_map_route = position_map; else
            this._position_map_route = true; if (Math.abs(start_lon) < 100)
            start_lon = Math.floor(start_lon * 1000000 + 0.5); if (start_lat < 100)
            start_lat = Math.floor(start_lat * 1000000 + 0.5); if (Math.abs(end_lon) < 100)
            end_lon = Math.floor(end_lon * 1000000 + 0.5); if (end_lat < 100)
            end_lat = Math.floor(end_lat * 1000000 + 0.5); this._callback_route_resp_function = listener_function; this._curr_route_startx = start_lon; this._curr_route_starty = start_lat; this._curr_route_endx = end_lon; this._curr_route_endy = end_lat; var stype = 1; if (search_type)
            stype = search_type; this.queryRouter("0", "0", (stype + ""), (start_lon + ""), (start_lat + ""), (end_lon + ""), (end_lat + ""), listener_function);
    }
    this.findPointDescr = function(lon, lat, listener_function) {
        this._callback_ageo_resp_function = listener_function; var qstring = "key=" + this._131 + "&type=app&aq=1&x=" + lon + "&y=" + lat;

        this.callToServer(qstring, '_mmapgoobj.fnWhenAgeoDone'); 
    }
    this._callback_regions_resp_function = 0; this.findRegionDescr = function(lon, lat, listener_function) { this._callback_regions_resp_function = listener_function; var qstring = "key=" + this._131 + "&type=app&regq=1&x=" + lon + "&y=" + lat; this.callToServer(qstring, '_mmapgoobj.fnWhenRegionsDone'); }
    this.queryRouter = function(road_type, vehicle_type, search_type, sLon, sLat, eLon, eLat, n_callback_route_resp_function) { var rquery = this.makeRouterQuery(road_type, vehicle_type, search_type, sLon, sLat, eLon, eLat); var qstring = "key=" + this._131 + "&type=app&rq=" + JSON.stringify(rquery); this.callToServer(qstring, '_mmapgoobj.fnWhenRouteDone'); }
    this.queryPoi = function(query_obj, n_callback_poi_resp_function) { this._callback_poi_resp_function = n_callback_poi_resp_function; var qstring = "key=" + this._131 + "&type=app&poiq=" + JSON.stringify(query_obj); this.callToServer(qstring, '_mmapgoobj.fnWhenPoiDone'); }
    this.fnWhenGeoDone = function(ans) {
        ans = JSON.stringify(_mmapgoobj._mapgo_response); if (ans) {
            var json_ans = JSON.parse(ans); if (json_ans.city_list) { this.last_city_list = json_ans.city_list; this.state_founded = -1; }
            else
                if (json_ans.street_list) { this.last_street_list = json_ans.street_list; this.state_founded = -1; }
            if (json_ans.X) { json_ans.X = json_ans.X / 1000000; json_ans.Y = json_ans.Y / 1000000; }
            if (this._callback_geo_resp_function)
                this._callback_geo_resp_function(json_ans);
        } 
    }
    this.przeliczCalkPiksel = function(x, y) {
        if (Math.abs(x) < 100)
            x = Math.floor(x * 1000000 + 0.5); if (y < 100)
            y = Math.floor(y * 1000000 + 0.5); var px = 0; if (x >= 0)
            px = (x - (-12000000)) / this.scalex[this.currscale - 1]; else
            px = (12000000 + x) / this.scalex[this.currscale - 1]; var py = (y - 34000000) / this.scaley[this.currscale - 1]; return { "x": px, "y": py };
    }
    this.przeliczAllCalkPiksel = function(coords) {
        var out = new Array(); for (var i = 0; i < coords.length; i++) { out.push(this.przeliczCalkPiksel(coords[i].X, coords[i].Y)); }
        return out;
    }
    this.resetRoute = function() { this.removeLayerByName('mapgo_trasa'); }
    this._position_map_route = true; this._mapgo_route_points = 0; this.fnWhenRouteDone = function(ans) {
        ans = JSON.stringify(_mmapgoobj._mapgo_response); if (ans != '') {
            var trasa = new Array(); var json_ans = JSON.parse(ans); if (json_ans.state > 0) {
                if (this._mapgo_reset_route)
                    this.removeLayerByName('mapgo_trasa'); var trasa = this.skladajTrase(json_ans); this._mapgo_route_points = trasa; var pline_object = { 'type': 2, 'coords': trasa, 'color': { 'R': 0, 'G': 234, 'B': 255 }, 'opacity': 0.6, 'weight': 8, 'descr': 'trasa' }; var object_list = new Array(); object_list.push(pline_object); if (this.searchLayer('mapgo_trasa') != null)
                    this.addPlineToLayer(object_list[0], 'mapgo_trasa', this._position_map_route); else
                    this.addPlinesToMap(object_list, 'mapgo_trasa', this._position_map_route, 3, 20);
            }
            if (this._callback_route_resp_function)
                this._callback_route_resp_function(json_ans, trasa);
        } 
    }
    this._callback_poi_resp_function = 0; this.fnWhenPoiDone = function(ans) {
        ans = JSON.stringify(_mmapgoobj._mapgo_response); if (ans != '') {
            var json_ans = JSON.parse(ans); if (json_ans1 = undefined) { }
            if (this._callback_poi_resp_function)
                this._callback_poi_resp_function(json_ans);
        } 
    }
    this.fnWhenAgeoDone = function(ans) {
        ans = JSON.stringify(_mmapgoobj._mapgo_response); if (ans != '') {
            var json_ans = JSON.parse(ans); if (this._callback_ageo_resp_function)
                this._callback_ageo_resp_function(json_ans);
        } 
    }
    this.fnWhenRegionsDone = function(ans) {
        ans = JSON.stringify(_mmapgoobj._mapgo_response); if (ans != '') {
            var json_ans = JSON.parse(ans); if (this._callback_regions_resp_function)
                this._callback_regions_resp_function(json_ans);
        } 
    }
    this.makeScreenRouteCoords = function(trasa, cx, cy) {
        var screenc = 0; var screenCoords = new Array(); var mapscrx = this.imageViewerObject.dimensions.width / 2; var mapscry = this.imageViewerObject.dimensions.height / 2; var loc_center = { "x": mapscrx, "y": mapscry }; for (var i = 0; i < trasa.length; i++) { screenc = this.przeliczCalkPiksel(trasa[i].lon, trasa[i].lat); screenc.x = screenc.x - cx; screenc.y = screenc.y - cy; screenc.x = loc_center.x + screenc.x; screenc.y = loc_center.y - screenc.y; var screencoord = { "x": Math.round(screenc.x), "y": Math.round(screenc.y) }; screenCoords.push(screencoord); }
        return screenCoords;
    }
    this.makeScreenRouteCoords1 = function(trasa, cx, cy, offx, offy, ie) {
        var screenc = 0; var screenCoords = new Array(); var mapscrx = this.imageViewerObject.dimensions.width / 2; var mapscry = this.imageViewerObject.dimensions.height / 2; var loc_center = { "x": parseInt(mapscrx), "y": parseInt(mapscry) }; screenc = this.przeliczCalkPiksel(trasa[0].lon, trasa[0].lat); screenc.x = parseInt(loc_center.x + (screenc.x - cx)); screenc.y = parseInt(loc_center.y - (screenc.y - cy)); var lastx = screenc.x; var lasty = screenc.y; var sxy = []; var mapCoordsTopLeft1 = _mmapgoobj.convertScreenToGeo(0, 0); var mapCoordsBottomRight1 = _mmapgoobj.convertScreenToGeo(_mmapgoobj.map_width, _mmapgoobj.map_height); mapCoordsTopLeft1.lon *= 1000000; mapCoordsTopLeft1.lat *= 1000000; mapCoordsBottomRight1.lon *= 1000000; mapCoordsBottomRight1.lat *= 1000000; var bx = 0; var by = 0; if (ie)
        { bx = 100000; by = 100000; } else { bx = offx * (-1) / 2; by = offy * (-1) / 2; }
        if (lastx > bx * (-1) && lastx < bx && lasty > by * (-1) && lasty < by)
            sxy.push((lastx - offx) + " " + (lasty - offy) + " "); for (var i = 1; i < trasa.length; i++) {
            screenc = this.przeliczCalkPiksel(trasa[i].lon, trasa[i].lat); screenc.x = parseInt(loc_center.x + (screenc.x - cx)); screenc.y = parseInt(loc_center.y - (screenc.y - cy)); if ((screenc.x != lastx || screenc.y != lasty) && (screenc.x > bx * (-1) && screenc.x < bx && screenc.y > by * (-1) && screenc.y < by))
                sxy.push((screenc.x - offx) + " " + (screenc.y - offy) + " "); lastx = screenc.x; lasty = screenc.y;
        }
        var outstr = sxy.join(""); return outstr;
    }
    this.makeScreenRouteCoord = function(x, y, cx, cy) { var screenc = 0; var screenCoords = new Array(); var mapscrx = this.imageViewerObject.dimensions.width / 2; var mapscry = this.imageViewerObject.dimensions.height / 2; var loc_center = { "x": mapscrx, "y": mapscry }; screenc = this.przeliczCalkPiksel(x, y); screenc.x = screenc.x - cx; screenc.y = screenc.y - cy; screenc.x = loc_center.x + screenc.x; screenc.y = loc_center.y - screenc.y; var screencoord = { "x": Math.round(screenc.x), "y": Math.round(screenc.y) }; return screencoord; }
    this.localizeCoord = function(screenc) { var tiles = this.imageViewerObject.tiles; for (var c = 0; c < tiles.length; c += 1) { for (var r = 0; r < tiles[c].length; r += 1) { var tile = tiles[c][r]; if (tile.kx == screenc.kafelx && tile.ky == screenc.kafely) { screenc.x = tile.x + screenc.xink; screenc.y = tile.y + (this.tileSizeG - screenc.yink); var ncoords = this.localizeCoordinates(this.imageViewerObject, { 'x': screenc.x, 'y': screenc.y }); screenc.x = ncoords.x; screenc.y = ncoords.y; return; } } } }
    this.skladajTrase = function(route) {
        var outcoords = new Array(); var currx = route.rp[0]; var curry = route.rp[1]; var tx = 0; var ty = 0; var firstpoint = { "lon": currx, "lat": curry }; outcoords.push(firstpoint); for (var i = 2; i < route.rp.length - 1; i += 2) { tx = (currx - route.rp[i]); ty = (curry - route.rp[i + 1]); var npoint = { "lon": tx, "lat": ty }; outcoords.push(npoint); currx = tx; curry = ty; }
        return outcoords;
    }
    this.findRouteMBR = function(coords) {
        var minx = 99999999; var miny = 99999999; var maxx = 0; var maxy = 0; for (var i = 0; i < coords.length; i++) {
            if (coords[i].X > maxx)
                maxx = coords[i].X; if (coords[i].X < minx)
                minx = coords[i].X; if (coords[i].Y > maxy)
                maxy = coords[i].Y; if (coords[i].Y < miny)
                miny = coords[i].Y;
        }
        return { 'minx': minx, 'miny': miny, 'maxx': maxx, 'maxy': maxy };
    }
    this.findObjectsMBR = function(coords) {
        var minx = 99999999; var miny = 99999999; var maxx = 0; var maxy = 0; for (var i = 0; i < coords.length; i++) {
            if (coords[i].lon > maxx)
                maxx = coords[i].lon; if (coords[i].lon < minx)
                minx = coords[i].lon; if (coords[i].lat > maxy)
                maxy = coords[i].lat; if (coords[i].lat < miny)
                miny = coords[i].lat;
        }
        return { 'minx': minx, 'miny': miny, 'maxx': maxx, 'maxy': maxy };
    }
    this.removeObjectFromLayer = function(layer, object) {
        var id_obj = ''; for (var i = 0; i < this.mapLayers.length; i++) {
            if (layer.id == this.mapLayers[i].id) {
                id_obj = this.mapLayers[i].id + '_f_' + object.id; for (var j = this.mapLayers[i].features.length - 1; j >= 0; j--)
                    var ft = this.mapLayers[i].features[j]; var idtxt = ft.id; if (idtxt.indexOf(id_obj) >= 0) {
                    var type = ft.type; if (type == 2 || type == 3) {
                        ft.coords.splice(0, ft.coords.length - 1)
                        ft.coords.length = 0;
                    }
                    layer.features.splice(j, 1); if (layer.type == 1) {
                        for (var k = layer.all_features.length - 1; k >= 0; k--)
                            if (layer.all_features[k].id == object.id) { layer.all_features.splice(k, 1); break; } 
                    }
                    break;
                } 
            } 
        }
        if (document.getElementById(id_obj))
            layer.div.removeChild(document.getElementById(id_obj));
    }
    this.addClusteredIconsToMap = function(object_list, layer_name, positionmap, scale_from, scale_to, cluster_icon, hide_when_move, POI) {
        var lid = this.createLayerId(); if (positionmap)
            this.positionMap(object_list); var l = this.createLayer(lid, layer_name, this.ICON_LAYER, scale_from, scale_to, hide_when_move, POI); var ret_layer = 0; if (l) {
            if (cluster_icon)
                l.clustered_icon = cluster_icon; l.all_features = object_list; ret_layer = l.clusterIcons();
        }
        return ret_layer;
    }
    this.addIconsToMap = function(object_list, layer_name, positionmap, scale_from, scale_to, hide_when_move, POI) {
        var lid = this.createLayerId(); if (positionmap)
            this.positionMap(object_list); var l = this.createLayer(lid, layer_name, this.ICON_LAYER, scale_from, scale_to, hide_when_move); if (l) {
            this.mapLayers.push(l); this.imageViewerObject.activeSurface.appendChild(l.label_div); this.imageViewerObject.activeSurface.appendChild(l.div); var id = 0; for (var i = object_list.length - 1; i >= 0; i--) {
                if (object_list[i].id == 0)
                    id = i; else
                    id = object_list[i].id; object_list[i].id = id; var poi = 0; if (POI != 'undefined' && POI)
                    poi = !object_list[i].clustered; var icon = this.createIconFeature(id, object_list[i].width, object_list[i].height, object_list[i].descr, object_list[i].lon, object_list[i].lat, object_list[i].image, 'img', 0, object_list[i].icon_offx, object_list[i].icon_offy, object_list[i].tip_width, object_list[i].tip_height, object_list[i].onclick_function, object_list[i].id, object_list[i].dragable, object_list[i].afterdrag_function, object_list[i], poi); this.addFeatureToLayer(l.id, icon);
            } 
        }
        this.manageLayersVisibility(); return l;
    }
    this.addIconsToLayer = function(object_list, layer_name, position_map, POI) {
        var layer = 0; for (var j = 0; j < this.mapLayers.length; j++)
            if (this.mapLayers[j].name == layer_name) { layer = this.mapLayers[j]; break; }
        if (layer == 0)
            return layer; var id = 0; for (var i = 0; i < object_list.length; i++) {
            if (object_list[i].id == 0)
                id = layer.features.length + i; else
                id = object_list[i].id; object_list[i].id = id; var icon = this.createIconFeature(id, object_list[i].width, object_list[i].height, object_list[i].descr, object_list[i].lon, object_list[i].lat, object_list[i].image, 'img', 0, object_list[i].icon_offx, object_list[i].icon_offy, object_list[i].tip_width, object_list[i].tip_height, object_list[i].onclick_function, object_list[i].id, object_list[i].dragable, object_list[i].afterdrag_function, object_list[i], POI); this.addFeatureToLayer(layer.id, icon);
        }
        if (position_map)
            this.positionMap(layer.features); this.showLayerByName(layer_name); for (var i = object_list.length - 1; i >= 0; i--) { object_list[i].cluster = false; layer.all_features.push(object_list[i]); }
        return layer;
    }
    this.addIconToLayer = function(icon, layer_name, position_map, POI) {
        var layer = 0; for (var j = 0; j < this.mapLayers.length; j++)
            if (this.mapLayers[j].name == layer_name) { layer = this.mapLayers[j]; break; }
        if (layer == 0)
            return layer; var id = 0; if (icon.id == 0)
            id = layer.features.length + 1; else
            id = icon.id; icon.id = id; var icona = this.createIconFeature(id, icon.width, icon.height, icon.descr, icon.lon, icon.lat, icon.image, 'img', 0, icon.icon_offx, icon.icon_offy, icon.tip_width, icon.tip_height, icon.onclick_function, icon.id, icon.dragable, icon.afterdrag_function, icon, POI); this.addFeatureToLayer(layer.id, icona); if (position_map)
            this.positionMap(layer.features); icon.cluster = false; layer.all_features.push(icon); this.showLayerByName(layer_name); return layer;
    }
    this.addPlineToLayer = function(pline, layer_name, position_map) {
        var layer = 0; layer = this.searchLayer(layer_name); if (layer == null)
            return layer; var id = 0; if (pline.id == 0)
            id = layer.features.length + 1; else
            id = pline.id; pline.id = id; for (var j = 0; j < pline.coords.length; j++) {
            if (Math.abs(pline.coords[j].lon) < 100)
                pline.coords[j].lon = Math.floor(pline.coords[j].lon * 1000000 + 0.5); if (pline.coords[j].lat < 100)
                pline.coords[j].lat = Math.floor(pline.coords[j].lat * 1000000 + 0.5);
        }
        var pline1 = this.createPlineFeature(id, pline.coords, pline.color.R, pline.color.G, pline.color.B, pline.weight, pline.opacity, '', pline.dashstyle, pline); this.addFeatureToLayer(layer.id, pline1); pline.layer = layer; if (position_map)
            this.positionMap(layer.features); this.showLayerByName(layer_name); return layer;
    }
    this.addPolygonToLayer = function(polygon, layer_name, position_map) {
        var layer = 0; layer = this.searchLayer(layer_name); if (layer == null)
            return layer; var id = 0; if (polygon.id == 0)
            id = layer.features.length + 1; else
            id = polygon.id; polygon.id = id; for (var j = 0; j < polygon.coords.length; j++) {
            if (Math.abs(polygon.coords[j].lon) < 100)
                polygon.coords[j].lon = Math.floor(polygon.coords[j].lon * 1000000 + 0.5); if (polygon.coords[j].lat < 100)
                polygon.coords[j].lat = Math.floor(polygon.coords[j].lat * 1000000 + 0.5);
        }
        var polygon1 = this.createPolygonFeature(id, polygon.coords, polygon.color.R, polygon.color.G, polygon.color.B, polygon.weight, polygon.opacity, '', polygon); this.addFeatureToLayer(layer.id, polygon1); polygon.layer = layer; polygon1.layer = layer; if (position_map)
            this.positionMap(layer.features); this.showLayerByName(layer_name); return layer;
    }
    this.addPlinesToMap = function(object_list, layer_name, position_map, scale_from, scale_to, hide_when_move) {
        for (var i = 0; i < object_list.length; i++) {
            for (var j = 0; j < object_list[i].coords.length; j++) {
                if (Math.abs(object_list[i].coords[j].lon) < 100)
                    object_list[i].coords[j].lon = Math.floor(object_list[i].coords[j].lon * 1000000 + 0.5); if (object_list[i].coords[j].lat < 100)
                    object_list[i].coords[j].lat = Math.floor(object_list[i].coords[j].lat * 1000000 + 0.5);
            } 
        }
        var lid = this.createLayerId(); if (position_map)
            this.positionMap(object_list); var l = this.createLayer(lid, layer_name, this.PLINE_LAYER, scale_from, scale_to, hide_when_move); this.imageViewerObject.activeSurface.appendChild(l.div); if (l) {
            this.mapLayers.push(l); var id = 0; for (var i = 0; i < object_list.length; i++) {
                if (object_list[i].id == 0)
                    id = i + 1; else
                    id = object_list[i].id; object_list[i].id = id; var pline = this.createPlineFeature(id, object_list[i].coords, object_list[i].color.R, object_list[i].color.G, object_list[i].color.B, object_list[i].weight, object_list[i].opacity, '', object_list[i].dashstyle, object_list[i]); object_list[i].layer = l; this.addFeatureToLayer(l.id, pline);
            } 
        }
        this.manageLayersVisibility(); return l;
    }
    this.createLayerId = function() { var key = '_layer_' + this.LayersIds.length; this.LayersIds.push(key); return key; }
    this.positionMap = function(object_list) {
        if (object_list && object_list.length > 0) {
            var type = object_list[0].type; switch (type) {
                case 1: if (object_list.length == 1)
                        this.centerTo(object_list[0].lon, object_list[0].lat, 8); else {
                        var mbr = this.findObjectsMBR(object_list); var center = this.findCenterMBR(mbr); var cscale = this.findCorrectScale(mbr); cscale--; if (cscale < 3)
                            cscale = 3; this.centerTo(center.cx, center.cy, cscale);
                    }
                    break; case 2: case 3: var allmbr = new Array(); for (var i = object_list.length - 1; i >= 0; i--) { var mbr = this.findObjectsMBR(object_list[i].coords); allmbr.push({ 'lon': mbr.minx, 'lat': mbr.miny }); allmbr.push({ 'lon': mbr.maxx, 'lat': mbr.maxy }); }
                    var ambr = this.findObjectsMBR(allmbr); var center = this.findCenterMBR(ambr); var cscale = this.findCorrectScale(ambr); this.centerTo(center.cx, center.cy, cscale); break;
            }
            this.recalculateLayersCoords();
        } 
    }
    this.findMBR = function(obj_list) {
        var minx = 99999999; var miny = 99999999; var maxx = 0; var maxy = 0; for (var i = obj_list.b_list.length - 1; i >= 0; i--) {
            obj_list.b_list[i].x = Math.floor(obj_list.b_list[i].x * 1000000 + 0.5); obj_list.b_list[i].y = Math.floor(obj_list.b_list[i].y * 1000000 + 0.5); if (obj_list.b_list[i].x > maxx)
                maxx = obj_list.b_list[i].x; if (obj_list.b_list[i].x < minx)
                minx = obj_list.b_list[i].x; if (obj_list.b_list[i].y > maxy)
                maxy = obj_list.b_list[i].y; if (obj_list.b_list[i].y < miny)
                miny = obj_list.b_list[i].y;
        }
        if (this.last_g_x > maxx)
            maxx = this.last_g_x; if (this.last_g_x < minx)
            minx = this.last_g_x; if (this.last_g_y > maxy)
            maxy = this.last_g_y; if (this.last_g_y < miny)
            miny = this.last_g_y; return { 'minx': minx, 'miny': miny, 'maxx': maxx, 'maxy': maxy };
    }
    this.findCenterMBR = function(mbr) { var halfx = parseFloat(mbr.maxx - mbr.minx) / 2; var halfy = parseFloat(mbr.maxy - mbr.miny) / 2; return { 'cx': (parseFloat(mbr.minx) + halfx), 'cy': (parseFloat(mbr.miny) + halfy) }; }
    this.findCorrectScale = function(mbr) {
        var founded = 0; var scale_cnt = 0; var stx = 0; var sty = 0; if (mbr.maxx < 180) { stx = (mbr.maxx - mbr.minx) * 1000000; sty = (mbr.maxy - mbr.miny) * 1000000; }
        else { stx = (mbr.maxx - mbr.minx); sty = (mbr.maxy - mbr.miny); }
        var tempx = 0; var tempy = 0; while (scale_cnt < (this.max_scale - 1)) {
            tempx = this.imageViewerObject.dimensions.width * this.scalex[scale_cnt]; tempy = this.imageViewerObject.dimensions.height * this.scaley[scale_cnt]; if (stx < tempx && sty < tempy) {
                founded = 1; scale_cnt += 2; if (scale_cnt >= (this.max_scale - 1))
                    scale_cnt = this.max_scale - 1; return (scale_cnt);
            }
            scale_cnt++;
        }
        if (scale_cnt >= (this.max_scale - 1))
            scale_cnt = this.max_scale - 1; return (scale_cnt);
    }
    this.last_street = ''; this.last_city = ''; this.last_nr = ''; this.last_city_list = 0; this.last_street_list = 0; this.chooseCity = function(citynr) {
        if (this.last_street == "")
            this.last_street = "sdfsdfsdfss"; this.choosedCityId = this.last_city_list[citynr].city_id; var gquery = this.makeGeocodeQObj1("", this.last_street, this.last_nr, "", "0", this.choosedCityId); var qstring = "key=" + this._131 + "&type=app&gq=" + JSON.stringify(gquery); this.callToServer(qstring, '_mmapgoobj.fnWhenGeoDone');
    }
    this.chooseStreet = function(streetnr) { var gquery = this.makeGeocodeQObj1(this.last_city, "", this.last_nr, "", "0", this.choosedCityId, this.last_street_list[streetnr].street_id, this.last_street_list[streetnr].cnt); var qstring = "key=" + this._131 + "&type=app&gq=" + JSON.stringify(gquery); this.callToServer(qstring, '_mmapgoobj.fnWhenGeoDone'); }
    this.makeGeocodeQObj1 = function(city, street, nr, zip, woj_nr, cityid, streetid, streetcnt) {
        if (cityid)
            cityid += ''; if (streetid)
            streetid += ''; if (nr == "")
            nr = "1"; var gobj = { "city_name": city, "street_name": street, "zip": zip, "woj_nr": woj_nr, "city_id": cityid, "street_id": streetid, "cnt": streetcnt, "house_nr": nr }; return gobj;
    }
    this.makeRouterQuery = function(road_type, vehicle_type, search_type, sLon, sLat, eLon, eLat, qid) { var robj = { "vehicle_type": vehicle_type, "search_type": search_type, "road_type": road_type, "point_list": [{ "X": sLon, "Y": sLat, "type": "0" }, { "X": eLon, "Y": eLat, "type": "1"}] }; return robj; }
    this.PointEqualFilter = function(points) {
        var xy = new Object(); xy.x = new Array(); xy.y = new Array(); var p1 = new Object(); var p2 = new Object(); p1.x = 0; p2.x = 0; p1.y = 0; p2.y = 0; var j = 0; p1.x = points[0].x; p1.y = points[0].y; for (var i = 1; i < points.length; i++) {
            if (i > 0) {
                if (p1.x != points[i].x || p1.y != points[i].y) {
                    xy.x[j] = p1.x; xy.y[j] = p1.y; j++
                    p1.x = points[i].x; p1.y = points[i].y;
                } 
            } 
        }
        xy.x[j] = points[i - 1].x; xy.y[j] = points[i - 1].y; return xy;
    }
    this.XYtoSTR = function(xy) {
        var sxy = ""; var startx = 0; var starty = 0; var endx = 0; var endy = 0; var jest_dod = 0; for (i = 0; i < xy.x.length; i++) { x1 = xy.x[i]; y1 = xy.y[i]; sxy += x1 + " " + y1 + " "; }
        return sxy;
    }
    this.XYtoSTR1 = function(xy, offx, offy) {
        var sxy = ""; var startx = 0; var starty = 0; var endx = 0; var endy = 0; var jest_dod = 0; for (i = 0; i < xy.x.length; i++) { x1 = xy.x[i] - offx; y1 = xy.y[i] - offy; sxy += x1 + " " + y1 + " "; }
        return sxy;
    }
    this.startAntygeo = function(evt) { var ev = _mmapgoobj.getEvent(evt); var xy1 = _mmapgoobj.localizeCoordinates(_mmapgoobj.imageViewerObject, { 'x': ev.clientX, 'y': ev.clientY }); _mmapgoobj.dragging_rubber = true; var lonlat = _mmapgoobj.convertScreenToGeo(xy1.x, xy1.y); _mmapgoobj.findPointDescr(lonlat.lon, lonlat.lat, _mmapgoobj._callback_ageo_resp_function); }
    this.scroll = function()
    { }
    this.startCoordsTool = function(evt) {
        if (!_mmapgoobj.featureClicked) {
            var ev = _mmapgoobj.getEvent(evt); var xy1 = _mmapgoobj.localizeCoordinates(_mmapgoobj.imageViewerObject, { 'x': ev.clientX, 'y': ev.clientY }); var lonlat = _mmapgoobj.convertScreenToGeo(xy1.x, xy1.y); if (_mmapgoobj._mapgo_coords_tool_callback)
                _mmapgoobj._mapgo_coords_tool_callback(lonlat);
        } 
    }
    this.meter_click_cnt = 0; this.meter_click_cnt_all = 0; this.meter_start = new MapgoPoint(); this.meter_start_screen = new MapgoPoint(); this.meter_stop = new MapgoPoint(); this.meter_stop_screen = new MapgoPoint(); this.meter_last_point = new MapgoPoint(); this.meter_handler = 0; this.remove_meter_layer = false; this.meter_dist_all = 0; this.removeMeterLayer = function() { _mmapgoobj.removeLayerByName('_mapgo_icon_meter'); _mmapgoobj.removeLayerByName('_mapgo_pline_meter'); }
    this.startMeter = function(evt) {
        document.body.onmousemove = null; document.body.onmouseup = null; var ev = _mmapgoobj.getEvent(evt); var xy1 = _mmapgoobj.localizeCoordinates(_mmapgoobj.imageViewerObject, { 'x': ev.clientX, 'y': ev.clientY }); _mmapgoobj.dragging_rubber = true; var lonlat = _mmapgoobj.convertScreenToGeo(xy1.x, xy1.y); var clicked2 = false; var dist = 0; if (_mmapgoobj.meter_click_cnt == 1) {
            _mmapgoobj.meter_click_cnt_all++; if (_mmapgoobj.remove_meter_layer)
                _mmapgoobj.meter_click_cnt_all = 0; var pline_coords = new Array(); pline_coords.push({ "lon": _mmapgoobj.meter_start.lon, "lat": _mmapgoobj.meter_start.lat }); pline_coords.push({ "lon": lonlat.lon, "lat": lonlat.lat }); var pline_object = new MapgoPline(); pline_object.coords = pline_coords; pline_object.color = new MapgoColor(0, 0, 255); pline_object.opacity = 0.7; pline_object.weight = 2; var l = _mmapgoobj.searchLayer('_mapgo_pline_meter'); if (l) { var pline = _mmapgoobj.createPlineFeature(l.features.length, pline_object.coords, pline_object.color.R, pline_object.color.G, pline_object.color.B, pline_object.weight, pline_object.opacity, '', 0, pline_object); _mmapgoobj.addFeatureToLayer(l.id, pline); }
            else { var object_list = new Array(); object_list.push(pline_object); _mmapgoobj.addPlinesToMap(object_list, '_mapgo_pline_meter', false); }
            if (!_mmapgoobj.remove_meter_layer) { _mmapgoobj.meter_last_point.lon = lonlat.lon; _mmapgoobj.meter_last_point.lat = lonlat.lat; }
            clicked2 = true; _mmapgoobj.removeLayerByName('_mapgo_icon_meter'); dist = _mmapgoobj.distance(_mmapgoobj.meter_start.lon, _mmapgoobj.meter_start.lat, lonlat.lon, lonlat.lat); _mmapgoobj.meter_dist_all += dist; if (_mmapgoobj.meter_handler)
                _mmapgoobj.meter_handler(dist, lonlat.lon, lonlat.lat);
        }
        if (_mmapgoobj.meter_click_cnt == 0) {
            if (_mmapgoobj.remove_meter_layer)
                _mmapgoobj.removeLayerByName('_mapgo_pline_meter'); if (_mmapgoobj.meter_click_cnt_all == 0) {
                _mmapgoobj.meter_start.lon = lonlat.lon; _mmapgoobj.meter_start.lat = lonlat.lat; _mmapgoobj.meter_start_screen.x = xy1.x; _mmapgoobj.meter_start_screen.y = xy1.y; _mmapgoobj.meter_click_cnt++; var object_list = new Array(); var icon1 = new MapgoIcon(); icon1.descr = ''; icon1.image = 'http://www.geoserwer.pl/api/gfx/kropka.png'; icon1.width = 7; icon1.height = 6; icon1.icon_offx = -3; icon1.icon_offy = -2; icon1.lon = lonlat.lon; icon1.lat = lonlat.lat; object_list.push(icon1); _mmapgoobj.addIconsToMap(object_list, "_mapgo_icon_meter"); if (_mmapgoobj.remove_meter_layer)
                    _mmapgoobj.meter_click_cnt_all = 0; dist = 0;
            } else { if (!_mmapgoobj.remove_meter_layer) { if (_mmapgoobj.meter_last_point.lon != lonlat.lon && _mmapgoobj.meter_last_point.lat != lonlat.lat) { var pline_coords = new Array(); pline_coords.push({ "lon": _mmapgoobj.meter_last_point.lon, "lat": _mmapgoobj.meter_last_point.lat }); pline_coords.push({ "lon": lonlat.lon, "lat": lonlat.lat }); var pline_object = new MapgoPline(); pline_object.coords = pline_coords; pline_object.color = new MapgoColor(0, 0, 255); pline_object.opacity = 0.7; pline_object.weight = 2; var l = _mmapgoobj.searchLayer('_mapgo_pline_meter'); var pline = _mmapgoobj.createPlineFeature(l.features.length, pline_object.coords, pline_object.color.R, pline_object.color.G, pline_object.color.B, pline_object.weight, pline_object.opacity, '', 0, pline_object); _mmapgoobj.addFeatureToLayer(l.id, pline); dist = _mmapgoobj.distance(_mmapgoobj.meter_last_point.lon, _mmapgoobj.meter_last_point.lat, lonlat.lon, lonlat.lat); _mmapgoobj.meter_last_point.lon = lonlat.lon; _mmapgoobj.meter_last_point.lat = lonlat.lat; _mmapgoobj.meter_dist_all += dist; } } }
            if (_mmapgoobj.meter_handler) {
                var x1 = 0; var y1 = 0; if (_mmapgoobj.meter_last_point.lon == 0) { x1 = _mmapgoobj.meter_start.lon; y1 = _mmapgoobj.meter_start.lat; } else { x1 = _mmapgoobj.meter_last_point.lon; y1 = _mmapgoobj.meter_last_point.lat; }
                if (!_mmapgoobj.remove_meter_layer)
                    _mmapgoobj.meter_handler(_mmapgoobj.meter_dist_all, x1, y1); else
                    _mmapgoobj.meter_handler(dist, x1, y1);
            }
            _mmapgoobj.meter_click_cnt_all++;
        }
        if (clicked2)
            _mmapgoobj.meter_click_cnt = 0;
    }
    this.distance = function(wx1, wy1, wx2, wy2) { var x1 = wx1; var y1 = wy1; var x2 = wx2; var y2 = wy2; var dw = 1000 * (Math.sqrt(Math.abs(x1 - x2) * 111.1949260 * Math.cos((y2 + y1) / 2 * 0.0174532925) * Math.abs(x1 - x2) * 111.1949260 * Math.cos((y2 + y1) / 2 * 0.0174532925) + Math.abs(y1 - y2) * 111.1949260 * Math.abs(y1 - y2) * 111.1949260)); return parseInt((dw + '')); }
    this._mapgo_moved_icon = 0; this._mapgo_moved_icon_afterdrag = 0; this._mapgo_last_icon_x = 0; this._mapgo_last_icon_y = 0; this._mapgo_last_viewer_x = 0; this._mapgo_last_viewer_y = 0; this.startDragIcon = function(evt, afterdrag_function) {
        var ev = _mmapgoobj.getEvent(evt); if (__isFF)
            ev.preventDefault(); _mmapgoobj.hideTip(); document.body.onmousemove = _mmapgoobj.moveIcon; _mmapgoobj._mapgo_moved_icon.div.onmouseup = _mmapgoobj.stopDragIcon; _mmapgoobj._mapgo_moved_icon_afterdrag = afterdrag_function; var xy1 = _mmapgoobj.localizeCoordinates(_mmapgoobj.imageViewerObject, { 'x': ev.clientX, 'y': ev.clientY }); _mmapgoobj._mapgo_last_icon_x = parseInt(_mmapgoobj._mapgo_moved_icon.div.style.left); _mmapgoobj._mapgo_last_icon_y = parseInt(_mmapgoobj._mapgo_moved_icon.div.style.top); _mmapgoobj._mapgo_last_viewer_x = xy1.x; _mmapgoobj._mapgo_last_viewer_y = xy1.y; return false;
    }
    this.moveIcon = function(evt) { _mmapgoobj._mapgo_moved_icon.div.onmouseup = _mmapgoobj.stopDragIcon; var ev = _mmapgoobj.getEvent(evt); var xy1 = _mmapgoobj.localizeCoordinates(_mmapgoobj.imageViewerObject, { 'x': ev.clientX, 'y': ev.clientY }); _mmapgoobj._mapgo_moved_icon.div.style.left = _mmapgoobj._mapgo_last_icon_x + xy1.x - _mmapgoobj._mapgo_last_viewer_x + 'px'; _mmapgoobj._mapgo_moved_icon.div.style.top = _mmapgoobj._mapgo_last_icon_y + xy1.y - _mmapgoobj._mapgo_last_viewer_y + 'px'; return false; }
    this.stopDragIcon = function(evt) {
        var ev = _mmapgoobj.getEvent(evt); var cx = parseInt(_mmapgoobj._mapgo_moved_icon.div.style.left) - _mmapgoobj._mapgo_moved_icon.icon_offx; var cy = parseInt(_mmapgoobj._mapgo_moved_icon.div.style.top) - _mmapgoobj._mapgo_moved_icon.icon_offy; var convlonlat = _mmapgoobj.convertScreenToGeo(cx, cy); _mmapgoobj._mapgo_moved_icon.lon = convlonlat.lon; _mmapgoobj._mapgo_moved_icon.lat = convlonlat.lat; _mmapgoobj._mapgo_moved_icon.offx = cx; _mmapgoobj._mapgo_moved_icon.offy = cy; _mmapgoobj._mapgo_moved_icon.x = cx; _mmapgoobj._mapgo_moved_icon.y = cy; document.body.onmousedown = _mmapgoobj.dummy; document.body.onmousemove = _mmapgoobj.dummy; document.body.onmouseup = _mmapgoobj.dummy; _mmapgoobj._mapgo_moved_icon.div.onmouseup = function(evt) { if (!_mmapgoobj._mapgo_moved_icon.mapgoicon.dragable) _mmapgoobj.featureClicked = false; }
        if (_mmapgoobj._mapgo_moved_icon_afterdrag)
            _mmapgoobj._mapgo_moved_icon_afterdrag(_mmapgoobj._mapgo_moved_icon); return false;
    }
    this.dummy = function() { }
    this.startRubber = function(evt) {
        if (!_mmapgoobj.featureClicked)
        { _mmapgoobj.hideTip(); var ev = _mmapgoobj.getEvent(evt); var r = document.getElementById('_mapgo_rubberBand'); r.style.width = 0 + 'px'; r.style.height = 0 + 'px'; var xy1 = _mmapgoobj.localizeCoordinates(_mmapgoobj.imageViewerObject, { 'x': ev.clientX, 'y': ev.clientY }); r.style.left = (xy1.x) + 'px'; r.style.top = (xy1.y) + 'px'; _mmapgoobj.dragging_rubber = true; document.body.onmousemove = _mmapgoobj.moveRubber; document.body.onmouseup = _mmapgoobj.stopRubber; } 
    }
    this.moveRubber = function(evt) {
        var r = document.getElementById('_mapgo_rubberBand'); r.style.visibility = 'visible'; var ev = _mmapgoobj.getEvent(evt); var xy1 = _mmapgoobj.localizeCoordinates(_mmapgoobj.imageViewerObject, { 'x': ev.clientX, 'y': ev.clientY }); var w1 = xy1.x - parseInt(r.style.left); var h1 = xy1.y - parseInt(r.style.top); if (w1 > 0 && h1 > 0) {
            if (xy1.x >= _mmapgoobj.map_posx + _mmapgoobj.imageViewerObject.dimensions.width)
                w1 = _mmapgoobj.imageViewerObject.dimensions.width - (parseInt(r.style.left) - _mmapgoobj.map_posx); if (xy1.y >= _mmapgoobj.map_posy + _mmapgoobj.imageViewerObject.dimensions.height)
                h1 = _mmapgoobj.imageViewerObject.dimensions.height - (parseInt(r.style.top) - _mmapgoobj.map_posy); r.style.width = w1 + 'px'; r.style.height = h1 + 'px';
        }
        return false;
    }
    this.fromCalkToLonLat = function(cx, cy) { var lon = cx * this.scalex[this.currscale - 1] + (-12000000); var lat = cy * this.scaley[this.currscale - 1] + 34000000; return { 'lon': lon, 'lat': lat }; }
    this.stopRubber = function(evt) {
        _mmapgoobj.dragging_rubber = false; var r = document.getElementById('_mapgo_rubberBand'); r.style.visibility = 'hidden'; document.body.onmousemove = null; document.body.onmouseup = null; var calk = _mmapgoobj.przeliczCalkPiksel(_mmapgoobj.curr_center_lon, _mmapgoobj.curr_center_lat); var x1 = parseInt(r.style.left); var y1 = parseInt(r.style.top); var x2 = parseInt(r.style.left) + parseInt(r.style.width); var y2 = parseInt(r.style.top) + parseInt(r.style.height); var lc1x = x1 - _mmapgoobj.imageViewerObject.dimensions.width / 2; var lc1y = y1 - _mmapgoobj.imageViewerObject.dimensions.height / 2; var lc1calkcx = calk.x + lc1x; var lc1calkcy = calk.y + lc1y * (-1); var lc1conv_lonlat = _mmapgoobj.fromCalkToLonLat(lc1calkcx, lc1calkcy); var lc2x = x2 - _mmapgoobj.imageViewerObject.dimensions.width / 2; var lc2y = y2 - _mmapgoobj.imageViewerObject.dimensions.height / 2; var lc2calkcx = calk.x + lc2x; var lc2calkcy = calk.y + lc2y * (-1); var lc2conv_lonlat = _mmapgoobj.fromCalkToLonLat(lc2calkcx, lc2calkcy); var scale_cnt = _mmapgoobj.currscale - 1; var stx = (lc1conv_lonlat.lon - lc2conv_lonlat.lon); if (stx < 0)
            stx = -1 * stx; var sty = (lc1conv_lonlat.lat - lc2conv_lonlat.lat); if (sty < 0)
            sty = -1 * sty; var tempx = 0; var tempy = 0; if (parseInt(r.style.width) < 3 || parseInt(r.style.height) < 3) { scale_cnt--; }
        else
            while (scale_cnt >= (_mmapgoobj.min_scale - 1)) {
            tempx = _mmapgoobj.imageViewerObject.dimensions.width * _mmapgoobj.scalex[scale_cnt]; tempy = _mmapgoobj.imageViewerObject.dimensions.height * _mmapgoobj.scaley[scale_cnt]; if (stx >= tempx && sty >= tempy) { break; }
            scale_cnt--;
        }
        if (scale_cnt <= (_mmapgoobj.min_scale - 1))
            scale_cnt = _mmapgoobj.min_scale; else
            scale_cnt++; var cx = x1 + parseInt(r.style.width) / 2; var cy = y1 + parseInt(r.style.height) / 2; var ncx1 = cx - _mmapgoobj.imageViewerObject.dimensions.width / 2; var ncy1 = cy - _mmapgoobj.imageViewerObject.dimensions.height / 2; var calkcx = calk.x + ncx1; var calkcy = calk.y + ncy1 * (-1); var conv_lonlat = _mmapgoobj.fromCalkToLonLat(calkcx, calkcy); _mmapgoobj.centerTo(conv_lonlat.lon, conv_lonlat.lat, scale_cnt); _mmapgoobj.recalculateLayersCoords();
    }
    this._mapgo_default_cursor = false; this._mapgo_cursor_current = 'url(http://www.geoserwer.pl/api/gfx/hand32.cur),pointer'; this.showDefaultCursor = function(flag) {
        _mmapgoobj._mapgo_default_cursor = flag; if (flag) { _mmapgoobj.imageViewerObject.activeSurface.style.cursor = 'default'; }
        else
            _mmapgoobj.imageViewerObject.activeSurface.style.cursor = _mmapgoobj._mapgo_cursor_current;
    }
    this.setRubber = function() { _mmapgoobj.imageViewerObject.activeSurface.onmousedown = _mmapgoobj.startRubber; if (!_mmapgoobj._mapgo_default_cursor) { _mmapgoobj.imageViewerObject.activeSurface.style.cursor = 'crosshair'; _mmapgoobj._mapgo_cursor_current = 'crosshair'; } }
    this.setAgeo = function() { _mmapgoobj.imageViewerObject.activeSurface.onmousedown = _mmapgoobj.startAntygeo; if (!_mmapgoobj._mapgo_default_cursor) { _mmapgoobj.imageViewerObject.activeSurface.style.cursor = 'help'; _mmapgoobj._mapgo_cursor_current = 'help'; } }
    this._mapgo_coords_tool_callback = 0;

    this.setCoordsTool = function(callback_function) {
        _mmapgoobj.imageViewerObject.activeSurface.onmousedown = _mmapgoobj.startCoordsTool;
        _mmapgoobj._mapgo_coords_tool_callback = callback_function;
        if (!_mmapgoobj._mapgo_default_cursor) {
            _mmapgoobj.imageViewerObject.activeSurface.style.cursor = 'auto';
            _mmapgoobj._mapgo_cursor_current = 'auto';
        } 
    }
    this.setMeter = function(callback_function, resetDrawnLines) {
        _mmapgoobj.imageViewerObject.activeSurface.onmousedown = _mmapgoobj.startMeter; if (!_mmapgoobj._mapgo_default_cursor) { _mmapgoobj.imageViewerObject.activeSurface.style.cursor = 'crosshair'; _mmapgoobj._mapgo_cursor_current = 'crosshair'; }
        _mmapgoobj.meter_handler = callback_function; _mmapgoobj.remove_meter_layer = resetDrawnLines;
    }
    this.resetMeter = function() { _mmapgoobj.meter_click_cnt_all = 0; _mmapgoobj.meter_dist_all = 0; _mmapgoobj.removeLayerByName('_mapgo_icon_meter'); _mmapgoobj.removeLayerByName('_mapgo_pline_meter'); }
    this.setMoveMap = function() { _mmapgoobj.imageViewerObject.activeSurface.onmousedown = _mmapgoobj.pressViewer; if (!_mmapgoobj._mapgo_default_cursor) { this.imageViewerObject.activeSurface.style.cursor = 'url(http://www.geoserwer.pl/api/gfx/hand32.cur),pointer'; _mmapgoobj._mapgo_cursor_current = 'url(http://www.geoserwer.pl/api/gfx/hand32.cur),pointer'; } }
    this.showToolbar = function() { document.getElementById("_mapgo_toolbar").style.visibility = 'visible'; document.getElementById("_mapgo_toolbar").style.display = 'block'; }
    this.hideToolbar = function() { document.getElementById("_mapgo_toolbar").style.visibility = 'hidden'; }
    this.checkPosition = function(obj_top, obj_left, obj_width, obj_height, tip_width, tip_height, mainminx, mainminy, mainwidth, mainheight) {
        obj_top = parseInt(obj_top); obj_left = parseInt(obj_left); obj_width = parseInt(obj_width); obj_height = parseInt(obj_height); if ((obj_left + obj_width + tip_width) <= (mainminx + mainwidth) && (obj_top - tip_height >= mainminy))
            return { "x": (obj_left + obj_width), "y": (obj_top - tip_height) }; if ((obj_top - tip_height >= mainminy) && ((obj_left - tip_width) >= mainminx))
            return { "y": (obj_top - tip_height), "x": (obj_left - tip_width) }; if ((obj_left + obj_width + tip_width) <= (mainminx + mainwidth) && (obj_top + obj_height + tip_height) <= (mainminy + mainheight))
            return { "x": (obj_left + obj_width), "y": (obj_top + obj_height) }; if (((obj_left - tip_width) >= mainminx) && (obj_top + obj_height + tip_height) <= (mainminy + mainheight))
            return { "x": (obj_left - tip_width), "y": (obj_top + obj_height) };
    }
    this.hideUpperLayer = function() { var tiles = this.imageViewerObject.tiles1; for (var c = 0; c < tiles.length; c += 1) { for (var r = 0; r < tiles[c].length; r += 1) { var tile = tiles[c][r]; tile.img.style.visibility = 'hidden'; } } }
    this.showUpperLayer = function() { var tiles = this.imageViewerObject.tiles1; for (var c = 0; c < tiles.length; c += 1) { for (var r = 0; r < tiles[c].length; r += 1) { var tile = tiles[c][r]; tile.img.style.visibility = 'visible'; } } }
    this.disableSelection = function(target) {
        if (typeof target.onselectstart != "undefined")
            target.onselectstart = function() { return false }
        else if (typeof target.style.MozUserSelect != "undefined")
            target.style.MozUserSelect = "none"
        else
            target.onmousedown = function() { return false }
        target.style.cursor = "default"
    }
    this.createMapgoTipTxt = function() { var _tip = document.getElementById('_mapgo_tip'); var _tip_txt = document.getElementById('mapgo_tip_txt'); }
    this.baseTipUrl = 'http://www.geoserwer.pl/api/gfx/'; this.tip_html_ff = '<div id="mapgo_tip_tip_tl" style="width:10px;height:10px;position:absolute;top:0px;left:0px;background:no-repeat;background-image:url(' + this.baseTipUrl + 'tip_tl.png)"></div><div id="mapgo_tip_tip_t" style="background:url(' + this.baseTipUrl + 'tip_t.png);position:absolute;width:100px;height:10px;top:0px;left:5px"></div><div onclick="_mmapgoobj.hideTip();" onmouseout="_mmapgoobj.swapTipClose(2)" onmouseover="_mmapgoobj.swapTipClose(1)" id="mapgo_tip_tip_tr" style="width:13px;height:10px;background-image:url(' + this.baseTipUrl + 'tip_tr.png);position:absolute;top:0px;left:105px"></div><div id="mapgo_tip_tip_r" style="width:13px;height:100px;background-image:url(' + this.baseTipUrl + 'tip_r.png);position:absolute;top:10px;left:105px"></div><div id="mapgo_tip_tip_br" style="width:13px;height:10px;background:no-repeat;background-image:url(' + this.baseTipUrl + 'tip_br.png);position:absolute;top:105px;left:105px"></div><div id="mapgo_tip_tip_b" style="background:url(' + this.baseTipUrl + 'tip_b.png);background-repeat: repeat-x;position:absolute;width:100px;height:10px;top:105px;left:5px;"></div><div id="mapgo_tip_tip_bl" style="background:no-repeat;width:10px;height:10px;background-image:url(' + this.baseTipUrl + 'tip_bl.png);position:absolute;top:105px;left:0px"></div><div id="mapgo_tip_tip_l" style="width:10px;height:100px;background-image:url(' + this.baseTipUrl + 'tip_l.png);position:absolute;top:5px;left:0px"></div><div id="mapgo_tip_foot" style="visibility:hidden;position:absolute;top:80px;left:280px;width:40px;height:10px"><img id="mapgo_tip_foot_img" src="' + this.baseTipUrl + 'foot_c.png"/></div><div id="mapgo_tip_txt" style="position:absolute;left:5px;top:5px;background:url(http://www.geoserwer.pl/api/gfx/tip_s.png);font-family: Trebuchet Ms;font-size: 11px"></div>'; this.swapTipClose = function(type) {
        if (type == 1)
            document.getElementById('mapgo_tip_tip_tr').style.backgroundImage = 'url(' + this.baseTipUrl + 'tip_tr_actv.png)'; else
            document.getElementById('mapgo_tip_tip_tr').style.backgroundImage = 'url(' + this.baseTipUrl + 'tip_tr.png)';
    }
    this.manageUpperLayer = function(t) { for (var c = 0; c < this.imageViewerObject.tiles1.length; c += 1) { for (var r = 0; r < this.imageViewerObject.tiles1[c].length; r += 1) { var tile = this.imageViewerObject.tiles1[c][r]; tile.img.style.visibility = t; } } }
    this.changeMapMode = function(nmap_mode) {
        this.map_mode = nmap_mode; if (nmap_mode == 1 || nmap_mode == 3 || nmap_mode == 5)
            this.manageUpperLayer('hidden'); else
            this.manageUpperLayer('visible'); this.resetKafle(); this.reloadTiles(this.imageViewerObject.start.x, this.imageViewerObject.start.y, true);
    }
    this.initMap = function(x, y, scale, w, h, posx, posy, nmap_mode, tiles_dir) {
        if (nmap_mode)
            this.map_mode = nmap_mode; var img1 = new Image(); img1.src = 'http://www.geoserwer.pl/api/gfx/tip_tr.png'; if (_mapgo_BrowserDetect.browser.indexOf('Opera') >= 0) { this.opera_browser = true; }
        if (!posx)
            posx = 0; if (!posy)
            posy = 0; this.map_posx = posx; this.map_posy = posy; this.map_width = w; this.map_height = h; document.write('<style type="text/css" title="text/css">'); document.write('.mapgoimageViewer{position: relative;top:' + posy + 'px;left:' + posx + 'px;width:' + w + 'px;height:' + h + 'px;background-color: transparent;}'); document.write('.mapgoimageViewer .mapgowell, .mapgoimageViewer .mapgosurface{text-align:left;margin: 0;padding: 0;width: 100%;height: 100%;position: absolute;top: 0px;left: 0px;cursor:url("http://www.geoserwer.pl/api/gfx/hand32.cur"),pointer;background-color: transparent;overflow: hidden;}'); document.write('.mapgoimageViewer .mapgowell{background-color: transparent;background-image: url("http://www.geoserwer.pl/api/gfx/ajax-loading.gif");overflow: hidden;}'); document.write('.mapgoimageViewer .mapgosurface{background-color: transparent;background-image: url("http://www.geoserwer.pl/api/gfx/backg1.gif");background-repeat: no-repeat;background-position: center center;overflow: hidden;}'); document.write('.mapgoimageViewer .mapgowell .mapgotile{border: 0;margin: 0;padding: 0;position: absolute;top: 0px;left: 0px;display: block;}'); document.write('</style>'); if (document.all && !this.opera_browser)
            document.write('<div id="_mapgo_root" class="mapgoimageViewer" ><div class="mapgowell"></div><div id="surf1" class="mapgosurface"></div><div id="_mapgo_powered_txt" style="position:absolute !important"></div><div id="_mapgo_logo" style="position:absolute !important"><img id="_mapgo_logo_img" src="http://www.geoserwer.pl/api/gfx/plogo.png"></div><div ID="_mapgo_rubberBand" style="position: absolute;visibility: hidden;width: 0px; height: 0px;border: 1px solid #000000;background-color:#FF0000;filter:alpha(opacity:50);"></div><div id="_mapgo_toolbar" style="visibility:hidden;position:absolute;top:5px;left:5px;"><div onclick="_mmapgoobj.zoom_in();" style="position:absolute;top:0px;left:20px;width:22px;height:20px;background: url(http://www.geoserwer.pl/api/gfx/plus.png) left top no-repeat;"></div><div onclick="_mmapgoobj.zoom_out();" style="position:absolute;top:20px;left:20px;width:22px;height:20px;background: url(http://www.geoserwer.pl/api/gfx/minus.png) left top no-repeat;"></div><div onclick="_mmapgoobj.moveUp(6);" style="position:absolute;top:45px;left:20px;width:22px;height:20px;background: url(http://www.geoserwer.pl/api/gfx/n.png) left top no-repeat;"></div><div onclick="_mmapgoobj.moveLeft(6);" style="position:absolute;top:65px;left:0px;width:20px;height:22px;background: url(http://www.geoserwer.pl/api/gfx/w.png) left top no-repeat;"></div><div style="position:absolute;top:65px;left:20px;width:20px;height:22px;background: url(http://www.geoserwer.pl/api/gfx/c.png) left top no-repeat;"></div><div onclick="_mmapgoobj.moveRight(6);" style="position:absolute;top:65px;left:40px;width:20px;height:22px;background: url(http://www.geoserwer.pl/api/gfx/e.png) left top no-repeat;"></div><div onclick="_mmapgoobj.moveDown(6);" style="position:absolute;top:87px;left:20px;width:22px;height:20px;background:url(http://www.geoserwer.pl/api/gfx/s.png) left top no-repeat;"></div></div><div id="_mapgo_tip" style="position:absolute;visibility:hidden;top:40px;left:100px;z-index:6000">' + this.tip_html_ff + '</div></div>'); else
            document.write('<div id="_mapgo_root" class="mapgoimageViewer" ><div class="mapgowell"></div><div id="surf1" class="mapgosurface"></div><div id="_mapgo_powered_txt" style="position:absolute !important"></div><div id="_mapgo_logo" style="position:absolute !important"><img id="_mapgo_logo_img" src="http://www.geoserwer.pl/api/gfx/plogo.png"></div><div ID="_mapgo_rubberBand" style="position: absolute;visibility: hidden;width: 0px; height: 0px;border: 1px solid #000000;background-color:#FF0000;opacity:0.5;"></div><div id="_mapgo_toolbar" style="visibility:hidden;position:absolute;top:5px;left:5px;"><div onclick="_mmapgoobj.zoom_in();" style="position:absolute;top:0px;left:20px;width:22px;height:20px;background: url(http://www.geoserwer.pl/api/gfx/plus.png) left top no-repeat;"></div><div onclick="_mmapgoobj.zoom_out();" style="position:absolute;top:20px;left:20px;width:22px;height:20px;background: url(http://www.geoserwer.pl/api/gfx/minus.png) left top no-repeat;"></div><div onclick="_mmapgoobj.moveUp(6);" style="position:absolute;top:45px;left:20px;width:22px;height:20px;background: url(http://www.geoserwer.pl/api/gfx/n.png) left top no-repeat;"></div><div onclick="_mmapgoobj.moveLeft(6);" style="position:absolute;top:65px;left:0px;width:20px;height:22px;background: url(http://www.geoserwer.pl/api/gfx/w.png) left top no-repeat;"></div><div style="position:absolute;top:65px;left:20px;width:20px;height:22px;background: url(http://www.geoserwer.pl/api/gfx/c.png) left top no-repeat;"></div><div onclick="_mmapgoobj.moveRight(6);" style="position:absolute;top:65px;left:40px;width:20px;height:22px;background: url(http://www.geoserwer.pl/api/gfx/e.png) left top no-repeat;"></div><div onclick="_mmapgoobj.moveDown(6);" style="position:absolute;top:87px;left:20px;width:22px;height:20px;background:url(http://www.geoserwer.pl/api/gfx/s.png) left top no-repeat; "></div></div><div id="_mapgo_tip" style="position:absolute;visibility:hidden;top:40px;left:100px;z-index:6000">' + this.tip_html_ff + '</div></div>'); this.disableSelection(document.getElementById("_mapgo_root")); this.disableSelection(document.getElementById("_mapgo_toolbar")); this.disableSelection(document.getElementById("_mapgo_powered_txt")); this.disableSelection(document.getElementById("_mapgo_logo")); if (this._131 == '99601825-01ec-496f-a588-40ad0d2a911a')
            document.getElementById("_mapgo_logo").style.visibility = 'hidden'; document.getElementById("_mapgo_powered_txt").style.left = (w - 325) + 'px'; document.getElementById("_mapgo_powered_txt").style.top = (h - 21) + 'px'; if (document.all && !this.opera_browser) { var logo_img = document.getElementById('_mapgo_logo_img'); logo_img.src = 'http://www.geoserwer.pl/api/gfx/blank.gif'; logo_img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://www.geoserwer.pl/api/gfx/plogo.png',sizingMethod='image')"; }
        document.getElementById("_mapgo_logo").style.left = (1) + 'px'; document.getElementById("_mapgo_logo").style.top = (h - 41) + 'px'; document.getElementById("_mapgo_toolbar").style.left = (5) + 'px'; document.getElementById("_mapgo_toolbar").style.top = (5) + 'px'; document.getElementById("_mapgo_toolbar").style.zIndex = 5500; if (document.all && !this.opera_browser)
            this.prepareTipIE(); if (!tiles_dir || tiles_dir == '')
            tiles_dir = 'http://www.mapgo.pl/tiles/mapa7'; if (this.vector_tile_dir == '')
            this.vector_tile_dir = tiles_dir; if (this.orto_tile_dir == '')
            this.orto_tile_dir = tiles_dir; if (this.hybrid_tile_dir == '')
            this.hybrid_tile_dir = tiles_dir; if (tiles_dir && tiles_dir != '') { this.setUpperTilesDir(tiles_dir); this.prepareViewer(document.getElementById("_mapgo_root"), tiles_dir, this.hybrid_tile_dir, 250, 30, 30, w, h); }
        else { this.setUpperTilesDir('http://www.mapgo.pl/tiles/mapa7'); this.prepareViewer(document.getElementById("_mapgo_root"), 'http://www.mapgo.pl/tiles/mapa7', this.hybrid_tile_dir, 250, 30, 30, w, h); }
        if (nmap_mode == 1 || nmap_mode == 3 || nmap_mode == 5)
            this.manageUpperLayer('hidden'); this.centerTo(x, y, scale); this.start_centercalkx = this.curr_centercalkx; this.start_centercalky = this.curr_centercalky; var object_list = new Array(); var icon1 = new MapgoIcon(); icon1.descr = ''; icon1.image = 'http://www.geoserwer.pl/api/gfx/kropka.png'; icon1.width = 7; icon1.height = 6; icon1.icon_offx = -3; icon1.icon_offy = -2; icon1.lon = x; icon1.lat = y; object_list.push(icon1); this.addIconsToMap(object_list, "_mapgo_icon_meter"); this.removeLayerByName('_mapgo_icon_meter'); var lldiv = document.createElement('div'); lldiv.style.position = 'absolute'; lldiv.style.width = '1px'; lldiv.style.height = '1px'; this.imageViewerObject.activeSurface.appendChild(lldiv); window.onscroll = _mmapgoobj.scroll;
    }
    this.city1 = ''; this.street1 = ''; this.no1 = ''; this.city2 = ''; this.street2 = ''; this.no2 = ''; this.AddressOneFounded = 0; this.startPoint = { "X": 0, "Y": 0 }; this.endPoint = { "X": 0, "Y": 0 }; this._startroutedescr = ""; this._stoproutedescr = ""; this._trasa_dlugosc = '&nbsp'; this._trasa_czas = '&nbsp'; this._curr_address = ''; this.setAllPoland = function() { this.centerTo(19000000, 52250000, 17); this.recalculateLayersCoords(); }
    this.findAddress = function(city, str_no, listener_function) {
        
        var strn = this.splitStreetNo(str_no);
        this.queryGeocoder(city, strn.street, strn.no, '', '0', listener_function);
    }
    this.getTimeDescr = function(time) {
        var minutes = Math.round(time / 600); var hours = Math.floor(minutes / 60); minutes = minutes - hours * 60; if (hours > 0)
            return hours + 'h' + minutes + 'm'; else
            return minutes + 'm';
    }
    this.addRouteIcons = function(slon, slat, elon, elat, sdescr, edescr) { var objs = new Array(); var sobj = { 'type': 1, 'lon': slon, 'lat': slat, 'descr': sdescr, 'width': 46, 'height': 34, 'image': 'http://www.geoserwer.pl/api/gfx/start.png', 'icon_offx': -23, 'icon_offy': -34 }; var eobj = { 'type': 1, 'lon': elon, 'lat': elat, 'descr': edescr, 'width': 46, 'height': 34, 'image': 'http://www.geoserwer.pl/api/gfx/meta.png', 'icon_offx': -23, 'icon_offy': -34 }; objs.push(sobj); objs.push(eobj); this.addIconsToMap(objs, 'ikony_trasa', false); }
    this.zoom_in = function() {
        _mmapgoobj.changeScale(_mmapgoobj.currscale - 1);
        //document.getElementById("skala").innerHTML = _mmapgoobj.currscale;
        //window.status = _mmapgoobj.currscale;
    }
    this.zoom_out = function() {
    _mmapgoobj.changeScale(_mmapgoobj.currscale + 1);
    //document.getElementById("skala").innerHTML = _mmapgoobj.currscale;
        //window.status = _mmapgoobj.currscale;
    }
    this.makeTipFrames = function(w, h) { document.getElementById("mapgo_tip_tip_t").style.width = w + 0 + 'px'; document.getElementById("mapgo_tip_tip_tr").style.left = (w + 5 + 0) + 'px'; document.getElementById("mapgo_tip_tip_r").style.left = (w + 5 + 0) + 'px'; document.getElementById("mapgo_tip_tip_r").style.height = h + 'px'; document.getElementById("mapgo_tip_tip_br").style.top = (h + 5) + 'px'; document.getElementById("mapgo_tip_tip_br").style.left = (w + 5 + 0) + 'px'; document.getElementById("mapgo_tip_tip_b").style.top = (h + 5) + 'px'; document.getElementById("mapgo_tip_tip_b").style.width = w + 'px'; document.getElementById("mapgo_tip_tip_bl").style.top = (h + 5) + 'px'; document.getElementById("mapgo_tip_tip_l").style.height = h + 'px'; document.getElementById("mapgo_tip_txt").style.width = w + 'px'; document.getElementById("mapgo_tip_txt").style.height = h + 'px'; }
    this.makeTip = function(tekst, w, h) {
        document.getElementById("mapgo_tip_txt").innerHTML = tekst; if (w && h)
            _mmapgoobj.makeTipFrames(w, h); else
            _mmapgoobj.makeTipFrames(document.getElementById("mapgo_tip_txt").offsetWidth, document.getElementById("mapgo_tip_txt").offsetHeight);
    }
    this.fillTipTxt = function() { }
    this._dymek_lb = document.createElement('img'); this._dymek_rb = document.createElement('img'); this._dymek_lt = document.createElement('img'); this._dymek_rt = document.createElement('img'); this.prepareTipIE = function() {
        var foot_img = document.getElementById("mapgo_tip_foot_img")
        var imgsrc = foot_img.src; var _blank = 'http://www.geoserwer.pl/api/gfx/blank.gif'; foot_img.src = _blank; foot_img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + imgsrc + "',sizingMethod='image')"; var _base = 'http://www.geoserwer.pl/api/gfx/'; this._dymek_lb.src = _blank; this._dymek_lb.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + _base + "foot_d.png',sizingMethod='image')"; this._dymek_rb.src = _blank; this._dymek_rb.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + _base + "foot_c.png',sizingMethod='image')"; this._dymek_lt.src = _blank; this._dymek_lt.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + _base + "foot_a.png',sizingMethod='image')"; this._dymek_rt.src = _blank; this._dymek_rt.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + _base + "foot_b.png',sizingMethod='image')";
    }
    this.positionDymek = function(w, h, type) {
        w = parseInt(w); h = parseInt(h); var _base = 'http://www.geoserwer.pl/api/gfx/'; var foot = document.getElementById("mapgo_tip_foot"); var foot_img = document.getElementById("mapgo_tip_foot_img"); foot.style.verticalalign = 'none'; foot_img.style.verticalalign = 'none'; switch (type) {
            case 1: if (document.all && !this.opera_browser) { foot.removeChild(foot_img); this._dymek_lb.id = "mapgo_tip_foot_img"; foot.appendChild(this._dymek_lb); }
                else
                    foot_img.src = _base + 'foot_d.png'; foot.style.left = (parseInt(document.getElementById("mapgo_tip_tip_bl").style.left)) + 'px'; var roznica = (parseInt(foot.offsetHeight) - parseInt(foot.style.height)) / 2; document.getElementById("mapgo_tip_foot_img").style.top = '0px'; foot.style.top = parseInt(document.getElementById("mapgo_tip_tip_b").style.top) + (9 - roznica) + 'px'; break; case 0: if (document.all && !this.opera_browser) { foot.removeChild(foot_img); this._dymek_rb.id = "mapgo_tip_foot_img"; foot.appendChild(this._dymek_rb); }
                else
                    foot_img.src = _base + 'foot_c.png'; foot.style.left = (parseInt(document.getElementById("mapgo_tip_tip_bl").style.left) + w - 27) + 'px'; var roznica = (parseInt(foot.offsetHeight) - parseInt(foot.style.height)) / 2; document.getElementById("mapgo_tip_foot_img").style.top = '0px'; foot.style.top = (parseInt(document.getElementById("mapgo_tip_tip_b").style.top) + (9 - roznica)) + 'px'; break; case 2: if (document.all && !this.opera_browser) { foot.removeChild(foot_img); this._dymek_lt.id = "mapgo_tip_foot_img"; foot.appendChild(this._dymek_lt); }
                else
                    foot_img.src = _base + 'foot_a.png'; foot.style.left = (parseInt(document.getElementById("mapgo_tip_tip_tl").style.left)) + 'px'; document.getElementById("mapgo_tip_foot_img").style.top = '0px'; var roznica = (parseInt(foot.offsetHeight) - parseInt(foot.style.height)) / 2; var img = document.getElementById('mapgo_tip_foot_img'); foot.style.top = (parseInt(document.getElementById("mapgo_tip_tip_t").style.top) - (9 + roznica)) + 'px'; break; case 3: if (document.all && !this.opera_browser) { foot.removeChild(foot_img); this._dymek_rt.id = "mapgo_tip_foot_img"; foot.appendChild(this._dymek_rt); }
                else
                    foot_img.src = _base + 'foot_b.png'; foot.style.left = (parseInt(document.getElementById("mapgo_tip_tip_tl").style.left) + w - 27) + 'px'; var roznica = (parseInt(foot.offsetHeight) - parseInt(foot.style.height)) / 2; document.getElementById("mapgo_tip_foot_img").style.top = '0px'; foot.style.top = (parseInt(document.getElementById("mapgo_tip_tip_t").style.top) - (9 + roznica)) + 'px'; break; default: if (document.all && !this.opera_browser) { foot.removeChild(foot_img); this._dymek_lb.id = "mapgo_tip_foot_img"; foot.appendChild(this._dymek_lb); }
                else
                    foot_img.src = _base + 'foot_d.png'; foot.style.left = (parseInt(document.getElementById("mapgo_tip_tip_bl").style.left)) + 'px'; foot.style.top = parseInt(document.getElementById("mapgo_tip_tip_b").style.top) + 4 + 'px'; break;
        }
        foot.style.visibility = 'visible';
    }
    this.positionTip = function(e) {
        var tipobj = document.getElementById("_mapgo_tip"); var _mw = parseInt(this.imageViewerObject.style.width); var _mh = parseInt(this.imageViewerObject.style.height); var minx = 0; var miny = 0; var mainwidth = _mw; var mainheight = _mh; var mw = parseInt(document.getElementById("mapgo_tip_txt").style.width) + 10; var mh = parseInt(document.getElementById("mapgo_tip_txt").style.height) + 10; var xy = _mmapgoobj.checkPosition(e.style.top, e.style.left, e.offsetWidth, e.offsetHeight, mw, mh, minx, miny, mainwidth, mainheight); tipobj.style.left = (xy.x) + 'px'; if (xy.type == 1 || xy.type == 0) {
            tipobj.style.top = (xy.y) + 'px'; if (document.all && !this.opera_browser)
                document.getElementById("mapgo_tip_txt").style.top = (parseInt(document.getElementById("mapgo_tip_tip_tl").style.top) + 5) + 'px';
        }
        else
            tipobj.style.top = (xy.y) + 'px'; tipobj.style.top = parseInt(tipobj.style.top) + 'px'; tipobj.style.visibility = 'visible'; _mmapgoobj.positionDymek(document.getElementById("mapgo_tip_txt").style.width, document.getElementById("mapgo_tip_txt").style.height, xy.type); if (!_mmapgoobj.tip_corrected) { _mmapgoobj.tip_corrected = true; } 
    }
    this.tip_corrected = false; this.checkPosition = function(obj_top, obj_left, obj_width, obj_height, tip_width, tip_height, mainminx, mainminy, mainwidth, mainheight) {
        obj_top = parseInt(obj_top); obj_left = parseInt(obj_left); obj_width = parseInt(obj_width); obj_height = parseInt(obj_height); if ((obj_left + obj_width + tip_width) <= (mainminx + mainwidth) && (obj_top - tip_height >= mainminy))
            return { "x": (obj_left + obj_width), "y": (obj_top - tip_height), "type": 1 }; if ((obj_top - tip_height >= mainminy) && ((obj_left - tip_width) >= mainminx))
            return { "y": (obj_top - tip_height), "x": (obj_left - tip_width), "type": 0 }; if ((obj_left + obj_width + tip_width) <= (mainminx + mainwidth) && (obj_top + obj_height + tip_height) <= (mainminy + mainheight))
            return { "x": (obj_left + obj_width), "y": (obj_top + obj_height), "type": 2 }; if (((obj_left - tip_width) >= mainminx) && (obj_top + obj_height + tip_height) <= (mainminy + mainheight))
            return { "x": (obj_left - tip_width), "y": (obj_top + obj_height), "type": 3 }; return { "x": (obj_left + obj_width), "y": (obj_top - tip_height), "type": 1 };
    }
    this.hideTip = function() { document.getElementById("_mapgo_tip").style.visibility = 'hidden'; document.getElementById("_mapgo_tip").style.top = '40px'; document.getElementById("_mapgo_tip").style.left = '100px'; document.getElementById("mapgo_tip_foot").style.visibility = 'hidden'; _mmapgoobj.tip_corrected = false; this.last_div_tip = 0; }
    this.replaceLetters = function(desc) { desc = desc.replace('ę', 'e'); desc = desc.replace('Ę', 'E'); desc = desc.replace('ó', 'o'); desc = desc.replace('Ó', 'O'); desc = desc.replace('Ą', 'A'); desc = desc.replace('ą', 'a'); desc = desc.replace('ś', 's'); desc = desc.replace('Ś', 'S'); desc = desc.replace('ł', 'l'); desc = desc.replace('Ł', 'L'); desc = desc.replace('Ż', 'Z'); desc = desc.replace('ż', 'z'); desc = desc.replace('Ż', 'Z'); desc = desc.replace('ź', 'z'); desc = desc.replace('Ź', 'z'); desc = desc.replace('ć', 'c'); desc = desc.replace('Ć', 'C'); desc = desc.replace('ń', 'n'); desc = desc.replace('Ń', 'N'); desc = desc.replace('ü', 'u'); desc = desc.replace('ö', 'o'); desc = desc.replace('š', 's'); desc = desc.replace('á', 'a'); desc = desc.replace('ë', 'e'); return desc; }
    this.qid = ""; this.callToServer = function(querystring, callbackFunction) {
        querystring = this.replaceLetters(querystring); querystring = this.replaceLetters(querystring);

        var URL = 'http://www.geoserwer.pl/geoserwer/geokoder/service.aspx?' + querystring + '&callb=' + callbackFunction; cdAJAX.get({ url: URL, onSuccess: function(obj) { } }); return false;
    }
    this.callToServerUrl = function(querystring, callbackFunction, url) { var URL = url + '?' + querystring + '&callb=' + callbackFunction + '&qid=' + this.qid; cdAJAX.get({ url: URL, onSuccess: function(obj) { } }); return false; }
    this.disableSelection = function(target) {
        if (typeof target.onselectstart != "undefined")
            target.onselectstart = function() { return false }
        else if (typeof target.style.MozUserSelect != "undefined")
            target.style.MozUserSelect = "none"
        else
            target.onmousedown = function() { return false }
        target.style.cursor = "default"
    } 
}
