﻿//<![CDATA[

var map;
var roadworkIcon;
var incidentIcon;
var markerOptions;
var roadworksAndIncidents;
var roadworkMarkers;
var incidentMarkers;

function zoom(lat, lng, xmlFile) {
    //map.closeInfoWindow();
    map.setCenter(new GLatLng(lat, lng), 15);
    //map.setMapType(G_HYBRID_MAP);

    // Parse XML file
    if (xmlFile != null)
        GDownloadUrl(xmlFile + "?a=" + Math.random(), function(data, responseCode) {
            if(responseCode == 200) {
                var xml = GXml.parse(data);

                // Draw polylines
                var polylines = xml.documentElement.getElementsByTagName("polyline");            
                for (var i = 0; i < polylines.length; i++)
                    drawPolyline(polylines[i]);
                
                // Draw signs
                var signs = xml.documentElement.getElementsByTagName("sign");
                for (var i = 0; i < signs.length; i++)
                    drawSign(signs[i]);
                manager.refresh();
            }    
        });
}

function drawSign(sign)
{
    icon = new GIcon();
    if (sign.getAttribute("type") == "speed40")
        icon.image="Images/nop40.png";
    if (sign.getAttribute("type") == "speed60")
        icon.image="Images/nop60.png";
    icon.iconSize = new GSize(46, 46);
    icon.iconAnchor = new GPoint(23, 23);
    icon.infoWindowAnchor = new GPoint(23, 23);
    icon.shadow = "Images/varjo_pyorea.png";
    icon.shadowSize = new GSize(65, 46);

    //manager.addMarker(new GMarker(new GLatLng(sign.getAttribute("lat"), sign.getAttribute("lng")), icon), 14, 18);
}

function drawPolyline(polyline)
{
    var pointArray = new Array();    
    for (var i = 0; i < polyline.childNodes.length; i++)
        if (polyline.childNodes[i].tagName == "point")
        {
            var lat = polyline.childNodes[i].getAttribute("lat");
            var lng = polyline.childNodes[i].getAttribute("lng");
            pointArray[pointArray.length] = new GLatLng(lat, lng);
        }
    map.addOverlay(new GPolyline(pointArray, polyline.getAttribute("color"), polyline.getAttribute("weight"), polyline.getAttribute("opacity")));
}

function goToMainLevel()
{
    map.closeInfoWindow();
    map.setCenter(new GLatLng(60.41, 24.63), 8);
    map.setMapType(G_NORMAL_MAP);
}

function onGetRoadworksAndIncidentsSucceeded(result)
{
    roadworksAndIncidents = result;    
    updateRoadworks();
}

function updateRoadworks()
{
    // RoadworksIcon
    roadworkIcon = new GIcon();
    roadworkIcon.image = "Images/tietyo3.png";
    roadworkIcon.iconSize = new GSize(26, 23);
    roadworkIcon.iconAnchor = new GPoint(13, 16);
    roadworkIcon.infoWindowAnchor = new GPoint(13, 16);
    roadworkIcon.shadow = "Images/varjo2.png";
    roadworkIcon.shadowSize = new GSize(39, 23);
    // IncidentIcon
    incidentIcon = new GIcon();
    incidentIcon.image = "Images/muu_vaara2.png";
    incidentIcon.iconSize = new GSize(26, 23);
    incidentIcon.iconAnchor = new GPoint(13, 16);
    incidentIcon.infoWindowAnchor = new GPoint(13, 16);
    incidentIcon.shadow = "Images/varjo2.png";
    incidentIcon.shadowSize = new GSize(39, 23);
    
    roadworkMarkers = new Array();
    incidentMarkers = new Array();
    
    for (var i=0; i<roadworksAndIncidents.length; i++)
    {        
        var point = new GLatLng(roadworksAndIncidents[i].lat, roadworksAndIncidents[i].lng);
        if(roadworksAndIncidents[i].type == "roadwork")
        {
            markerOptions = {icon:roadworkIcon, title:roadworksAndIncidents[i].title};
            roadworkMarkers[roadworkMarkers.length] = new GMarker(point, markerOptions);
        }
        else
        {
            markerOptions = {icon:incidentIcon, title:roadworksAndIncidents[i].title};
            incidentMarkers[incidentMarkers.length] = new GMarker(point, markerOptions);
        }            
    }
    updateMarkerVisibility();
}

function updateMarkerVisibility()
{
    if (roadworkMarkers != null)
        for (var i=0; i<roadworkMarkers.length; i++)
        {
            map.removeOverlay(roadworkMarkers[i]);
            if (document.getElementById("CheckboxRoadworks").checked)
                map.addOverlay(roadworkMarkers[i]);
        }
    if (incidentMarkers != null)
        for (var i=0; i<incidentMarkers.length; i++)
        {
            map.removeOverlay(incidentMarkers[i]);
            if (document.getElementById("CheckboxIncidents").checked)
                map.addOverlay(incidentMarkers[i]);
        }
}

