﻿/// <reference name="MicrosoftAjax.js"/>
/// <reference path="OpenLayers.js"/>

var debug = true;
var first = true;
var opcinaBounds = null;

function loadScriptFrame(url) {
    if (debug) loadReportFrame(url);
    else NullFrame.location.href = url;
}

function loadReportFrame(url) {
    ReportFrame.location.href = url;
}

function zoomOpcina() {
    var opcina = $get(elementIds.ddOpcina).value;
    if (opcina == "") return;
    makeRequest("PostaviVrijednost.aspx?a=zoomopcina&v=" + opcina, "GET", 2000, mainMap, gotZoomOpcina);
    loadPlans("divPlanoviOpcina", opcina, true);
    getStats(opcina);
}

function gotZoomOpcina(executor, eventArgs) {
    opcinaBounds = gotZoomData(executor, eventArgs);
}

function zoomNaselje() {
    var naselje = $get(elementIds.ddNaselje).value;
    if (naselje == "") return;
    $find(elementIds.aceUlica).set_contextKey(naselje);
    makeRequest("PostaviVrijednost.aspx?a=zoomnaselje&v=" + naselje, "GET", 2000, mainMap, gotZoomData);
}

function gotZoomData(executor, eventArgs) {
    if (executor.get_responseAvailable()) {
        if (executor.get_statusCode() == 200) {
            writeDebug(executor);
            var s = executor.get_responseData();
            var bounds = eval(s);
            var i = executor.get_webRequest().get_userContext();
            i.zoomToExtent(bounds);
            return bounds;
        }
        else {
            if (debug) alert("no data");
        }
    }
}

function popupPlan() {
    if (first) {
        $find('mpePlan').show();
        //setTimeout("PopupFrame.ExecuteMapAction(14);", 1000);
        //first = false;
    }
    else {
        //PopupFrame.ExecuteMapAction(14);
        setTimeout('$find("mpePlan").show();', 500);
    }
}

function makeRequest(url, verb, timeout, context, callback) {
    var req = new Sys.Net.WebRequest();
    req.set_url(url);
    req.set_timeout = timeout;
    req.set_httpVerb(verb);
    req.set_userContext(context);
    req.add_completed(callback);
    req.invoke();
}

function loadPlans(id, mb, search) {
    makeRequest("Planovi.aspx?a=get&v=" + mb + "&s=" + search, "GET", 2000, id, onGotPlans);
}

function onGotPlans(executor, eventArgs) {
    if (executor.get_responseAvailable()) {
        if (executor.get_statusCode() == 200) {
            writeDebug(executor);
            var s = executor.get_responseData();
            var i = executor.get_webRequest().get_userContext();
            $get(i).innerHTML = s;
        }
        else {
            if (debug) alert("no data");
        }
    }
}

function openPlan(uri, search) {
    makeRequest("Planovi.aspx?a=set&v=" + escape(uri), "GET", 2000, search, onPlanSet);
}

function onPlanSet(executor, eventArgs) {
    if (executor.get_responseAvailable()) {
        switch (executor.get_statusCode()) {
            case 200:
                var response = eval('(' + executor.get_responseData() + ')');
                if (response.debug) {
                    writeDebug(response.debug);
                }
                if (response.status && response.status == 'OK') {
                    var opcina = executor.get_webRequest().get_userContext();
                    $get('planSearchDiv').style.display = opcina ? 'block' : 'none';
                    if (opcina) {
                        planMap.zoomToExtent(opcinaBounds);
                    }
                    else {
                        planMap.zoomToMaxExtent();
                    }
                    var layer = planMap.getLayer(mapList['planLayerId']).redraw(true);
                    popupPlan();
                }
                break;
            default:
                if (debug) alert("no data");
        }
    }
}

function zoomPlan() {
    PopupFrame.ZoomToView(6573500, 4999000, 700000);
}

function writeDebug(text) {
    if (debug) {
        $get("divDebug").innerHTML = text;
    }
}

function onLoad() {
    loadPlans("divPlanoviZupanija", "10", false);
    //setTimeout("ViewerFrame.GetMapFrame().minInfoWidth = 150;", 3000);
}

function getStats2() {
    var opcina = $get(opcinaId);

    if (opcina) {
        loadReportFrame("Statistika.aspx?v=" + opcina.value);
    }
}

function getStats(mb) {
    //makeRequest("Statistika.aspx?v=" + mb, "GET", 3000, null, gotStats);
    $get("divStatistika").innerHTML = '<a href="javascript:showStats()">Statistika</a>';
}

