﻿var Karttricket = null;
var KarttricketAdmin = null;

$(window).load(function() {
    if(document.getElementById('mapDiv') == null) return;

    $("#zoomRectButtonDiv").toggle(setZoomRect, cancelZoomRect);
    $("#rulerDiv").toggle(setMeasure, cancelMeasure);
    $("#Close").click(cancelMeasure);
    $("#DeleteOne").hover(
        function() {
            $("#DeleteOne").css("cursor", "pointer");
        },
        function() {
            $("#DeleteOne").css("cursor", "default");
        });
    $("#DeleteAll").hover(
        function() {
            $("#DeleteAll").css("cursor", "pointer");
        },
        function() {
            $("#DeleteAll").css("cursor", "default");
        });
        
    $("#DeleteOne").click(
        function() {
            Karttricket.DeleteLastRoutePoint();
        });
        
    $("#DeleteAll").click(
        function() {
            Karttricket.DeleteAllRoutePoints();
        });

    $("#mapDiv").dblclick(function() {
        Karttricket.RWC.setMapCenter(Karttricket.RWC.clickPoint.x, Karttricket.RWC.clickPoint.y);
        Karttricket.RWC.zoomIn(); 
    });

    this.ktUserInit = associateObjWithCallback(this, this.ktUserInit);
    this.setSaveObjectState = associateObjWithCallback(this, this.setSaveObjectState);
    Karttricket = new KarttricketRWC('/', 'Dcw.View0', 'mapDiv', RWCCustomConfiguration, 'kt', 'abe19610-0847-446f-886c-6328ef6e91eb', 9, ktUserInit, '/', 'se');
});

function ktUserInit(KarttricketObject) {


    KarttricketAdmin = new KarttricketRWCAdmin(Karttricket, document.getElementById('mapDiv'), document.getElementById('mapOutputDiv'), '/Dialoger/', 'se');
    KarttricketAdmin.OnOutputSet = function() { document.getElementById('mapOutputDiv').style.visibility = 'visible'; };
    KarttricketAdmin.OnOutputCleared = function() { document.getElementById('mapOutputDiv').style.visibility = 'hidden'; };

    if(mapState != 'undefined') {
        if(mapState.ObjectId != null && mapState.ObjectId > 0) {
            Karttricket.LoadAndCenterOnObject(mapState.ObjectId);
        }
        else {
            Karttricket.RWC.setMapCenter(mapState.CenterY, mapState.CenterX);
        }
        if(mapState.Scale == 0) mapState.Scale = 8000;
        Karttricket.RWC.setScale(mapState.Scale);
        
        if(mapState.BoundaryX1 != null && mapState.BoundaryX1 != 0) {
            Karttricket.RWC.config.viewSettings.borders.geoRect = new GeoRectangle(mapState.BoundaryY2, mapState.BoundaryX1, mapState.BoundaryY1, mapState.BoundaryX2);
            Karttricket.RWC.config.viewSettings.borders.active = true;
        }
        
        if(mapState.ViewId > 0)
            Karttricket.LoadView(mapState.ViewId);
        if(mapState.RouteId > 0)
            Karttricket.LoadRoute(mapState.ViewId);
    }
}

function zoomIn() {
    Karttricket.RWC.zoomIn();
}
function zoomOut() {
    Karttricket.RWC.zoomOut();
}

var magnifier = false;
function _toggleMagnifier() {
    var elm = document.getElementById('magnifyImg');

    if(magnifier) {
        magnifier = false;
        elm.src = 'images/Icons/Magnify_off.gif';
        
    }
    else {
        magnifier = true;
        elm.src = 'images/Icons/Magnify_on.gif';
    }
}

function printMap(w, h) {
    window.open('PrintMap.aspx' + Karttricket.GetPrintHandlerQueryString(w, h, null, null));
}

function toggleMagnifier()
{
    var elm = document.getElementById('magnifyImg');
    if (!Karttricket.RWC.lookingGlass)
    {
        elm.src = 'images/Icons/Magnify_on.gif';
        $("#magnifierDiv").attr("class", "iconDivHover");
	    
        if (Karttricket.RWC.config.GUI.lookingGlass.alternateView)
            var lgview=Karttricket.RWC.config.GUI.lookingGlass.alternateView;
        else
            var lgview=Karttricket.RWC.viewName;
	            
        try{
            var scaleValue=parseFloat(Karttricket.RWC.config.GUI.lookingGlass.scaleValue);
        }
        catch(e){
            var scaleValue=0.1;
        }
	            
        Karttricket.RWC.lookingGlassId=Karttricket.RWC.linkedMapArray.length;
	            
        Karttricket.RWC.createLookingGlass(-500,-500,Karttricket.RWC.config.GUI.lookingGlass.model,scaleValue,lgview);
        Karttricket.RWC.mouseMoveLookingGlassDelegate=associateObjWithEvent(Karttricket.RWC, "lookingGlassMouseMove");
        Evt.addEventListener(document, "mousemove", Karttricket.RWC.mouseMoveLookingGlassDelegate);
    }
    else
    {
	    var mg = document.getElementById("magnifyingGlass");
        elm.src = 'images/Icons/Magnify_off.gif';
        $("#magnifierDiv").attr("class", "iconDiv");
        
        Evt.removeEventListener(document, "mousemove", Karttricket.RWC.mouseMoveLookingGlassDelegate);
        Karttricket.RWC.lookingGlass.map.unload();
        Karttricket.RWC.lookingGlassContainer.parentNode.removeChild(Karttricket.RWC.lookingGlassContainer);
        Karttricket.RWC.lookingGlass=null;
        Karttricket.RWC.linkedMapArray = Karttricket.RWC.linkedMapArray.slice(0,Karttricket.RWC.lookingGlassId).concat( Karttricket.RWC.linkedMapArray.slice(Karttricket.RWC.lookingGlassId+1) );
    }
}

function setZoomRect() {
    Karttricket.RWC.setDragTool("zoom", false);
    Karttricket.RWC.registerOnNewGeoRectEventHandler(cancelZoomRect);
    $("#zoomRectButtonDiv").attr("class", "iconDivHover");
}
function cancelZoomRect() {
    Karttricket.RWC.onNewGeoRectEventHandlers.pop();
    Karttricket.RWC.setDragTool("drag", true);
    $("#zoomRectButtonDiv").attr("class", "iconDiv");
}

function setMeasure() {
    Karttricket.SetClickTool("measureDistance");
    $("#rulerDiv").attr("class", "iconDivHover");
    $("#TotalDistance").text("0 m");
    $("#DistanceDialog").slideDown("fast");
    Karttricket.OnDistanceChanged = function(d) {
        $("#TotalDistance").text(Math.floor(d).toString() + " m");
    };
}

function cancelMeasure() {
    $("#DistanceDialog").slideUp("fast");
    $("#rulerDiv").attr("class", "iconDiv");
    Karttricket.SetClickTool("getPosition");
    Karttricket.OnDistanceChanged = null;
}