function load() {
    if (GBrowserIsCompatible()) {  
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new BackControl());

        goToMainLevel();
        
        // Add the U-piiri bounds
        map.addOverlay(new GPolyline.fromEncoded({
          color: "#0000ff",
          weight: 4,
          opacity: 0.5,
          points: "seoqJoe|zCxkBu~MeaFc|_@v@_v@xKqkIouBshNyJaBnyE_kBtGe^ir@qnUhrDw}LycD}}RycEewAhk@wxHfcBa}F`vIw{Ghf\\meEb}Adc[jdKshE_K~dDri@fdBja@f`@~yExj@jd@dz@buCj|CuF`vBwx@ngBm_EdpDyhAfnEqnF|fN_{BnbFeWbhCpmBxpA|uDisE|{BgoDdaF{oCxmE{{I`sAkS`j@taAbRb~FspAbsGnj@ltBxuCqzA`dBvKbj@naAn@b`E^`}@s{Ctu@ygCvkA{w@t|Dja@trA|dBjm@jsByiBhhEukA`Y~_@bHntAmcC|~Db@rgCjYzaAdwB|eE|ItzE{hAjjCmqBteHgdCdnCaeClx@waAvu@y_@fuAmEdhCzYvcBrBp`H~kAn_AhrDv_@pfAhnAnVpn@nRnd@b[bu@pWr{A`Ij}Ao@l_G{]|{D`C|_HzZdhDjz@~kPlb@teCbnBjtAzdEtwCfi@v~A|A~hD}\\r}Epa@r`AzgEkpAdlA`~@v~AbsD|IheCc_@hgBc}BrG{y@nBaOrr@zsCxvHd[hvCrKnjF_hBftFo_@xeAuCxy@kA|WzBtkE|n@zzG|tB|nL|J~gDo`A|hBao@xhBllAv~Ax_A}NntA{TlvCjZviD`_G`iDjrFnmG|_LdsBndH|JfuCmp@jv@wq@{KgrEcbKia@_^cz@eJqw@fzBxArtBndCftHvJjgDa_@`t@qsAzFaoCy_CmaAmIyTd{@Tva@`CryAb`Ar|E~IbcBvJ|s@xEz]rhAnuFtd@ddDvSnwDlEr~QrG~oIr`Bz`OztCv~Px~@|rD|QfmB|u@teCzMbyEeSvkEgBbxD`Ztn@fr@n[rkCcbBfj@|k@pl@~pB`QzmI_SnkE|WzhGbQlo@xY|mIijAdvH_}@rnDpEryE`v@~oCfJpcBnb@hl@jmClyAhe@tVf|A~T`nC`{FvqA~_Flg@buE|IpmIp@|}Hxb@zyHte@|pC`pApxK}GjkFkrCnhCcaBkzCsx@wrEguBgyNexAowKspA_oDk_Bgq@o_@mPy}F_s@qsBho@ww@~iAa^|eAt[jqBz~AnxAhq@aFr`EaWzr@fk@lu@~mBFrlGvFbjFfGzzFenAbpC_`BraC_aBbnEwyCfHidAuz@xBmrC}TepG`nA}_FgF{yE_k@}|@oiFd_AcmAwiAmlIe}BaOpFgCugLgDohQygL{aSl}AspKbViaB}|Gss\\`qBkiU_|@fEutPvv@m_@hBkgDawOqzIkhCqs@ouFaQs@cyIid@wmAhdMwyGz]a{Aua_@qvOq`HslDtpEi`CghBep@{f@|`AarVl`Bupa@xaG}dH}yCqsNxcAu_JpmEegEaNklC_bBmu[mFmgAmhIh~AaoCarE~CuaAhu@ypSq|BaiWgwB}u[vrBqvPw_KybO_yAjtMumLg}Iow@eiJ|_Da~I|uEcaG~n@wuFmaH_iSoe@|Ph}AiwIfyP_uD",
          levels: "P?KFILEIJKJMIJIKLKJHIMJGIKHJIKILIJKJLHIIJHIKGIGIJKGIJKGHILGMHIJKIHJHILHJHIFHKGIJIKLMIJHIKGNHIJHIJGJKIJGHELIJKHIHIHJLMJKHHIJGHKHJHIHJHGFIKGHFLHIKINJOHIJHIKGIJHJHLGIJKHIJGIJMIJIKILHJIKIJKJIHKLIHJHIGJHIKIJHJLIJHIJKGJHLFIKMJGKLHKGJMIFKJJLNIJGKLJJKJHMGJKGJLKNKJLIJKIOGIP",
          zoomFactor: 2,
          numLevels: 18
        }));
       
        ParseXML.GetRoadworksAndIncidents(onGetRoadworksAndIncidentsSucceeded);

        // Add onclick event for markers
        GEvent.addListener(map, "click", function(marker) {
            if (marker != null && marker.openInfoWindow != null)
            {
                var html = "<html>Tietoa ei löytynyt</html>";
                for (var i=0; i<roadworksAndIncidents.length; i++)
                {
                    if (marker.getPoint().lat() == roadworksAndIncidents[i].lat && 
                        marker.getPoint().lng() == roadworksAndIncidents[i].lng)
                        {
                            html = roadworksAndIncidents[i].html;
                            break;
                        }
                }
                marker.openInfoWindowHtml(html);
            }
        });
        
        // Initialize new signs array and load signs from files
        signs = new Signs();
        signs.loadFromFile();              
    }
}

//]]>