function showStats() {
    StatsFrame.location.href = "design/Statistika.aspx?v=" + $get(elementIds.ddOpcina).value;
    $find('mpeStats').show();
}

function gotStats(executor, eventArgs) {
    if (executor.get_responseAvailable()) {
        if (executor.get_statusCode() == 200) {
            writeDebug(executor);
            var s = executor.get_responseData();
            var reg = /<table[^.]*table>/g;
            var a = s.match(reg);
            $get("divStatistika").innerHTML = a;
        }
        else {
            if (debug) alert("no data");
        }
    }
}

function showStatsMap(statsName) {
    StatsControlFrame.location.href = "Statistika/Statistika.aspx?s=" + statsName;
    $find('mpeStatsMap').show();
    //StatsFrame.location.href = "/mapguide/mapviewerajax/?SESSION=" + sessionId + "&WEBLAYOUT=Library%3a%2f%2fVukovarsko-srijemska+zupanija%2fStatistika%2fLayouts%2fStatistika.WebLayout&LOCALE=hr";
}

function findParcel(koId, kcId, mapId) {
    //alert(koId + " - " + kcId);
    var ko = $get(koId).value;
    var kc = $get(kcId).value;
    //alert(ko + " - " + kc);
    makeRequest("TraziParcelu.aspx?o=" + ko + "&b=" + kc, "GET", 1000, mapId, gotParcel);
}

function gotParcel(executor, eventArgs) {
    if (executor.get_responseAvailable()) {
        if (executor.get_statusCode() == 200) {
            writeDebug(executor);
            var s = executor.get_responseData();
            var b = eval('(' + s + ')');
            var i = executor.get_webRequest().get_userContext();
            if (i == 'mainMap') {
                mapList[i].zoomToExtent(b.extent);
            }
            else {
                var map = mapList[i];
                map.setCenter(b.center, 5);
                var markersLayer = mapList['planMarkers'];
                var icon = mapList['icon'];
                markersLayer.removeMarker(markersLayer.markers[0]);
                markersLayer.addMarker(new OpenLayers.Marker(b.center, icon.clone()));
            }
        }
        else {
            if (debug) alert("no data");
        }
    }
}

function findAddress() {
    var naselje = $get(elementIds.ddNaselje).value;
    var ulica = $get(elementIds.tbUlica).value;
    var kbr = $get(elementIds.tbKbr).value;
    var url = "TraziAdresu.aspx?n=" + escape(naselje) + "&u=" + escape(ulica) + "&b=" + escape(kbr);
    //alert(url);
    makeRequest(url, "GET", 2000, null, gotAddress);
}

function gotAddress(executor, eventArgs) {
    if (executor.get_responseAvailable()) {
        if (executor.get_statusCode() == 200) {
            writeDebug(executor);
            var s = executor.get_responseData();
            var b = eval('(' + s + ')');
            if (b.error) {
                alert("Adresa nije pronađena");
            }
            else {
                mainMap.setCenter(b, 9);
            }
        }
    }
}

var redrawTimeout;

function toggleLayer(layerName) {
    clearTimeout(redrawTimeout);
    var layerInfo = mainMapLayers[layerName];
    layerInfo.visible = !layerInfo.visible;
    redrawTimeout = setTimeout("redrawLayer();", 1000);
}

function redrawLayer() {
    var showLayers = '';
    var hideLayers = '';
    var showGroups = '';
    var hideGroups = '';
    for (var i in mainMapLayers) {
        var layerInfo = mainMapLayers[i];
        if (layerInfo.visible) {
            if (layerInfo.type == 'layer') {
                showLayers += layerInfo.guid + ',';
            }
            else {
                showGroups += layerInfo.guid + ',';
            }
        }
        else {
            if (layerInfo.type == 'layer') {
                hideLayers += layerInfo.guid + ',';
            }
            else {
                hideGroups += layerInfo.guid + ',';
            }
        }
    }
    layer = mapList['mainMapLayer'];
    layer.params.showLayers = showLayers;
    layer.params.hideLayers = hideLayers;
    layer.params.showGroups = showGroups;
    layer.params.hideGroups = hideGroups;
    layer.redraw(true);
}

function createIcon() {
    var size = new OpenLayers.Size(10, 17);
    var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);
    var icon = new OpenLayers.Icon('img/marker-green.png', size, offset);
    mapList['icon'] = icon;
}
